diff --git a/hub/advanced-settings/fe-version-control.md b/hub/advanced-settings/fe-version-control.md deleted file mode 100644 index 2992e2f5ac..0000000000 --- a/hub/advanced-settings/fe-version-control.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: File Explorer Version Control Integration (PREVIEW) -description: Learn how to use File Explorer + version control integration inside Windows Advanced settings. -ms.reviewer: cinnamon -ms.topic: article -ms.date: 04/11/2025 ---- - -# File Explorer version control integration (PREVIEW) - -**File Explorer version control integration** provides version control information directly in File Explorer. This includes information such as the branch name, last commit author, last commit message, and more. - -> [!NOTE] -> As of right now, File Explorer version control integration only supports Git. The Advanced Settings system component is extensible to allow for additional version control types. - -![File Explorer version control integration](../images/fe-source.png) - -## Prerequisites - -File Explorer version control integration is available in the [Windows Beta channel](https://aka.ms/BetaLatest). See [Get started with the Windows Insider Program](/windows-insider/get-started) for more information about joining the program and selecting a channel. After you've joined the Beta channel, you can ([check for Windows updates](ms-settings:windowsupdate)). - -## How to identify repositories - -Windows has to know which folders are source code repositories so File Explorer can display the version control information. You can select your repository folders in Windows Advanced Settings > File Explorer settings under the File Explorer + version control header. - -![File Explorer version control Settings](../images/fe-source-settings.png) diff --git a/hub/advanced-settings/index.md b/hub/advanced-settings/index.md deleted file mode 100644 index d39d931df0..0000000000 --- a/hub/advanced-settings/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Advanced Windows Settings (PREVIEW) -description: Learn about the settings provided in the Advanced page of Windows settings. -ms.reviewer: cinnamon -ms.topic: article -ms.date: 04/10/2025 ---- - -# Advanced Windows Settings (PREVIEW) - -**Advanced Windows settings** is a redesign of the original **For Developers** page in Windows settings with additional settings to help you be more productive. - -## Prerequisites - -Advanced settings is available in the [Windows Beta channel](https://aka.ms/BetaLatest). See [Get started with the Windows Insider Program](/windows-insider/get-started) for more information about joining the program and selecting a channel. After you've joined the Beta channel, you can ([check for Windows updates](ms-settings:windowsupdate)). - -## FAQ - -### Why was For Developers renamed to Advanced? - -Most of the settings available within the For Developers page are useful for other advanced Windows users as well. In order to help all users discover these settings, the page was redesigned and renamed to Advanced. - -## Windows Advanced Settings system component open source repository - -To provide enhanced functionality to the Advanced settings page, there is an open-source system component that enables features like [File Explorer version control integration](fe-version-control.md). We welcome your contributions and feedback, and the source code for the Windows Advanced Settings system component is available on [GitHub](https://github.com/microsoft/windowsAdvancedSettings). diff --git a/hub/advanced-settings/sudo/index.md b/hub/advanced-settings/sudo/index.md deleted file mode 100644 index adbed9966d..0000000000 --- a/hub/advanced-settings/sudo/index.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Sudo for Windows -description: Learn how to use sudo in your command line to run elevated commands (as an administrator) directly from an unelevated console session on Windows. -ms.reviewer: jordiadoumie -ms.topic: article -ms.date: 11/21/2024 -no-loc: [Gerardo Grignoli] ---- - -# Sudo for Windows - -**Sudo for Windows** is a new way for users to run elevated commands (as an administrator) directly from an unelevated console session on Windows. - -[Read the announcement](https://devblogs.microsoft.com/commandline/introducing-sudo-for-windows/), which includes a demo video and deep-dive into how Sudo for Windows works. - -## Prerequisites - -The Sudo for Windows command is available in [Windows 11, version 24H2](https://support.microsoft.com/topic/windows-11-version-24h2-update-history-0929c747-1815-4543-8461-0160d16f15e5) or higher. ([Check for Windows updates](ms-settings:windowsupdate)). - -> [!NOTE] -> Sudo for Windows is not yet available for Windows 10, but may be in the future. - -## How to enable Sudo for Windows - -To enable Sudo for Windows, open `Settings > System > For Developers` and set **Enable sudo** to **On**. - -![Enable Sudo](../../images/sudo-enable.png) - ->[!WARNING] -> Sudo for Windows can be used as a potential escalation of privilege vector when enabled in certain configurations. You should make sure to be aware of the [security considerations](#security-considerations) when enabling the sudo command on your machine. - -## How to configure Sudo for Windows - -Sudo for Windows currently supports three different configuration options. The configuration can be set from the `Settings > For Developers` menu or programmatically, using the command line. The configuration options include: - -- **In a new window** (`forceNewWindow`): The `forceNewWindow` configuration option is the default configuration option for Sudo for Windows. Use `sudo` in this configuration to run the command in a new window. This is similar to the behavior of the `runas /user:admin` command. - -- **Input closed** (`disableInput`): The `disableInput` configuration option will run the elevated process in the current window, but with the input handle closed. This means that the elevated process will not be able to receive input from the current console window. This is useful for scenarios where you want to run a command as an administrator, but do not want to allow the command to receive input from the current console window. This configuration option provides some of the convenience of the `inline` configuration option while mitigating some of the associated [security risks](#security-considerations). - -- **Inline** (`normal`): The `normal` configuration option is most similar to how sudo behaves on other operating systems. This configuration will run the elevated process in the current window and the process will be able to receive input from the current console session. This is useful for scenarios where you want to run a command as an administrator and want to allow the command to receive input from the current console window. This configuration option provides the most convenience, but you should only choose this option if you are familiar with the associated [security risks](#security-considerations). - -You can select among these configurations from the `Settings > For Developers` menu or change the configuration programmatically, in an elevated command line (admin console), using: - -- `sudo config --enable ` - -Update `` to either `forceNewWindow`, `disableInput`, or `normal`. - -## How to use Sudo for Windows - -To use Sudo for Windows, simply prepend `sudo` to the command you want to run as an administrator. For example, to run `netstat -ab` as an administrator, you would run `sudo netstat -ab` in your console window. - -Because `sudo` elevates the targeted process to run with administrator-level permission, a prompt will open asking you to verify that you want to continue. - -## Security Considerations - -There are risks associated with running sudo in the **Input closed** (`inputClosed`) or **Inline** (`normal`) configurations. It is possible for malicious processes to attempt to drive the elevated process using the connection established by the unelevated sudo.exe and the elevated sudo.exe process. - -The `inputClosed` configuration option mitigates risk by closing the input handle. Disconnecting the input handle from the current console window means that unelevated processes cannot send input to the elevated process. - -The `inline` configuration option runs the elevated process in the current window and the process is able to receive input from the current console session. An unelevated process can send input to the elevated process within the same console windows or get information from the output in the current windows in this configuration. - -## FAQ - -### How is Sudo for Windows different from the existing `runas` command? - - The `sudo` command offers a way to quickly elevate a command as administrator from your current unelevated command line context and is familiar to some users coming from other operating systems. The `runas` command offers a way to run programs as any user, including administrator if you so choose. At this point in time, the `sudo` command on Windows does not support running programs as other users. Other key differences between `sudo` and `runas` include: - -- `runas` allows you to run programs as other users, including but not limited to as administrator. This functionality is on the roadmap for the sudo command, but does not yet exist. - -- `sudo` allows you to quickly elevate a process (as administrator): - - You can choose to do so in a new window, which resembles the `runas` administrator flow. - - You can choose to connect the elevated process to the current console window with the `disableInput` and `normal` configuration options. This is not supported with `runas`. - -- `runas` can prompt users for a password in the command-line. - -- `sudo` can only be elevated via the User Account Control (UAC) security feature designed to protect the operating system from unauthorized changes using verification prompt. - -You should consider your particular use-case and plan to use the command that best meets your needs. You should also consider the security implications of running sudo in the `inputClosed` and `normal` modes. The default `forceNewWindow` configuration option is recommended unless you are familiar and comfortable with the risks associated with the other `sudo` configurations. - -## Sudo for Windows open source repository - -Sudo for Windows is open source and welcomes your contributions and feedback. You can find the source code for Sudo for Windows on [GitHub](https://github.com/microsoft/sudo). - -## Additional functionality - -If you’re looking for additional functionality that Sudo for Windows does not provide, check out [gsudo by Gerardo Grignoli](https://github.com/gerardog/gsudo) which has a number of additional features and configuration options or check out other solutions from the community. diff --git a/hub/android/emulator.md b/hub/android/emulator.md deleted file mode 100644 index 21739d2ed9..0000000000 --- a/hub/android/emulator.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Test on an Android device or emulator -description: Test your app on an Android device or emulator from Windows and enable virtualization with hyper-v and Windows Hypervisor Platform (WHPX). -ms.topic: how-to -keywords: android, windows, emulator, virtual device, device setup, enable device, developer, configuration, virtualization, visual studio, hyper-v, intel, haxm, amd, Windows Hypervisor Platform, WHPX -ms.date: 04/28/2020 ---- - -# Test on an Android device or emulator - -There are several ways to test and debug your Android application using a real device or emulator on your Windows machine. We have outlined a few recommendations in this guide. - -## Run on a real Android device - -To run your app on a real Android device, you will first need to enable your Android device for development. Developer options on Android have been hidden by default since version 4.2 and enabling them can vary based on the Android version. - -### Enable your device for development - -For a device running a recent version of Android 9.0+: - -1. Connect your device to your Windows development machine with a USB cable. You may receive a notification to install a USB driver. -2. Open the **Settings** screen on your Android device. -3. Select **About phone**. -4. Scroll to the bottom and tap **Build number** seven times, until **You are now a developer!** is visible. -5. Return to the previous screen, select **System**. -6. Select **Advanced**, scroll to the bottom, and tap **Developer options**. -7. In the **Developer options** window, scroll down to find and enable **USB debugging**. - -### Run your app on the device - -1. In the Android Studio toolbar, select your app from the **run configurations** drop-down menu. - - ![Android Studio Run Configuration menu](../images/android-run-config-menu.png) - -2. From the **target device** drop-down menu, select the device that you want to run your app on. - - ![Android Studio Target Device menu](../images/android-target-device-menu.png) - -3. Select Run ▷. This will launch the app on your connected device. - -## Run your app on a virtual Android device using an emulator - -The first thing to know about running an Android emulator on your Windows machine is that regardless of your IDE (Android Studio, Visual Studio, etc), emulator performance is vastly improved by enabling virtualization support. - -### Enable virtualization support - -Before creating a virtual device with the Android emulator, it is recommended that you enable virtualization by turning on the Hyper-V and Windows Hypervisor Platform (WHPX) features. This will allow your computer's processor to significantly improve the execution speed of the emulator. - -> To run Hyper-V and Windows Hypervisor Platform, your computer must: -> -> * Have 4GB of memory available -> * Have a 64-bit Intel processor or AMD Ryzen CPU with Second Level Address Translation (SLAT) -> * Be running Windows 10 build 1803+ ([Check your build #](ms-settings:about)) -> * Have updated graphics drivers (Device Manager > Display adapters > Update driver) -> -> If your machine doesn't fit this criteria, you may be able to run [Intel HAXM](https://github.com/intel/haxm/wiki/Installation-Instructions-on-Windows) or [AMD Hypervisor](https://github.com/google/android-emulator-hypervisor-driver-for-amd-processors). For more info, see the [Android Studio Emulator documentation](https://developer.android.com/studio/run/emulator). - -1. Verify that your computer hardware and software is compatible with Hyper-V by opening a command prompt and entering the command: `systeminfo` - - ![Hyper-V requirements from systeminfo in command prompt](../images/systeminfo.png) - -2. In the Windows search box (lower left), enter "windows features". Select **Turn Windows features on or off** from the search results. - -3. Once the **Windows Features** list appears, scroll to find **Hyper-V** (includes both Management Tools and Platform) and **Windows Hypervisor Platform**, ensure that the box is checked to enable both, then select **OK**. - -4. Restart your computer when prompted. - -### Emulator for native development with Android Studio - -When building and testing a native Android app, we recommend [using Android Studio](./native-android.md). Once your app is ready for testing, you can build and run your app by: - -1. In the Android Studio toolbar, select your app from the **run configurations** drop-down menu. - - ![Android Studio Run Configuration menu](../images/android-run-config-menu.png) - -2. From the **target device** drop-down menu, select the device that you want to run your app on. - - ![Android Studio Target Device menu](../images/android-target-device-menu.png) - -3. Select Run ▷. This will launch the [Android Emulator](https://developer.android.com/studio/run/emulator). - -> [!TIP] -> Once your app is installed on the emulator device, you can use `Apply Changes` to deploy certain code and resource changes without building a new APK. See the [Android developer guide](https://developer.android.com/studio/run#apply-changes) for more information. - -### Emulator for cross-platform development with Visual Studio - -There are many [Android emulator options](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) available for Windows PCs. We recommend using the Google [Android emulator](https://developer.android.com/studio/run/emulator), as it offers access to the latest Android OS images and Google Play services. - -### Android emulator with Visual Studio - -Learn more about using the latest version of [Visual Studio for Android Development](https://visualstudio.microsoft.com/vs/android/). Open the [latest version of Visual Studio](https://visualstudio.microsoft.com/downloads/), create a new C++ Android project, set the platform configuration, run the project, and the default Android Emulator will appear. It is recommended to use the [.NET Multi-platform App UI (MAUI)](/dotnet/maui/) development workload. You may need to use the Visual Studio Installer to [Modify your workloads](/visualstudio/install/modify-visual-studio#modify-workloads). diff --git a/hub/android/native-android.md b/hub/android/native-android.md deleted file mode 100644 index 0fa0b4a359..0000000000 --- a/hub/android/native-android.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Native Android development on Windows -description: A step-by-step guide on how to get started developing Android native apps on Windows. -ms.topic: get-started -ms.date: 11/21/2024 ---- - -# Get started with native Android development on Windows - -This guide will get you started using Windows to create native Android applications. If you would prefer a cross-platform solution, see [Overview of Android development on Windows](./overview.md) for a brief summary of some options. - -The most straight-forward way to create a native Android app is using Android Studio with either [Java or Kotlin](#java-or-kotlin), though it is also possible to [use C or C++ for Android development](#use-c-or-c-for-android-game-development) if you have a specific purpose. The Android Studio SDK tools compile your code, data, and resource files into an archive Android package, .apk file. One APK file contains all the contents of an Android app and is the file that Android-powered devices use to install the app. - -## Install Android Studio - -Android Studio is the official integrated development environment for Google's Android operating system. [Download the latest version of Android Studio for Windows](https://developer.android.com/studio). - -- If you downloaded an .exe file (recommended), double-click to launch it. -- If you downloaded a .zip file, unpack the ZIP, copy the android-studio folder into your Program Files folder, and then open the android-studio > bin folder and launch studio64.exe (for 64-bit machines) or studio.exe (for 32-bit machines). - -Follow the setup wizard in Android Studio and install any SDK packages that it recommends. As new tools and other APIs become available, Android Studio will notify you with a pop-up, or check for updates by selecting **Help** > **Check for Update**. - -## Create a new project - -Select **File** > **New** > **New Project**. - -In the **Choose your project** window, you will be able to choose between these templates: - -- **Basic Activity**: Creates a simple app with an app bar, a floating action button and two layout files: one for the activity and one to separate out text content. - -- **Empty Activity**: Creates an empty activity and a single layout file with sample text content. - -- **Bottom Navigation Activity**: Creates a standard bottom navigation bar for an activity. For more information on this, see the Bottom Navigation Component section of the [Material Design guidelines](https://material.io/guidelines/components/bottom-navigation.html) by Google. - -- Templates are commonly used to add activities to new and existing app modules. For example, to create a login screen for your app's users, add an activity with the Login Activity template. To learn more about selecting an activity and how to add code from a template, see [Android Developer guide](https://developer.android.com/studio/projects/templates#SelectTemplate) by Google. - -> [!NOTE] -> The Android operating system is based on the idea of **components** and uses the terms **activity** and **intent** to define interactions. An **activity** represents a single, focused task that a user can do. An **activity** provides a window for building the user interface using classes based on the **View** class. There is a lifecycle for **activities** in the Android operating system, defined by six callbacks: `onCreate()`, `onStart()`, `onResume()`, `onPause()`, `onStop()`, and `onDestroy()`. The activity components interact with one another using **intent** objects. Intent either defines the activity to start or describes the type of action to perform (and the system selects the appropriate activity for you, which can even be from a different application). Learn more about Activities, the Activity Lifecycle, and Intents in the [Android Developer guide](https://developer.android.com/reference/android/app/Activity) by Google. - -### Java or Kotlin - -**Java** became a language in 1991, developed by what was then Sun Microsystems, but which is now owned by Oracle. It has become one of the most popular and powerful programming languages with one of the largest support communities in the world. Java is class-based and object-oriented, designed to have as few implementation dependencies as possible. The syntax is similar to C and C++, but it has fewer low-level facilities than either of them. - -**Kotlin** was first announced as a new open-source language by JetBrains in 2011 and has been included as an alternative to Java in Android Studio since 2017. In May 2019, Google announced Kotlin as it's preferred language for Android app developers, so despite being a newer language, it also has a strong support community and has been identified as one of the fastest growing programming languages. Kotlin is cross-platform, statically typed, and designed to interoperate fully with Java. - -Java is more widely used for a broader range of applications and offers some features that Kotlin does not, such as checked exceptions, primitive types that are not classes, static members, non-private fields, wildcard-types, and ternary-operators. Kotlin is specifically designed for and recommended by Android. It also offers some features that Java does not, such as null references controlled by the type system, no raw types, invariant arrays, proper function types (as opposed to Java's SAM-conversions), use-site variance without wildcards, smart casts, and more. Find a more in-depth look at the comparison to Java in the [Kotlin documentation](https://kotlinlang.org/docs/reference/comparison-to-java.html). - -### Minimum API Level - -You will need to decide the minimum API level for your application. This determines which version of Android your application will support. Lower API levels are older and therefore generally support more devices, but higher API levels are newer and therefore provide more features. - -![Android Studio Minimum API selection screen](../images/android-minimum-api-selection.png) - -Select the **Help me choose** link to open a comparison chart showing the device support distribution and key features associated with the platform version release. - -![Android Studio Minimum API comparison screen](../images/android-minimum-api-selection-2.png) - -### Instant app support and Androidx artifacts - -You may notice a checkbox to **Support instant apps** and another to **Use androidx artifacts** in your project creation options. The *instant apps support* is not checked and the *androidx* is checked as the recommended default. - -Google Play **Instant apps** provide a way for people to try an app or game without installing it first. These instant apps can be surfaced across the Play Store, Google Search, social networks, and anywhere you share a link. By checking the **Support instant apps** box, you are asking Android Studio to include the Google Play Instant Development SDK with your project. Learn more about Google Play Instant apps in the [Android developer guide](https://developer.android.com/topic/google-play-instant). - -**AndroidX artifacts** represents the new version of the Android support library and provides backwards-compatibility across Android releases. AndroidX provides a consistent namespace starting with the string androidx for all available packages. - -> [!NOTE] -> AndroidX is now the default library. To uncheck this box and use the previous support library requires removing the latest Android Q SDK. See [Uncheck use Androidx artifacts](https://stackoverflow.com/questions/56580980/uncheck-use-androidx-artifacts) on StackOverflow for instructions, but first note that the former Support Library packages have been mapped into corresponding androidx.* packages. For a full mapping of all the old classes and build artifacts to the new ones, see [Migrating to AndroidX](https://developer.android.com/jetpack/androidx/migrate). - -## Project files - -The Android Studio **Project** window, contains the following files (be sure that the Android view is selected from the drop-down menu): - -**app > java > com.example.myfirstapp > MainActivity** - -The main activity and entry point for your app. When you build and run your app, the system launches an instance of this Activity and loads its layout. - -**app > res > layout > activity_main.xml** - -The XML file defining the layout for the activity's user interface (UI). It contains a TextView element with the text "Hello World" - -**app > manifests > AndroidManifest.xml** - -The manifest file describing the fundamental characteristics of the app and each of its components. - -**Gradle Scripts > build.gradle** - -There are two files with this name: "Project: My First App", for the entire project, and "Module: app", for each app module. A new project will initially only have one module. Use the module's build.file to control how the Gradle plugin builds your app. Learn more about how to configure your build in the [Android developer guide](https://developer.android.com/studio/build/index). - -## Use C or C++ for Android game development - -The Android operating system is designed to support applications written in Java or Kotlin, benefiting from tooling embedded in the system's architecture. Many system features, like Android UI and Intent handling, are only exposed through Java interfaces. There are a few instances where you may want to **use C or C++ code via the Android Native Development Kit (NDK)** despite some of the associated challenges. Game development is an example, since games typically use custom rendering logic written in OpenGL or Vulkan and benefit from a wealth of C libraries focused on game development. Using C or C++ *might* also help you squeeze extra performance out of a device to achieve low latency or run computationally intensive applications, such as physics simulations. The NDK **is not appropriate for most novice Android programmers** however. Unless you have a specific purpose for using the NDK, we recommend sticking with Java, Kotlin, or one of the [cross-platform frameworks](./overview.md). - -To create a new project with C/C++ support: - -- In the **Choose your project** section of the Android Studio wizard, select the *Native C++** project type. Select **Next**, complete the remaining fields, then select **Next** again. - -- In the **Customize C++ Support** section of the wizard, you can customize your project with the **C++ Standard** field. Use the drop-down list to select which standardization of C++ you want to use. Selecting **Toolchain Default** uses the default CMake setting. Select **Finish**. - -- Once Android Studio creates your new project, you can find a **cpp** folder in the **Project** pane that contains the native source files, headers, build scripts for CMake or ndk-build, and prebuilt libraries that are a part of your project. You can also find a sample C++ source file, `native-lib.cpp`, in the `src/main/cpp/` folder which provides a simple `stringFromJNI()` function returning the string "Hello from C++". Additionally, you should see a CMake build script, `CMakeLists.txt`, in your module's root directory required for building your native library. - -To learn more, about adding C and C++ code to your project, see the [Android developer guide](https://developer.android.com/studio/projects/add-native-code). To find Android NDK samples with C++ integration, see the [Android NDK samples repo](https://github.com/android/ndk-samples) on GitHub. To compile and run a C++ game on Android, use the [Google Play Game services API](https://developers.google.com/games/services/cpp/gettingStartedAndroid). - -## Design guidelines - -Device users expect applications to look and behave a certain way... whether swiping or tapping or using voice-controls, users will hold specific expectations for what your application should look like and how to use it. These expectations should remain consistent in order to reduce confusion and frustration. Android offers a guide to these platform and device expectations that combines the Google Material Design foundation for visual and navigational patterns, along with quality guidelines for compatibility, performance, and security. - -Learn more in the [Android design documentation](https://developer.android.com/design). - -### Fluent Design System for Android - -Microsoft also offers design guidance with the goal of providing a seamless experience across the entire portfolio of Microsoft's mobile apps. - -[Fluent 2 Microsoft Design System: Fluent UI for Android](https://developer.microsoft.com/en-us/fluentui#/get-started/android) - -[Fluent 2 Microsoft Design System: Android Overview](https://fluent2.microsoft.design/components/android) - -- [Sketch toolkit](https://aka.ms/fluenttoolkits/android/sketch) -- [Android font](https://fonts.google.com/specimen/Roboto) -- [Android User Interface Guidelines](https://developer.android.com/design/) -- [Guidelines for Android app icons](https://developer.android.com/guide/practices/ui_guidelines/icon_design) diff --git a/hub/android/overview.md b/hub/android/overview.md deleted file mode 100644 index 95d8340dee..0000000000 --- a/hub/android/overview.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Android development on Windows -description: A guide to help you get started developing for Android on Windows. -ms.topic: concept-article -ms.date: 11/21/2024 ---- - -# Overview of Android development on Windows - -A guide to help you set up your development environment on a Windows 10 or Windows 11 machine for developing Android apps. Android is a trademark of Google LLC. If you're a developer interested in using Windows operating system to build apps that work on Android devices and across other device platforms, this guide is for you. - -You can also learn about using Windows Subsystem for Android™️ to update and test your Android application so that it will run on a Windows 11 device using the Amazon Appstore. [Learn more](./wsa/index.md). - -## Windows as your development environment - -There are multiple paths for developing an Android device app using the Windows operating system. These paths fall into three main types: **[Native Android development](#native-android)**, **[Cross-platform development](#cross-platform)**, and **[Android game development](#game-development)**. This overview will help you decide which development path to follow for developing an Android app and then provide [next steps](#next-steps) to help you get started using Windows to develop with: - -- [Native Android](native-android.md) -- [.NET MAUI](/dotnet/maui/what-is-maui) -- [React Native](../dev-environment/javascript/react-native-for-android.md) -- [PWA with Cordova or Ionic](pwa.md) -- [C/C++ for game development](native-android.md#use-c-or-c-for-android-game-development) - -*If you have been using Xamarin for cross-platform apps, see [Migrate from Xamarin to .NET MAUI](/dotnet/maui/migration/). - -In addition, this guide will provide tips on using Windows to: - -- [Test on an Android device or emulator](emulator.md) -- [Develop dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/) - -### Native Android - -[Native Android development on Windows](./native-android.md) means that your app is targeting only Android (not iOS or Windows devices). You can use [Android Studio](https://developer.android.com/studio/install#windows) or [Visual Studio](https://visualstudio.microsoft.com/vs/android/) to develop within the ecosystem designed specifically for the Android operating system. Performance will be optimized for Android devices, the user-interface look and feel will be consistent with other native apps on the device, and any features or capabilities of the user's device will be straight-forward to access and utilize. Developing your app in a native format will help it to just 'feel right' because it follows all of the interaction patterns and user experience standards established specifically for Android devices. - -### Cross-platform - -Cross-platform frameworks provide a single codebase that can (mostly) be shared between Android, iOS, and Windows devices. Using a cross-platform framework can help your app to maintain the same look, feel, and experience across device platforms, as well as benefiting from the automatic rollout of updates and fixes. Instead of needing to understand a variety of device-specific code languages, the app is developed in a shared codebase, typically in one language. - -While cross-platform frameworks aim to look and feel as close to native apps as possible, they will never be as seamlessly integrated as a natively developed app and may suffer from reduced speed and degraded performance. Additionally, the tools used to build cross-platform apps may not have all of the features offered by each different device platform, potentially requiring workarounds. - -A codebase is typically made up of **UI code**, for creating the user interface like pages, buttons controls, labels, lists, etc., and **logic code**, for calling web services, accessing a database, invoking hardware capabilities and managing state. On average, 90% of this can be reused, though there is typically some need to customize code for each device platform. This generalization largely depends on the type of app you're building, but provides a bit of context that hopefully will help with your decision-making. - -### Choosing a cross-platform framework - -[.NET MAUI](/dotnet/maui/) - -- A cross-platform framework for creating native mobile and desktop apps with C# and XAML. -- Develop apps that can run on Android, iOS, macOS, and Windows from a single shared code-base, with deep access to every aspect of each native platform from a single unified API that enables a write-once, run-anywhere dev experience. -- Share UI layout and design across platforms. -- An open-source evolution of Xamarin.Forms, extended from mobile to desktop scenarios, with UI controls rebuilt for performance and extensibility. -- [Migrate Xamarin.Android projects to .NET MAUI](/dotnet/maui/migration/android-projects) - -[React Native](../dev-environment/javascript/react-native-for-android.md) - -- UI code: JavaScript -- Logic code: JavaScript -- The goal of React Native isn't to write the code once and run it on any platform, rather to learn-once (the React way) and write-anywhere. -- The community has added tools such as Expo and Create React Native App to help those wanting to build apps without using Xcode or Android Studio. -- Similar to .NET MAUI (C#), React Native (JavaScript) calls native UI elements (without the need for writing Java/Kotlin or Swift). - -[Progressive Web Apps (PWAs)](pwa.md) - -- UI code: HTML, CSS, JavaScript -- Logic code: JavaScript -- PWAs are web apps built with standard patterns to allow them to take advantage of both web and native app features. They can be built without a framework, but a couple of popular frameworks to consider are [Ionic](https://ionicframework.com/docs/intro) and [Apache Cordova](https://cordova.apache.org). -- PWAs can be installed on a device (Android, iOS, or Windows) and can work offline thanks to the incorporation of a service-worker. -- PWAs can be distributed and installed without an app store using only a web URL. The Microsoft Store and Google Play Store allow PWAs to be listed, the Apple Store currently does not, though they can still be installed on any iOS device running 12.2 or later. -- To learn more, check out this [introduction to PWAs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Introduction) on MDN. - -### Game development - -Game development for Android is often unique from developing a standard Android app since games typically use custom rendering logic, often written in OpenGL or Vulkan. For this reason, and because of the many C libraries available that support game development, it's common for developers to use [C/C++ with Visual Studio](/cpp/cross-platform/), along with the Android [Native Development Kit (NDK)](/cpp/cross-platform/create-an-android-native-activity-app), to create games for Android. [Get started with C/C++ for game development](native-android.md#use-c-or-c-for-android-game-development). - -For more guidance on developing Android games, see the Android Developer site: [Game development basics](https://developer.android.com/games/guides/basics). You will find guidance on using a game engine (like Unity, Unreal, Defold, Godot), as well as using IDEs (like Android Studio or Visual Studio). - -## Next steps - -- [Get started with native Android development on Windows](native-android.md) -- [Get started with Windows Subsystem for Android](./wsa/index.md) -- [Get started developing for Android using .NET MAUI](/dotnet/maui) -- [Get started developing for Android using React Native](../dev-environment/javascript/react-native-for-android.md) -- [Get started developing a PWA for Android](pwa.md) -- [Develop Dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/) -- [Enable Virtualization support to improve emulator performance](emulator.md#enable-virtualization-support) diff --git a/hub/android/pwa.md b/hub/android/pwa.md deleted file mode 100644 index b271f083ec..0000000000 --- a/hub/android/pwa.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Create a PWA or Hybrid web app for Android -description: Get started developing Android apps using the PWA approach on Windows. -ms.topic: get-started -keywords: android on windows, pwa, android, cordova, ionic, phonegap, hybrid web app -ms.date: 04/28/2020 ---- - -# Get started developing a PWA or Hybrid web app for Android - -This guide will help you to get started creating a hybrid web app or Progressive Web App (PWA) on Windows using a single HTML/CSS/JavaScript codebase that can be used on the web and across device platforms (Android, iOS, Windows). - -By using the right frameworks and components, web-based applications can work on an Android device in a way that looks to users very similar to a native app. - -## Features of a PWA or Hybrid web app - -There are two main types of web apps that can be installed on Android devices. The main difference being whether your application code is embedded in an app package (hybrid) or hosted on a web server (pwa). - -- **Hybrid web apps**: Code (HTML, JS, CSS) is packaged in an APK and can be distributed via the Google Play Store. The viewing engine is isolated from the users' internet browser, no session or cache sharing. - -- **Progressive Web Apps (PWAs)**: Code (HTML, JS, CSS) lives on the web and doesn't need to be packaged as an APK. Resources are downloaded and updated as needed using a Service Worker. The Chrome browser will render and display your app, but will look native and not include the normal browser address bar, etc. You can share storage, cache, and sessions with the browser. This is basically like installing a shortcut to the Chrome browser in a special mode. PWAs can also be listed in the Google Play Store using Trusted Web Activity. - -PWAs and hybrid web apps are very similar to a native Android app in that they: - -- Can be installed via the App Store (Google Play Store and/or Microsoft Store) -- Have access to native device features like camera, GPS, Bluetooth, notifications, and list of contacts -- Work Offline (no internet connection) - -PWAs also have a few unique features: - -- Can be installed on the Android home screen directly from the web (without an App Store) -- Can additionally be installed via the Google Play Store [using a Trusted Web Activity](https://css-tricks.com/how-to-get-a-progressive-web-app-into-the-google-play-store/) -- Can be discovered via web search or shared via a URL link -- Rely on a [Service Worker](https://developers.google.com/web/fundamentals/primers/service-workers) to avoid the need to package native code - -You don't need a framework to create a Hybrid app or PWA, but there are a few popular frameworks that will be covered in this guide, including PhoneGap (with Cordova) and Ionic (with Cordova or Capacitor using Angular or React). - -## Apache Cordova - -[Apache Cordova](https://cordova.apache.org/) is an open-source framework that can simplify the communication between your JavaScript code living in a native [WebView](https://developer.android.com/reference/android/webkit/WebView) and the native Android platform by using [plugins](https://cordova.apache.org/plugins/?platforms=cordova-android). These plugins expose JavaScript endpoints that can be called from your code and used to call native Android device APIs. Some example Cordova plugins include access to device services like battery status, file access, vibration / ring tones, etc. These features are not typically available to web apps or browsers. - -There are two popular distributions of Cordova: - -- PhoneGap: Support has been discontinued by Adobe. - -- [Ionic](https://ionicframework.com/) - -## Ionic - -[Ionic](https://ionicframework.com/) is a framework that adjusts the user interface (UI) of your app to match the design language of each platform (Android, iOS, Windows). Ionic enables you to use either [Angular](https://ionicframework.com/docs/developer-resources/guides/first-app-v4/intro) or [React](https://ionicframework.com/react). - -> [!NOTE] -> There is a new version of Ionic that uses an alternative to Cordova, called [Capacitor](https://capacitor.ionicframework.com/). This alternative uses containers to make your app [more web-friendly](https://ionicframework.com/blog/announcing-capacitor-1-0/). - -### Get started with Ionic by installing required tools - -To get started building a PWA or hybrid web app with Ionic, you should first install the following tools: - -- Node.js for interacting with the Ionic ecosystem. [Download NodeJS for Windows](https://nodejs.org/en/) or follow the [NodeJS installation guide](../dev-environment/javascript/nodejs-on-wsl.md) using Windows Subsystem for Linux (WSL). You may want to consider using [Node Version Manager (nvm)](../dev-environment/javascript/nodejs-on-wsl.md#install-nvm-nodejs-and-npm) if you will be working with multiple projects and version of NodeJS. - -- VS Code for writing your code. [Download VS Code for Windows](https://code.visualstudio.com/). You may also want to install the [WSL Remote Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) if you prefer to build your app with a Linux command line. - -- Windows Terminal for working with your preferred command-line interface (CLI). [Install Windows Terminal from Microsoft Store](https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701?activetab=pivot:overviewtab). - -- Git for version control. [Download Git](https://git-scm.com/downloads). - -## Create a new project with Ionic Cordova and Angular - -Install Ionic and Cordova by entering the following in your command line: - -```bash -npm install -g @ionic/cli cordova -``` - -Create an Ionic Angular app using the "Tabs" app template by entering the command: - -```bash -ionic start photo-gallery tabs -``` - -Change into the app folder: - -```bash -cd photo-gallery -``` - -Run the app in your web browser: - -```bash -ionic serve -``` - -For more information, see the [Ionic Cordova Angular docs](https://ionicframework.com/docs/developer-resources/guides/first-app-v4/intro). Visit the [Making your Angular app a PWA](https://ionicframework.com/docs/angular/pwa) section of the Ionic docs to learn how to move your app from being a hybrid to a PWA. - -## Create a new project with Ionic Capacitor and Angular - -Install Ionic and Cordova-Res by entering the following in your command line: - -```bash -npm install -g @ionic/cli native-run cordova-res -``` - -Create an Ionic Angular app using the "Tabs" app template and adding Capacitor by entering the command: - -```bash -ionic start photo-gallery tabs --type=angular --capacitor -``` - -Change into the app folder: - -```bash -cd photo-gallery -``` - -Add components to make the app a PWA: - -```bash -npm install @ionic/pwa-elements -``` - -Import @ionic/pwa-elements by add the following to your `src/main.ts` file: - -```typescript -import { defineCustomElements } from '@ionic/pwa-elements/loader'; - -// Call the element loader after the platform has been bootstrapped -defineCustomElements(window); -``` - -Run the app in your web browser: - -```bash -ionic serve -``` - -For more information, see the [Ionic Capacitor Angular docs](https://ionicframework.com/docs/angular/your-first-app). Visit the [Making your Angular app a PWA](https://ionicframework.com/docs/angular/pwa) section of the Ionic docs to learn how to move your app from being a hybrid to a PWA. - -## Create a new project with Ionic and React - -Install the Ionic CLI by entering the following in your command line: - -```bash -npm install -g @ionic/cli -``` - -Create a new project with React by entering the command: - -```bash -ionic start myApp blank --type=react -``` - -Change into the app folder: - -```bash -cd myApp -``` - -Run the app in your web browser: - -```bash -ionic serve -``` - -For more information, see the [Ionic React docs](https://ionicframework.com/docs/react/quickstart). Visit the [Making your React app a PWA](https://ionicframework.com/docs/react/pwa) section of the Ionic docs to learn how to move your app from being a hybrid to a PWA. - -## Test your Ionic app on a device or emulator - -To test your Ionic app on an Android device, plug-in your device ([make sure it is first enabled for development](emulator.md#enable-your-device-for-development)), then in your command line enter: - -```bash -ionic cordova run android -``` - -To test your Ionic app on an Android device emulator, you must: - -1. [Install the required components -- Java Development Kit (JDK), Gradle, and the Android SDK](https://cordova.apache.org/docs/en/latest/guide/platforms/android/#installing-the-requirements). - -2. Create an Android Virtual Device (AVD): See the [Android developer guide]](https://developer.android.com/studio/run/managing-avds.html). - -3. Enter the command for Ionic to build and deploy your app to the emulator: `ionic cordova emulate [] [options]`. In this case, the command should be: - -```bash -ionic cordova emulate android --list -``` - -See the [Cordova Emulator](https://ionicframework.com/docs/cli/commands/cordova-emulate) in the Ionic docs for more info. diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/bootstrapper-cpp-api-constants.md b/hub/apps/api-reference/bootstrapper-cpp-api/bootstrapper-cpp-api-constants.md deleted file mode 100644 index 7b330518fc..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/bootstrapper-cpp-api-constants.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Constants for use with the Bootstrapper C++ API -description: The following constants (for use with the Bootstrapper C++ API) are declared in `WindowsAppSDK-VersionInfo.h`. -ms.topic: article -ms.date: 07/25/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api, C++, constants -ms.localizationpriority: low ---- - -# Constants for use with the Bootstrapper C++ API - -The following constants (for use with the Bootstrapper C++ API) are declared in `WindowsAppSDK-VersionInfo.h`. - -## Microsoft::WindowsAppSDK::Release namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR Channel | \[release-dependent\] | The Windows App SDK release's channel; for example, L"preview", or empty string for stable. | -| constexpr PCWSTR FormattedVersionShortTag | \[release-dependent\] | The Windows App SDK release's short-form version tag, formatted for concatenation when constructing identifiers; for example, "-p2", or empty string for stable. | -| constexpr PCWSTR FormattedVersionTag | \[release-dependent\] | The Windows App SDK release's version tag, formatted for concatenation when constructing identifiers; for example, "-preview2", or empty string for stable. | -| constexpr uint16_t Major | \[release-dependent\] | The major version of the Windows App SDK release. | -| constexpr uint32_t MajorMinor | \[release-dependent\] | The major and minor version of the Windows App SDK release, encoded as a uint32_t (0xMMMMNNNN where M=major, N=minor). | -| constexpr uint16_t Minor | \[release-dependent\] | The minor version of the Windows App SDK release. | -| constexpr uint16_t Patch | \[release-dependent\] | The patch version of the Windows App SDK release. | -| constexpr PCWSTR VersionShortTag | \[release-dependent\] | The Windows App SDK release's short-form version tag; for example, L"p2", or empty string for stable. | -| constexpr PCWSTR VersionTag | \[release-dependent\] | The Windows App SDK release's version tag; for example, L"preview2", or empty string for stable. | - -## Microsoft::WindowsAppSDK::Runtime::Identity namespace - -Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR Publisher | L"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" | The Windows App SDK runtime's package identity's Publisher. | -| constexpr PCWSTR PublisherId | L"8wekyb3d8bbwe" | The Windows App SDK runtime's package identity's PublisherId. | - -## Microsoft::WindowsAppSDK::Runtime::Packages::Framework namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR PackageFamilyName | "Microsoft.WindowsAppRuntime.1.1-preview1_8wekyb3d8bbwe" | The Windows App SDK runtime's Framework package's family name. | - -## Microsoft::WindowsAppSDK::Runtime.Packages.DDLM.Arm64 namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR PackageFamilyName | \[release-dependent\] | The Windows App SDK runtime's Dynamic Dependency Lifetime Manager (DDLM) package's family name, for arm64. | - -## Microsoft::WindowsAppSDK::Runtime.Packages.DDLM.X64 namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR PackageFamilyName | \[release-dependent\] | The Windows App SDK runtime's Dynamic Dependency Lifetime Manager (DDLM) package's family name, for x64. | - -## Microsoft::WindowsAppSDK::Runtime.Packages.DDLM.X86 namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR PackageFamilyName | \[release-dependent\] | The Windows App SDK runtime's Dynamic Dependency Lifetime Manager (DDLM) package's family name, for x86. | - -## Microsoft::WindowsAppSDK::Runtime::Packages::Main namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR PackageFamilyName | L"MicrosoftCorporationII.WinAppRuntime.Main.1.1-p1_8wekyb3d8bbwe" | The Windows App SDK runtime's Main package's family name. | - -## Microsoft::WindowsAppSDK::Runtime::Packages::Singleton namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr PCWSTR PackageFamilyName | L"Microsoft.WindowsAppRuntime.Singleton-preview1_8wekyb3d8bbwe" | The Windows App SDK runtime's Singleton package's family name. | - -## Microsoft::WindowsAppSDK::Runtime::Version namespace - -| Constant | Value | Description | -|-|-|-| -| constexpr uint16_t Build | \[release-dependent\] | The build version of the Windows App SDK runtime; for example, 804. | -| constexpr PCWSTR DotQuadString | \[release-dependent\] | The version of the Windows App SDK runtime, as a string (const wchar_t*); for example, L"1000.446.804.0". | -| constexpr uint16_t Major | \[release-dependent\] | The major version of the Windows App SDK runtime; for example, 1000. | -| constexpr uint16_t Minor | \[release-dependent\] | The minor version of the Windows App SDK runtime; for example, 446. | -| constexpr uint16_t Revision | \[release-dependent\] | The revision version of the Windows App SDK runtime; for example, 0. | -| constexpr uint64_t UInt64 | \[release-dependent\] | The version of the Windows App SDK runtime, as a uint64l for example, 0x03E801BE03240000. | - -## Requirements -**Minimum supported SDK:** Windows App SDK version 1.1 - -**Namespace:** Microsoft::WindowsAppSDK - -**Header:** WindowsAppSDK-VersionInfo.h - -## See also - -* [Bootstrapper C++ API](../index.md) diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/index.md b/hub/apps/api-reference/bootstrapper-cpp-api/index.md deleted file mode 100644 index 69d5b8f3e5..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Bootstrapper C++ API -description: C++ types and functions representing the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). -ms.topic: article -ms.date: 03/22/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api -ms.localizationpriority: low ---- - -# Bootstrapper C++ API - -The Bootstrapper C++ API is a set of types and functions (callable only from C++) that offer an alternative way to call the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). - -## Topics in this section - -| Topic | Description | -| - | - | -| [Constants for use with the Bootstrapper C++ API](bootstrapper-cpp-api-constants.md) | The following constants (for use with the Bootstrapper C++ API) are declared in `WindowsAppSDK-VersionInfo.h`. | -| [Microsoft::Windows::ApplicationModel namespace](microsoft.windows.applicationmodel/microsoft.windows.applicationmodel.md) | Types and functions from the Bootstrapper C++ API that are in the (**Microsoft::Windows**) **ApplicationModel** namespace. For example, a class that represents a version of the Windows App SDK framework package. | -| [Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap namespace](microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md) | Types and functions from the Bootstrapper C++ API that are in the (**Microsoft::Windows::ApplicationModel::DynamicDependency**) **Bootstrap** namespace. For example, helper functions that wrap calls to the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). | - -## See also - -* [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/) diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initialize.md b/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initialize.md deleted file mode 100644 index 3dcdaaa7f3..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initialize.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Initialize function -description: Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, throws an exception. -ms.topic: how-to -ms.date: 03/23/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api -ms.localizationpriority: low ---- - -# Initialize function - -Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, throws an exception. - -## Syntax -```cpp -inline auto Initialize( - uint32_t majorMinorVersion = WINDOWSAPPSDK_RELEASE_MAJORMINOR, - PCWSTR versionTag = WINDOWSAPPSDK_RELEASE_VERSION_TAG_W, - PackageVersion minVersion = WINDOWSAPPSDK_RUNTIME_VERSION_UINT64) -``` - -### Parameters -`majorMinorVersion` -See *majorMinorVersion* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RELEASE_MAJORMINOR. - -`versionTag` -See *versionTag* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RELEASE_VERSION_TAG_W. - -`minVersion` -See *minVersion* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RUNTIME_VERSION_UINT64. - -### Return value - -On success, returns a resource acquisition is initialization (RAII) object which, when it goes out of scope, undoes the changes that were made by the call to [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). - -### Example - -```cpp -#include - -#include - -#include -#include - -#include - -namespace MddBootstrap {using namespace - ::Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap; } - -int main() -{ - try - { - auto mddBootstrapCleanup{ MddBootstrap::Initialize() }; - // Do work here. - } - catch (const winrt::hresult_error& ex) - { - const auto hr{ ex.code() }; - std::cout << "Error 0x" << std::hex << hr << " in Bootstraper initialization"; - return hr; - } - return 0; -} -``` - -## Requirements -**Minimum supported SDK:** Windows App SDK version 1.1 - -**Namespace:** Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap - -**Header:** MddBootstrap.h - -## See also - -* [Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap namespace](microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializefailfast.md) -* [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializefailfast.md b/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializefailfast.md deleted file mode 100644 index 41e176dcd9..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializefailfast.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: InitializeFailFast function -description: Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, aborts the process (via **std::abort**). -ms.topic: article -ms.date: 03/23/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api -ms.localizationpriority: low ---- - -# InitializeFailFast function - -Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, aborts the process (via **std::abort**). - -## Syntax -```cpp -inline auto InitializeFailFast( - uint32_t majorMinorVersion = WINDOWSAPPSDK_RELEASE_MAJORMINOR, - PCWSTR versionTag = WINDOWSAPPSDK_RELEASE_VERSION_TAG_W, - PackageVersion minVersion = WINDOWSAPPSDK_RUNTIME_VERSION_UINT64) -``` - -### Parameters -`majorMinorVersion` -See *majorMinorVersion* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RELEASE_MAJORMINOR. - -`versionTag` -See *versionTag* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RELEASE_VERSION_TAG_W. - -`minVersion` -See *minVersion* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RUNTIME_VERSION_UINT64. - -### Return value - -On success, returns a resource acquisition is initialization (RAII) object which, when it goes out of scope, undoes the changes that were made by the call to [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). - -### Example - -```cpp -#include - -#include -#include - -#include - -namespace MddBootstrap {using namespace - ::Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap; } - -int main() -{ - auto mddBootstrapShutdown{ MddBootstrap::InitializeFailFast() }; - // Do work here. - return 0; -} -``` - -## Requirements -**Minimum supported SDK:** Windows App SDK version 1.1 - -**Namespace:** Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap - -**Header:** MddBootstrap.h - -## See also - -* [Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap namespace](microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializefailfast.md) -* [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializenothrow.md b/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializenothrow.md deleted file mode 100644 index 60f0fc86c8..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializenothrow.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: InitializeNoThrow function -description: Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, returns a failure **HRESULT**. -ms.topic: article -ms.date: 03/23/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api -ms.localizationpriority: low ---- - -# InitializeNoThrow function - -Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, returns a failure **HRESULT**. - -## Syntax -```cpp -inline auto Initialize( - uint32_t majorMinorVersion = WINDOWSAPPSDK_RELEASE_MAJORMINOR, - PCWSTR versionTag = WINDOWSAPPSDK_RELEASE_VERSION_TAG_W, - PackageVersion minVersion = WINDOWSAPPSDK_RUNTIME_VERSION_UINT64) -``` - -### Parameters -`majorMinorVersion` -See *majorMinorVersion* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RELEASE_MAJORMINOR. - -`versionTag` -See *versionTag* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RELEASE_VERSION_TAG_W. - -`minVersion` -See *minVersion* in [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize). Defaults to WINDOWSAPPSDK_RUNTIME_VERSION_UINT64. - -### Return value - -On success, returns **S_OK**. If the call to [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) fails, returns a failure **HRESULT**. - -### Example - -```cpp -#include - -#include -#include - -#include - -namespace MddBootstrap {using namespace - ::Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap; } - -int main() -{ - const auto hr{ MddBootstrap::InitializeNoThrow() }; - if (FAILED(hr)) - { - std::cout << "Error 0x" << std::hex << hr << " in Bootstrap initialization"; - return hr; - } - auto mddBootstrapShutdown{ MddBootstrap::unique_mddbootstrapshutdown( - reinterpret_cast(1) - ) }; - // Do work here. - return 0; -} -``` - -## Requirements -**Minimum supported SDK:** Windows App SDK version 1.1 - -**Namespace:** Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap - -**Header:** MddBootstrap.h - -## See also - -* [Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap namespace](microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializefailfast.md) -* [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md b/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md deleted file mode 100644 index 287162d27b..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel.dynamicdependency.bootstrap/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap namespace -description: Types and functions from the [Bootstrapper C++ API](api-reference/bootstrapper-cpp-api/index.md) that are in the **Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap** namespace. -ms.topic: article -ms.date: 03/22/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api -ms.localizationpriority: low ---- - -# Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap namespace - -Types and functions from the [Bootstrapper C++ API](../index.md) that are in the **Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap** namespace. For example, helper functions that wrap calls to the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). - -## Functions in theMicrosoft::Windows::ApplicationModel::DynamicDependency::Bootstrap namespace - -| Function | Description | -| - | - | -| [Initialize function](microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initialize.md) | Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, throws an exception. | -| [InitializeFailFast function](microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializefailfast.md) | Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, aborts the process (via **std::abort**). | -| [InitializeNoThrow function](microsoft.windows.applicationmodel.dynamicdependency.bootstrap.initializenothrow.md) | Calls [MddBootstrapInitialize](/windows/windows-app-sdk/api/win32/mddbootstrap/nf-mddbootstrap-mddbootstrapinitialize) to initialize the calling process to use the specified version of the Windows App SDK's framework package. If the call fails, returns a failure **HRESULT**. | - -## See also - -[Bootstrapper C++ API](../index.md) diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel/microsoft.windows.applicationmodel.md b/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel/microsoft.windows.applicationmodel.md deleted file mode 100644 index 56cf7d84ad..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel/microsoft.windows.applicationmodel.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Microsoft::Windows::ApplicationModel namespace -description: Types and functions from the [Bootstrapper C++ API](api-reference/bootstrapper-cpp-api/index.md) that are in the **Microsoft::Windows::ApplicationModel** namespace. -ms.topic: article -ms.date: 03/22/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api -ms.localizationpriority: low ---- - -# Microsoft::Windows::ApplicationModel namespace - -Types and functions from the [Bootstrapper C++ API](../index.md) that are in the **Microsoft::Windows::ApplicationModel** namespace. For example, a class that represents a version of the Windows App SDK framework package. - -## Types in the Microsoft::Windows::ApplicationModel namespace - -| Type | Description | -| - | - | -| [PackageVersion class](microsoft.windows.applicationmodel.packageversion.md) | Represents a version of the Windows App SDK framework package. | - -## See also - -[Bootstrapper C++ API](../index.md) diff --git a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel/microsoft.windows.applicationmodel.packageversion.md b/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel/microsoft.windows.applicationmodel.packageversion.md deleted file mode 100644 index b9549155a2..0000000000 --- a/hub/apps/api-reference/bootstrapper-cpp-api/microsoft.windows.applicationmodel/microsoft.windows.applicationmodel.packageversion.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: PackageVersion class -description: Represents a version of the Windows App SDK framework package (C++). -ms.topic: article -ms.date: 03/22/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, app sdk, bootstrapper, bootstrapper api -ms.localizationpriority: low ---- - -# PackageVersion class - -Represents a version of the Windows App SDK framework package. - -## Syntax -```cpp -class PackageVersion : public PACKAGE_VERSION; -``` - -## Requirements -**Minimum supported SDK:** Windows App SDK version 1.1 - -**Namespace:** Microsoft::Windows::ApplicationModel - -**Header:** MddBootstrap.h - -## Constructors -|Constructor|Description| -|------------|-----------------| -|[PackageVersion constructor](#packageversionpackageversion-constructor)|Initializes a new instance of the **PackageVersion** class.| - -## Member functions -|Function|Description| -|------------|-----------------| -|[PackageVersion::ToString function](#packageversiontostring-function)|Retrieves the version as a **std::wstring**.| -|[PackageVersion::ToVersion function](#packageversiontoversion-function)|Retrieves the version as a **uint64_t**.| - -## PackageVersion::PackageVersion constructor -Initializes a new instance of the **PackageVersion** class. - -### Syntax -```cpp -PackageVersion(); -PackageVersion(uint16_t major, uint16_t minor = 0, uint16_t build = 0, uint16_t revision = 0); -PackageVersion(uint64_t version); -``` - -### Parameters -`major` -A **uint16_t** value representing the `major` position of a `major.minor.build.revision` sequence. - -`minor` -An optional **uint16_t** value representing the `minor` position of a `major.minor.build.revision` sequence. Defaults to 0. - -`build` -An optional **uint16_t** value representing the `build` position of a `major.minor.build.revision` sequence. Defaults to 0. - -`revision` -An optional **uint16_t** value representing the `revision` position of a `major.minor.build.revision` sequence. Defaults to 0. - -`version` -A `major.minor.build.revision` sequence encoded as a (little-endian) **uint64_t** (so that the first 16 bits contain the revision, and so on). - -## PackageVersion::ToString function -Retrieves the version as a **std::wstring**. - -### Syntax -```cpp -std::wstring ToString() const; -``` - -### Return value -The `major.minor.build.revision` sequence encoded as a string (**std::wstring**) in the format "12345.12345.12345.12345" + null-terminator. - -## PackageVersion::ToVersion function -Retrieves the version as a **uint64_t**. - -### Syntax -```cpp -uint64_t ToVersion() const; -``` - -### Return value -The `major.minor.build.revision` sequence encoded as a (little-endian) **uint64_t** (so that the first 16 bits contain the revision, and so on). - -## See also -* [Microsoft::Windows::ApplicationModel namespace](microsoft.windows.applicationmodel.md) diff --git a/hub/apps/api-reference/cs-bootstrapper-apis/cs-bootstrapper-apis-constants.md b/hub/apps/api-reference/cs-bootstrapper-apis/cs-bootstrapper-apis-constants.md deleted file mode 100644 index abab528d82..0000000000 --- a/hub/apps/api-reference/cs-bootstrapper-apis/cs-bootstrapper-apis-constants.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Constants for use with the Bootstrapper C# APIs -description: The following constants are for use with the Bootstrapper C# APIs. -ms.topic: article -ms.date: 07/25/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, C#, interop, Bootstrapper, Bootstrapper API, constants -ms.localizationpriority: low ---- - -# Constants for use with the Bootstrapper C# APIs - -The following constants are for use with the Bootstrapper C# APIs. - -## Definition - -Namespace: **Microsoft.WindowsAppSDK** - -Assembly: Microsoft.WindowsAppRuntime.Release.Net.dll - -## Microsoft.WindowsAppSDK.Release class - -| Constant | Value | Description | -|-|-|-| -| public const string Channel | \[release-dependent\] | The Windows App SDK release's channel; for example, "preview", or empty string for stable. | -| public const string FormattedVersionShortTag | \[release-dependent\] | The Windows App SDK release's short-form version tag, formatted for concatenation when constructing identifiers; for example, "-p2", or empty string for stable. | -| public const string FormattedVersionTag | \[release-dependent\] | The Windows App SDK release's version tag, formatted for concatenation when constructing identifiers; for example, "-preview2", or empty string for stable. | -| public const ushort Major | \[release-dependent\] | The major version of the Windows App SDK release. | -| public const uint MajorMinor | \[release-dependent\] | The major and minor version of the Windows App SDK release, encoded as a uint32_t (0xMMMMNNNN where M=major, N=minor). | -| public const ushort Minor | \[release-dependent\] | The minor version of the Windows App SDK release. | -| public const ushort Patch | \[release-dependent\] | The patch version of the Windows App SDK release. | -| public const string VersionShortTag | \[release-dependent\] | The Windows App SDK release's short-form version tag; for example, "p2", or empty string for stable. | -| public const string VersionTag | \[release-dependent\] | The Windows App SDK release's version tag; for example, "preview2", or empty string for stable. | - -## Microsoft.WindowsAppSDK.Runtime.Identity class - -| Constant | Value | Description | -|-|-|-| -| public const string Publisher | "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" | The Windows App SDK runtime's package identity's Publisher. | -| public const string PublisherId | "8wekyb3d8bbwe" | The Windows App SDK runtime's package identity's PublisherId. | - -## Microsoft.WindowsAppSDK.Runtime.Packages.DDLM.Arm64 class - -| Constant | Value | Description | -|-|-|-| -| public const string PackageFamilyName | \[release-dependent\] | The Windows App SDK runtime's Dynamic Dependency Lifetime Manager (DDLM) package's family name, for arm64. | - -## Microsoft.WindowsAppSDK.Runtime.Packages.DDLM.X64 class - -| Constant | Value | Description | -|-|-|-| -| public const string PackageFamilyName | \[release-dependent\] | The Windows App SDK runtime's Dynamic Dependency Lifetime Manager (DDLM) package's family name, for x64. | - -## Microsoft.WindowsAppSDK.Runtime.Packages.DDLM.X86 class - -| Constant | Value | Description | -|-|-|-| -| public const string PackageFamilyName | \[release-dependent\] | The Windows App SDK runtime's Dynamic Dependency Lifetime Manager (DDLM) package's family name, for x86. | - -## Microsoft.WindowsAppSDK.Runtime.Packages.Framework class - -| Constant | Value | Description | -|-|-|-| -| public const string PackageFamilyName | "Microsoft.WindowsAppRuntime.1.1-preview1_8wekyb3d8bbwe" | The Windows App SDK runtime's Framework package's family name. | - -## Microsoft.WindowsAppSDK.Runtime.Packages.Main class - -| Constant | Value | Description | -|-|-|-| -| public const string PackageFamilyName | "MicrosoftCorporationII.WinAppRuntime.Main.1.1-p1_8wekyb3d8bbwe" | The Windows App SDK runtime's Main package's family name. | - -## Microsoft.WindowsAppSDK.Runtime.Packages.Singleton class - -| Constant | Value | Description | -|-|-|-| -| public const string PackageFamilyName | "Microsoft.WindowsAppRuntime.Singleton-preview1_8wekyb3d8bbwe" | The Windows App SDK runtime's Singleton package's family name. | - -## Microsoft.WindowsAppSDK.Runtime.Version class - -| Constant | Value | Description | -|-|-|-| -| public const ushort Major | \[release-dependent\] | The major version of the Windows App SDK runtime; for example, 1000. | -| public const ushort Minor | \[release-dependent\] | The minor version of the Windows App SDK runtime; for example, 446. | -| public const ushort Build | \[release-dependent\] | The build version of the Windows App SDK runtime; for example, 804. | -| public const ushort Revision | \[release-dependent\] | The revision version of the Windows App SDK runtime; for example, 0. | -| public const ulong UInt64 | \[release-dependent\] | The version of the Windows App SDK runtime, as a uint64l for example, 0x03E801BE03240000. | -| public const string DotQuadString | \[release-dependent\] | The version of the Windows App SDK runtime, as a string (const wchar_t*); for example, "1000.446.804.0". | - -## See also - -* [Bootstrapper C# APIs](../index.md) diff --git a/hub/apps/api-reference/cs-bootstrapper-apis/index.md b/hub/apps/api-reference/cs-bootstrapper-apis/index.md deleted file mode 100644 index 26a6f40f2b..0000000000 --- a/hub/apps/api-reference/cs-bootstrapper-apis/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Bootstrapper C# APIs -description: As a C# desktop application developer, in .NET you can make use of C# types that wrap and represent the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). -ms.topic: article -ms.date: 04/05/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, C#, interop, Bootstrapper, Bootstrapper API -ms.localizationpriority: low ---- - -# Bootstrapper C# APIs - -As a C# desktop application developer, in .NET you can make use of C# types that wrap and represent the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). - -These types are available in .NET as part of the [Windows App SDK](../../windows-app-sdk/index.md). - -## Topics in this section - -| Topic | Description | -| - | - | -| [Constants for use with the Bootstrapper C# APIs](cs-bootstrapper-apis-constants.md) | The following constants are for use with the Bootstrapper C# APIs. | -| [Microsoft.Windows.ApplicationModel.DynamicDependency namespace](microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.md) | C# Bootstrapper APIs in the **Microsoft.Windows.ApplicationModel.DynamicDependency** namespace. | - -## See also - -* [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md b/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md deleted file mode 100644 index 3fb52af781..0000000000 --- a/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Bootstrap class -description: The **Bootstrap** class contains static helper methods that conveniently wrap calls to the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). -ms.topic: how-to -ms.date: 04/05/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, C#, interop, Bootstrapper, Bootstrapper API -ms.localizationpriority: low ---- - -# Bootstrap class - -The **Bootstrap** class contains static helper methods that conveniently wrap calls to the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). - -## Definition - -Namespace: [Microsoft.Windows.ApplicationModel.DynamicDependency](microsoft.windows.applicationmodel.dynamicdependency.md) - -Assembly: Microsoft.WindowsAppRuntime.Bootstrap.Net.dll - -```csharp -public class Bootstrap -``` - -## Methods - -* [Initialize methods](#initialize-methods) -* [Shutdown()](#shutdown-method) -* [TryInitialize methods](#tryinitialize-methods) - -## Initialize methods -Initializes the calling process to use Windows App SDK's framework package. Finds a Windows App SDK framework package meeting the criteria provided in the arguments, and makes it available for use by the current process. If multiple packages meet the criteria, then the best candidate is selected. - -```csharp -public static void Initialize(uint majorMinorVersion); -public static void Initialize(uint majorMinorVersion, string versionTag); -public static void Initialize(uint majorMinorVersion, string versionTag, PackageVersion minVersion); -``` - -### Parameters -`majorMinorVersion` [uint](/dotnet/api/system.uint32) - -The major and minor version of the Windows App SDK framework package to load. The version is encoded as `0xMMMMNNNN`, where `M` = Major and `N` = Minor (for example, version 1.2 should be encoded as `0x00010002`). - -`versionTag` [string](/dotnet/api/system.string) - -The version tag of the Windows App SDK framework package to load (if any). For example, `"prerelease"`. Defaults to `null`. - -`minVersion` [PackageVersion](microsoft.windows.applicationmodel.dynamicdependency.packageversion.md) - -The minimum version of the Windows App SDK framework package to use. Defaults to a new default instance of **PackageVersion**. - -## Shutdown method -Removes the changes made to the current process by [Initialize](#initialize-methods) or [TryInitialize](#tryinitialize-methods). After **Shutdown** is called, your app can no longer call Windows App SDK APIs, including the [Dynamic dependency API](/windows/windows-app-sdk/api/win32/_dynamicdependency/). - -```csharp -public static void Shutdown(); -``` - -## TryInitialize methods - -Initializes the calling process to use Windows App SDK's framework package. Failure returns false with the failure **HRESULT** in the *hresult* parameter. Finds a Windows App SDK framework package meeting the criteria provided in the arguments, and makes it available for use by the current process. If multiple packages meet the criteria, then the best candidate is selected. - -```csharp -public static bool TryInitialize(uint majorMinorVersion, out int hresult); -public static bool TryInitialize(uint majorMinorVersion, string versionTag, out int hresult); -public static bool TryInitialize(uint majorMinorVersion, string versionTag, PackageVersion minVersion, out int hresult); -``` - -### Parameters -`majorMinorVersion` [uint](/dotnet/api/system.uint32) - -The major and minor version of the Windows App SDK framework package to load. The version is encoded as `0xMMMMNNNN`, where `M` = Major and `N` = Minor (for example, version 1.2 should be encoded as `0x00010002`). - -`hresult` [uint](/dotnet/api/system.uint32) - -The failure **HRESULT**, if the initialization failed. - -`versionTag` [string](/dotnet/api/system.string) - -The version tag of the Windows App SDK framework package to load (if any). For example, `"prerelease"`. Defaults to `null`. - -`minVersion` [PackageVersion](microsoft.windows.applicationmodel.dynamicdependency.packageversion.md) - -The minimum version of the Windows App SDK framework package to use. Defaults to a new default instance of **PackageVersion**. - -## Applies to - -| Product | Introduced in | -|-|-| -|**Windows App SDK**|Windows App SDK 1.0| - -## See also - -* [Microsoft.Windows.ApplicationModel.DynamicDependency namespace](microsoft.windows.applicationmodel.dynamicdependency.md) diff --git a/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.md b/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.md deleted file mode 100644 index 7eb707abce..0000000000 --- a/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Microsoft.Windows.ApplicationModel.DynamicDependency namespace -description: Provides to desktop application developers C# types that wrap and represent the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). -ms.topic: article -ms.date: 04/05/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, C#, interop, Bootstrapper, Bootstrapper API, Microsoft.Windows.ApplicationModel.DynamicDependency namespace -ms.localizationpriority: low ---- - -# Microsoft.Windows.ApplicationModel.DynamicDependency namespace - -Provides to desktop application developers C# types that wrap and represent the [Bootstrapper API](/windows/windows-app-sdk/api/win32/_bootstrap/). - -These types are available in .NET as part of the [Windows App SDK](../../../windows-app-sdk/index.md). - -## Classes - -* [Bootstrap](microsoft.windows.applicationmodel.dynamicdependency.bootstrap.md) - -## Structs - -* [PackageVersion](microsoft.windows.applicationmodel.dynamicdependency.packageversion.md) - -## See also - -* [Bootstrapper C# APIs](../index.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.packageversion.md b/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.packageversion.md deleted file mode 100644 index 047bf271d5..0000000000 --- a/hub/apps/api-reference/cs-bootstrapper-apis/microsoft.windows.applicationmodel.dynamicdependency/microsoft.windows.applicationmodel.dynamicdependency.packageversion.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: PackageVersion struct -description: Represents a version of the Windows App SDK framework package (C#). -ms.topic: article -ms.date: 04/05/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, C#, interop, Bootstrapper, Bootstrapper API -ms.localizationpriority: low ---- - -# PackageVersion struct - -Represents a version of the Windows App SDK framework package. - -## Definition - -Namespace: [Microsoft.Windows.ApplicationModel.DynamicDependency](microsoft.windows.applicationmodel.dynamicdependency.md) - -Assembly: Microsoft.WindowsAppRuntime.Bootstrap.Net.dll - -```csharp -public struct PackageVersion -``` - -## Constructors - -* [PackageVersion constructors](#packageversion-constructors) - -## Fields - -* [Build](#build-field) -* [Major](#major-field) -* [Minor](#minor-field) -* [Revision](#revision-field) - -## Methods - -* [ToString()](#tostring-method) -* [ToVersion()](#toversion-method) - -## PackageVersion constructors -Initializes a new instance of the **PackageVersion** class. - -```csharp -public PackageVersion(ushort major); -public PackageVersion(ushort major, ushort minor); -public PackageVersion(ushort major, ushort minor, ushort build); -public PackageVersion(ushort major, ushort minor, ushort build, ushort revision); -public PackageVersion(ulong version); -``` - -### Parameters -`major` [ushort](/dotnet/api/system.uint16) - -The `major` position of a `major.minor.build.revision` sequence. - -`minor` [ushort](/dotnet/api/system.uint16) - -The `minor` position of a `major.minor.build.revision` sequence. Defaults to 0. - -`build` [ushort](/dotnet/api/system.uint16) - -The `build` position of a `major.minor.build.revision` sequence. Defaults to 0. - -`revision` [ushort](/dotnet/api/system.uint16) - -The `revision` position of a `major.minor.build.revision` sequence. Defaults to 0. - -`version` [ulong](/dotnet/api/system.uint64) - -A `major.minor.build.revision` sequence encoded as a (little-endian) **UInt64** (so that the first 16 bits contain the revision, and so on). - -## Build field -Gets or sets the `build` position of a `major.minor.build.revision` sequence. - -```csharp -public ushort Build; -``` - -## Major field -Gets or sets the `major` position of a `major.minor.build.revision` sequence. - -```csharp -public ushort Major; -``` - -## Minor field -Gets or sets the `minor` position of a `major.minor.build.revision` sequence. - -```csharp -public ushort Minor; -``` - -## Revision field -Gets or sets the `revision` position of a `major.minor.build.revision` sequence. - -```csharp -public ushort Revision; -``` - -## ToString method -Retrieves the version as a string. - -```csharp -public override string ToString(); -``` - -### Returns -[string](/dotnet/api/system.string) - -The `major.minor.build.revision` sequence encoded as a string. - -## ToVersion method -Retrieves the version as a **UInt64**. - -```csharp -public ulong ToVersion(); -``` - -### Returns -[ulong](/dotnet/api/system.uint64) - -The `major.minor.build.revision` sequence encoded as a (little-endian) **UInt64** (so that the first 16 bits contain the revision, and so on). - -## Applies to - -| Product | Introduced in | -|-|-| -|**Windows App SDK**|Windows App SDK 1.0| - -## See also - -* [Microsoft.Windows.ApplicationModel.DynamicDependency namespace](microsoft.windows.applicationmodel.dynamicdependency.md) diff --git a/hub/apps/api-reference/cs-interop-apis/index.md b/hub/apps/api-reference/cs-interop-apis/index.md deleted file mode 100644 index 4637460ca5..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Interop C# APIs for WinUI -description: In .NET you can make use of the **Win32Interop** class, whose methods wrap and represent several interoperability functions including the [GetWindowIdFromWindow](/windows/windows-app-sdk/api/win32/microsoft.ui.interop/nf-microsoft-ui-interop-getwindowidfromwindow) function. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop -ms.localizationpriority: low ---- - -# Interop C# APIs for WinUI - -As a C# desktop application developer, in .NET you can make use of C# interop classes whose methods wrap and represent several interoperability functions. These include methods of C# classes representing the [GetWindowIdFromWindow](/windows/windows-app-sdk/api/win32/microsoft.ui.interop/nf-microsoft-ui-interop-getwindowidfromwindow) function, for example. - -These C# interop classes are available in .NET as part of the [Windows App SDK](../../windows-app-sdk/index.md). - -## Topics in this section - -| Topic | Description | -| - | - | -| [Microsoft.UI namespace](microsoft.ui/microsoft.ui.md) | C# interop classes in the **Microsoft.UI** namespace. | - -## See also - -* [Call interop APIs from a .NET app](../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.md deleted file mode 100644 index 9b79f325c7..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Microsoft.UI namespace -description: Provides to desktop application developers C# interop classes whose methods wrap and represent several interoperability functions. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop, Microsoft.UI namespace -ms.localizationpriority: low ---- - -# Microsoft.UI namespace - -Provides to desktop application developers C# interop classes whose methods wrap and represent several interoperability functions. These include methods of C# classes representing the [GetWindowIdFromWindow](/windows/windows-app-sdk/api/win32/microsoft.ui.interop/nf-microsoft-ui-interop-getwindowidfromwindow) function, for example. - -These C# interop classes are available in .NET as part of the [Windows App SDK](../../../windows-app-sdk/index.md). - -## Classes - -* [Win32Interop](microsoft.ui.win32interop.md) - -## See also - -* [Interop C# APIs for WinUI](../index.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getdisplayidfrommonitor.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getdisplayidfrommonitor.md deleted file mode 100644 index 9cbf77a041..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getdisplayidfrommonitor.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Win32Interop.GetDisplayIdFromMonitor(IntPtr) method -description: Gets the `DisplayId` that corresponds to the specified *hmonitor*, if the provided `hmonitor` is valid. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop, Win32Interop.GetDisplayIdFromMonitor, GetDisplayIdFromMonitor -ms.localizationpriority: low ---- - -# Win32Interop.GetDisplayIdFromMonitor(IntPtr) method - -Reference - -## Definition - -Namespace: [Microsoft.UI](microsoft.ui.md) - -Gets the `DisplayId` that corresponds to the specified *hmonitor*, if the provided `hmonitor` is valid. - -```csharp -public static DisplayId GetDisplayIdFromMonitor(IntPtr hmonitor); -``` - -### Parameters - -`hmonitor` [IntPtr](/dotnet/api/system.intptr) - -The handle of the display monitor for which to get the `DisplayId`. - -### Returns - -[DisplayId](/windows/windows-app-sdk/api/winrt/microsoft.ui.displayid) - -The display monitor identifier that corresponds to the specified *hmonitor*, if the provided *hmonitor* is valid. Otherwise, `null`. - -## Applies to - -| Product | Introduced in | -|-|-| -|**WinUI 3**|Windows App SDK 1.0| - -## See also - -* [Win32Interop class](microsoft.ui.win32interop.md) -* [Manage app windows](../../../develop/ui-input/manage-app-windows.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonfromiconid.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonfromiconid.md deleted file mode 100644 index 25200d51df..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonfromiconid.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Win32Interop.GetIconFromIconId(IconId) method -description: Gets the icon handle that corresponds to the specified *iconId*, if the provided *iconId* is valid and the system has an `HICON` that represents the icon. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop, Win32Interop.GetDisplayIdFromMonitor, GetDisplayIdFromMonitor -ms.localizationpriority: low ---- - -# Win32Interop.GetIconFromIconId(IconId) method - -Reference - -## Definition - -Namespace: [Microsoft.UI](microsoft.ui.md) - -Gets the icon handle that corresponds to the specified *iconId*, if the provided *iconId* is valid and the system has an `HICON` that represents the icon. - -```csharp -public static IntPtr GetIconFromIconId(IconId iconId); -``` - -### Parameters - -`iconId` [IconId](/windows/windows-app-sdk/api/winrt/microsoft.ui.iconid) - -The identifier for the icon. - -### Returns - -[IntPtr](/dotnet/api/system.intptr) - -The icon handle that corresponds to the specified *iconId*, if the provided *iconId* is valid and the system has an `HICON` that represents the icon. Otherwise, `null`. - -## Applies to - -| Product | Introduced in | -|-|-| -|**WinUI 3**|Windows App SDK 1.0| - -## See also - -* [Win32Interop class](microsoft.ui.win32interop.md) -* [Manage app windows](../../../develop/ui-input/manage-app-windows.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonidfromicon.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonidfromicon.md deleted file mode 100644 index 1fe7219514..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonidfromicon.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Win32Interop.GetIconIdFromIcon(IntPtr) method -description: Gets the `IconId` that corresponds to the specified *hicon*, if the provided `hicon` is valid. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop, Win32Interop.GetDisplayIdFromMonitor, GetDisplayIdFromMonitor -ms.localizationpriority: low ---- - -# Win32Interop.GetIconIdFromIcon(IntPtr) method - -Reference - -## Definition - -Namespace: [Microsoft.UI](microsoft.ui.md) - -Gets the `IconId` that corresponds to the specified *hicon*, if the provided `hicon` is valid. - -```csharp -public static IconId GetIconIdFromIcon(IntPtr hicon); -``` - -### Parameters - -`hicon` [IntPtr](/dotnet/api/system.intptr) - -The handle of the icon for which to get the `IconId`. - -### Returns - -[IconId](/windows/windows-app-sdk/api/winrt/microsoft.ui.iconid) - -The icon identifier that corresponds to the specified *hicon*, if the provided *hicon* is valid. Otherwise, `null`. - -## Applies to - -| Product | Introduced in | -|-|-| -|**WinUI 3**|Windows App SDK 1.0| - -## See also - -* [Win32Interop class](microsoft.ui.win32interop.md) -* [Manage app windows](../../../develop/ui-input/manage-app-windows.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getmonitorfromdisplayid.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getmonitorfromdisplayid.md deleted file mode 100644 index 133ab754c3..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getmonitorfromdisplayid.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Win32Interop.GetMonitorFromDisplayId(DisplayId) method -description: Gets the display monitor handle that corresponds to the specified *displayId*, if the provided *displayId* is valid and the system has an `HMONITOR` that represents the display monitor. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop, Win32Interop.GetDisplayIdFromMonitor, GetDisplayIdFromMonitor -ms.localizationpriority: low ---- - -# Win32Interop.GetMonitorFromDisplayId(DisplayId) method - -Reference - -## Definition - -Namespace: [Microsoft.UI](microsoft.ui.md) - -Gets the display monitor handle that corresponds to the specified *displayId*, if the provided *displayId* is valid and the system has an `HMONITOR` that represents the display monitor. - -```csharp -public static IntPtr GetMonitorFromDisplayId(DisplayId displayId); -``` - -### Parameters - -`displayId` [DisplayId](/windows/windows-app-sdk/api/winrt/microsoft.ui.displayid) - -The identifier for the display. - -### Returns - -[IntPtr](/dotnet/api/system.intptr) - -The display monitor handle that corresponds to the specified *displayId*, if the provided *displayId* is valid and the system has an `HMONITOR` that represents the display monitor. Otherwise, `null`. - -## Applies to - -| Product | Introduced in | -|-|-| -|**WinUI 3**|Windows App SDK 1.0| - -## See also - -* [Win32Interop class](microsoft.ui.win32interop.md) -* [Manage app windows](../../../develop/ui-input/manage-app-windows.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowfromwindowid.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowfromwindowid.md deleted file mode 100644 index 555706c0b5..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowfromwindowid.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Win32Interop.GetWindowFromWindowId(WindowId) method -description: Gets the window handle that corresponds to the specified *windowId*, if the provided *windowId* is valid and the system has an `HWND` that represents the window. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop, Win32Interop.GetDisplayIdFromMonitor, GetDisplayIdFromMonitor -ms.localizationpriority: low ---- - -# Win32Interop.GetWindowFromWindowId(WindowId) method - -Reference - -## Definition - -Namespace: [Microsoft.UI](microsoft.ui.md) - -Gets the window handle that corresponds to the specified *windowId*, if the provided *windowId* is valid and the system has an `HWND` that represents the window. - -```csharp -public static IntPtr GetWindowFromWindowId(WindowId windowId); -``` - -### Parameters - -`windowId` [WindowId](/windows/windows-app-sdk/api/winrt/microsoft.ui.windowid) - -The identifier for the window. - -### Returns - -[IntPtr](/dotnet/api/system.intptr) - -The window handle that corresponds to the specified *windowId*, if the provided *windowId* is valid and the system has an `HWND` that represents the window. Otherwise, `null`. - -## Applies to - -| Product | Introduced in | -|-|-| -|**WinUI 3**|Windows App SDK 1.0| - -## See also - -* [Win32Interop class](microsoft.ui.win32interop.md) -* [Manage app windows](../../../develop/ui-input/manage-app-windows.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowidfromwindow.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowidfromwindow.md deleted file mode 100644 index 64d08dd734..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowidfromwindow.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Win32Interop.GetWindowIdFromWindow(IntPtr) method -description: Gets the `WindowId` that corresponds to the specified _hwnd_, if the provided `HWND` is a valid. -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop, Win32Interop.GetDisplayIdFromMonitor, GetDisplayIdFromMonitor -ms.localizationpriority: low ---- - -# Win32Interop.GetWindowIdFromWindow(IntPtr) method - -Reference - -## Definition - -Namespace: [Microsoft.UI](microsoft.ui.md) - -Gets the `WindowId` that corresponds to the specified _hwnd_, if the provided `HWND` is a valid. - -```csharp -public static WindowId GetWindowIdFromWindow(IntPtr hwnd); -``` - -### Parameters - -`hwnd` [IntPtr](/dotnet/api/system.intptr) - -The handle of the window for which to get the `WindowId`. - -### Returns - -[WindowId](/windows/windows-app-sdk/api/winrt/microsoft.ui.windowid) - -The identifier that corresponds to the specified *hwnd*, if the provided *hwnd* is valid. Otherwise, `null`. - -## Applies to - -| Product | Introduced in | -|-|-| -|**WinUI 3**|Windows App SDK 1.0| - -## See also - -* [Win32Interop class](microsoft.ui.win32interop.md) -* [Manage app windows](../../../develop/ui-input/manage-app-windows.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.md b/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.md deleted file mode 100644 index 517cb215cb..0000000000 --- a/hub/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Win32Interop class -description: The **Win32Interop** class is available in .NET as part of the [Windows App SDK](../../../windows-app-sdk/index.md). -ms.topic: article -ms.date: 02/08/2022 -keywords: windows 10, windows 11, Windows App SDK, desktop development, winui, app sdk, C#, interop -ms.localizationpriority: low ---- - -# Win32Interop class - -As a C# desktop application developer, in .NET you can make use of the **Win32Interop** class, whose methods wrap and represent several interoperability functions including the [GetWindowIdFromWindow](/windows/windows-app-sdk/api/win32/microsoft.ui.interop/nf-microsoft-ui-interop-getwindowidfromwindow) function. - -The **Win32Interop** class is available in .NET as part of the [Windows App SDK](../../../windows-app-sdk/index.md). - -## Definition - -Namespace: [Microsoft.UI](microsoft.ui.md) - -```csharp -public class Win32Interop -``` - -## Methods - -* [GetDisplayIdFromMonitor(IntPtr)](microsoft.ui.win32interop.getdisplayidfrommonitor.md) -* [GetIconFromIconId(IconId)](microsoft.ui.win32interop.geticonfromiconid.md) -* [GetIconIdFromIcon(IntPtr)](microsoft.ui.win32interop.geticonidfromicon.md) -* [GetMonitorFromDisplayId(DisplayId)](microsoft.ui.win32interop.getmonitorfromdisplayid.md) -* [GetWindowFromWindowId(WindowId)](microsoft.ui.win32interop.getwindowfromwindowid.md) -* [GetWindowIdFromWindow(IntPtr)](microsoft.ui.win32interop.getwindowidfromwindow.md) - -## Applies to - -| Product | Introduced in | -|-|-| -|**WinUI 3**|Windows App SDK 1.0| - -## See also - -* [Interop C# APIs for WinUI](../index.md) -* [Call interop APIs from a .NET app](../../../desktop/modernize/winrt-com-interop-csharp.md) \ No newline at end of file diff --git a/hub/apps/api-reference/index.md b/hub/apps/api-reference/index.md deleted file mode 100644 index da64de3dd5..0000000000 --- a/hub/apps/api-reference/index.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: API reference for Windows desktop apps -description: Learn about the APIs used to build Windows desktop apps for Windows 11 and Windows 10. -ms.topic: article -ms.date: 07/16/2024 -ms.localizationpriority: medium ---- - -# API reference for Windows desktop apps - -The following collections of API frameworks can be used to build Windows desktop apps for Windows 11 and Windows 10. - -## Windows SDK - -The [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/) ships with a corresponding release of the Windows OS and includes the latest headers, libraries, metadata, and tools for building Universal Windows Platform (UWP) and Win32 applications. - -The following API frameworks ship with the Windows SDK: - -- [WinRT API reference](/uwp/api/) -- [WinUI 2 for UWP API reference](/windows/winui/api/) -- [Win32 API reference](/windows/win32/api/) - -## Windows App SDK - -The [Windows App SDK](../windows-app-sdk/index.md) provides a comprehensive set of Windows APIs with implementations that are decoupled from the operating system (OS) and the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/). The Windows App SDK ships independently as a [NuGet package](https://www.nuget.org/packages/Microsoft.WindowsAppSDK/) on a regular basis. - -The following API frameworks ship with the Windows App SDK: - -- [WinRT API reference](/windows/windows-app-sdk/api/winrt/) -- [Win32 API reference](/windows/windows-app-sdk/api/win32) -- [COM interop APIs for WinUI reference](/windows/windows-app-sdk/api/win32/_winuicominterop/) -- [C# Interop APIs for WinUI reference](cs-interop-apis/index.md) -- [Bootstrapper C# APIs reference](cs-bootstrapper-apis/index.md) - -## .NET - -.NET is a cross-platform, open source developer platform for building many different types of applications, including Windows desktop apps. - -- [.NET API reference](/dotnet/api/) - -## Schema specifications - -Universal Windows Platform (UWP) apps include various file and XML schema specifications. - -- [Schema reference](/uwp/schemas) - -> [!IMPORTANT] -> For inquiries about Windows data access or interoperability related to the Digital Markets Act (DMA), please use the [DMA Request Form](https://go.microsoft.com/fwlink/?linkid=2271128&clcid=0x409). - diff --git a/hub/apps/api-reference/interface-members/iaccesskeymanagerstaticsdisplaymode-enterdisplaymode.md b/hub/apps/api-reference/interface-members/iaccesskeymanagerstaticsdisplaymode-enterdisplaymode.md deleted file mode 100644 index b7654c7a7c..0000000000 --- a/hub/apps/api-reference/interface-members/iaccesskeymanagerstaticsdisplaymode-enterdisplaymode.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: IAccessKeyManagerStaticsDisplayMode.EnterDisplayMode method -description: Specifies that keytips for currently valid access keys should be displayed and the access keys enabled. -ms.topic: article -ms.date: 07/28/2023 -ms.localizationpriority: low ---- - -# IAccessKeyManagerStaticsDisplayMode.EnterDisplayMode(XamlRoot) method - -## Definition - -Namespace: Windows.UI.Xaml.Input - -Specifies that keytips for currently valid access keys should be displayed and the access keys enabled. - -```csharp -[uuid(3e602318-59f6-5f2c-9752-bcbb9c907d45)] -interface IAccessKeyManagerStaticsDisplayMode -{ - void EnterDisplayMode(Windows.UI.Xaml.XamlRoot xamlRoot); -}; -``` - -### Parameters - -**`xamlRoot`** [XamlRoot](/uwp/api/windows.ui.xaml.xamlroot) - -The XamlRoot for the currently focused element. Cannot be `null`. - -## Windows requirements - -
Device familyWindows 11, version 22H2 (introduced in 10.0.22621.0)
- -## Remarks - -Calling this method has no effect if the scope is already in display mode. If another scope is in display mode, it will be exited. - -After calling this method, the [IsDisplayModeEnabled](/uwp/api/windows.ui.xaml.input.accesskeymanager.isdisplaymodeenabled) property will be `true`. - -Call [ExitDisplayMode](/uwp/api/windows.ui.xaml.input.accesskeymanager.exitdisplaymode) to disable display mode. diff --git a/hub/apps/api-reference/interface-members/ixamlsourcetransparency-isbackgroundtransparent.md b/hub/apps/api-reference/interface-members/ixamlsourcetransparency-isbackgroundtransparent.md deleted file mode 100644 index 9c6caf5421..0000000000 --- a/hub/apps/api-reference/interface-members/ixamlsourcetransparency-isbackgroundtransparent.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: IXamlSourceTransparency.IsBackgroundTransparent property -description: Gets or sets the background transparency of all DesktopWindowXamlSource objects on the current thread. -ms.topic: article -ms.date: 07/28/2023 -ms.localizationpriority: low ---- - -# IXamlSourceTransparency.IsBackgroundTransparent property - -## Definition - -Namespace: Windows.UI.Xaml - -Gets or sets a value that specifies whether the background of all DesktopWindowXamlSource objects on the current thread is transparent. - -```csharp -[uuid(06636c29-5a17-458d-8ea2-2422d997a922)] -interface IXamlSourceTransparency -{ - Boolean IsBackgroundTransparent; -}; -``` - -### Property Value - -[Boolean](/dotnet/api/system.boolean) - -`true` if the window background is transparent; otherwise, `false`. - -## Windows requirements - -
Device familyWindows 10 (introduced in 10.0.17763.0)
- -## Examples - -This example shows the [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) objects being configured to have a transparent background. - -```csharp -// Make all DesktopWindowXamlSource objects on this -// thread have a transparent background. -var xamlSourceTransparency = (IXamlSourceTransparency)Window.Current; -xamlSourceTransparency.IsBackgroundTransparent = true; -``` - -With `IsBackgroundTransparent` set to `true`, if the following is set as the content of an island, the first column will show the content of the host but the second column will be white. - -```xaml - - Column 0 text - - - Column 1 text - - -``` - -## Remarks - -The [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) class is used to host Xaml in another app. For example, you can use this to host some Xaml content in a WPF or WinForms app. See [Host WinRT XAML controls in desktop apps (XAML Islands)](/windows/apps/desktop/modernize/xaml-islands) for more info. - -By default, the XAML content has an opaque background, meaning that it's not possible to have any of the host content behind the XAML show through. (In WinUI3, this behavior is changed; the XAML always has a transparent background.) - -Set this property to `true` to give all [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) objects on the current thread a transparent background. - -This interface is retrieved from a XAML [Window](/uwp/api/windows.ui.xaml.window). - -> [!NOTE] -> Setting this property to `true` in a XAML UWP app will cause a XAML [Window](/uwp/api/Windows.UI.Xaml.Window) to be transparent as well when it's in full screen mode (when you've called [ApplicationView.TryEnterFullScreenMode](/uwp/api/Windows.UI.ViewManagement.ApplicationView.TryEnterFullScreenMode)). diff --git a/hub/apps/design/accessibility/accessibility-checklist.md b/hub/apps/design/accessibility/accessibility-checklist.md deleted file mode 100644 index e8eef47b48..0000000000 --- a/hub/apps/design/accessibility/accessibility-checklist.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -description: Provides a checklist to help you ensure that your Windows app is accessible. -ms.assetid: BB8399E2-7013-4F77-AF2C-C1A0E5412856 -title: Accessibility checklist -label: Accessibility checklist -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: checklist -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Accessibility checklist - -Provides a checklist to help you ensure that your Windows app is accessible . - -Here we provide a checklist you can use to ensure that your app is accessible. - -1. Set the accessible name (required) and description (optional) for content and interactive UI elements in your app. - - An accessible name is a short, descriptive text string that a screen reader uses to announce a UI element. Some UI elements such as [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) and [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox) promote their text content as the default accessible name; see [Basic accessibility information](basic-accessibility-information.md#name_from_inner_text). - - You should set the accessible name explicitly for images or other controls that do not promote inner text content as an implicit accessible name. You should use labels for form elements so that the label text can be used as a [**LabeledBy**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms591292(v=vs.95)) target in the Microsoft UI Automation model for correlating labels and inputs. If you want to provide more UI guidance for users than is typically included in the accessible name, accessible descriptions and tooltips help users understand the UI. - - For more info, see [Accessible name](basic-accessibility-information.md#accessible_name) and [Accessible description](basic-accessibility-information.md). - -2. Implement keyboard accessibility: - - * Test the default tab index order for a UI. Adjust the tab index order if necessary, which may require enabling or disabling certain controls, or changing the default values of [**TabIndex**](/uwp/api/windows.ui.xaml.controls.control.tabindex) on some of the UI elements. - * Use controls that support arrow-key navigation for composite elements. For default controls, the arrow-key navigation is typically already implemented. - * Use controls that support keyboard activation. For default controls, particularly those that support the UI Automation [**Invoke**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IInvokeProvider) pattern, keyboard activation is typically available; check the documentation for that control. - * Set access keys or implement accelerator keys for specific parts of the UI that support interaction. - * For any custom controls that you use in your UI, verify that you have implemented these controls with correct [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) support for activation, and defined overrides for key handling as needed to support activation, traversal and access or accelerator keys. - - For more info, see [Keyboard interactions](../input/keyboard-interactions.md). - -3. Ensure text is a readable size - - * Windows includes various accessibility tools and settings that users can take advantage of and adjust to their own needs and preferences for reading text. These include: - * The Magnifier tool, which enlarges a selected area of the UI. You should ensure the layout of text in your app doesn't make it difficult to use Magnifier for reading. - * Global scale and resolution settings in **Settings->System->Display->Scale and layout**. Exactly which sizing options are available can vary as this depends on the capabilities of the display device. - * Text size settings in **Settings->Ease of access->Display**. Adjust the **Make text bigger** setting to specify only the size of text in supporting controls across all applications and screens (all UWP text controls support the text scaling experience without any customization or templating). - > [!NOTE] - > The **Make everything bigger** setting lets a user specify their preferred size for text and apps in general on their primary screen only. - -4. Visually verify your UI to ensure that the text contrast is adequate, elements render correctly in the high-contrast themes, and colors are used correctly. - - * Use a color analyzer tool to verify that the visual text contrast ratio is at least 4.5:1. - * Switch to a high contrast theme and verify that the UI for your app is readable and usable. - * Ensure that your UI doesn’t use color as the only way to convey information. - - For more info, see [High-contrast themes](high-contrast-themes.md) and [Accessible text requirements](accessible-text-requirements.md). - -5. Run accessibility tools, address reported issues, and verify the screen reading experience. - - Use tools such as [**Inspect**](/windows/desktop/WinAuto/inspect-objects) to verify programmatic access, run diagnostic tools such as [**AccChecker**](/windows/desktop/WinAuto/ui-accessibility-checker) to discover common errors, and verify the screen reading experience with Narrator. - - For more info, see [Accessibility testing](accessibility-testing.md). - -6. Make sure your app manifest settings follow accessibility guidelines. - -7. Declare your app as accessible in the Microsoft Store. - - If you implemented the baseline accessibility support, declaring your app as accessible in the Microsoft Store can help reach more customers and get some additional good ratings. - - For more info, see [Accessibility in the Store](accessibility-in-the-store.md). - -## Related topics - -* [Accessible text requirements](accessible-text-requirements.md) -* [Text scaling](../input/text-scaling.md) -* [Accessibility](accessibility.md) -* [Design for accessibility](./accessibility-overview.md) -* [Practices to avoid](practices-to-avoid.md) diff --git a/hub/apps/design/accessibility/accessibility-in-the-store.md b/hub/apps/design/accessibility/accessibility-in-the-store.md deleted file mode 100644 index 269564d95f..0000000000 --- a/hub/apps/design/accessibility/accessibility-in-the-store.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -description: Describes the requirements for declaring your Windows app as accessible in the Microsoft Store. -ms.assetid: 59FA3B87-75A6-4B30-BA7C-A0E769D68050 -title: Accessibility in the Store -label: Accessibility in the Store -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Accessibility in the Store - - - -Describes the requirements for declaring your Windows app as accessible in the Microsoft Store. - -While submitting your app to the Microsoft Store for certification, you can declare your app as accessible. Declaring your app as accessible makes it easier to discover for users who are interested in accessible apps, such as users who have visual impairments. Users discover accessible apps by using the **Accessible** filter while searching the Microsoft Store. Declaring your app as accessible also adds the **Accessible** tag to your app’s description. - -By declaring your app as accessible, you state that it has the [basic accessibility information](basic-accessibility-information.md) that users need for primary scenarios using one or more of the following: - -* The keyboard. -* A high contrast theme. -* A variable dots per inch (dpi) setting. -* Common assistive technology such as the Windows accessibility features, including Narrator, Magnifier, and On-Screen Keyboard. - -You should declare your app as accessible if you built and tested it for accessibility. This means that you did the following: - -* Set all the relevant accessibility information for UI elements, including name, role, value, and so on. -* Implemented full keyboard accessibility, enabling the user to: - * Accomplish primary app scenarios by using only the keyboard. - * Tab among UI elements in a logical order. - * Navigate among UI elements within a control by using the arrow keys. - * Use keyboard shortcuts to reach primary app functionality. - * Use Narrator touch gestures for Tab and arrow equivalency for devices with no keyboard. -* Ensured that your app UI is visually accessible: has a minimum text contrast ratio of 4.5:1, does not rely on color alone to convey information, and so on. -* Used accessibility testing tools such as [**Inspect**](/windows/desktop/WinAuto/inspect-objects) and [**UIAVerify**](/windows/desktop/WinAuto/ui-automation-verify) to verify your accessibility implementation, and resolved all priority 1 errors reported by such tools. -* Verified your app’s primary scenarios from end to end by using Narrator, Magnifier, On-Screen Keyboard, a high contrast theme, and adjusted dpi settings. - -See the [Accessibility checklist](accessibility-checklist.md) for a review of these procedures and links to resources that will help you accomplish them. - - - -## Related topics -* [Accessibility](accessibility.md) diff --git a/hub/apps/design/accessibility/accessibility-overview.md b/hub/apps/design/accessibility/accessibility-overview.md deleted file mode 100644 index 92f92157c5..0000000000 --- a/hub/apps/design/accessibility/accessibility-overview.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -description: This article is an overview of the concepts and technologies related to accessibility scenarios for Windows apps. -ms.assetid: AA053196-F331-4CBE-B032-4E9CBEAC699C -title: Accessibility overview -label: Accessibility overview -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: concept-article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- - -# Accessibility overview - -This article is an overview of the concepts and technologies related to accessibility scenarios for Windows apps. - -## Accessibility and your app - -There are many possible disabilities or impairments, including limitations in mobility, vision, color perception, hearing, speech, cognition, and literacy. However, you can address most requirements by following the guidelines offered here. This means providing: - -* Support for keyboard interactions and screen readers. -* Support for user customization, such as font, zoom setting (magnification), color, and high-contrast settings. -* Alternatives or supplements for parts of your UI. - -Controls for XAML provide built-in keyboard support and support for assistive technologies such as screen readers, which take advantage of accessibility frameworks that already support UWP apps, HTML, and other UI technologies. This built-in support enables a basic level of accessibility that you can customize with very little work, by setting just a handful of properties. If you are creating your own custom XAML components and controls, you can also add similar support to those controls by using the concept of an *automation peer*. - -In addition, data binding, style, and template features make it easy to implement support for dynamic changes to display settings and text for alternative UIs. - -## UI Automation - -Accessibility support comes primarily from the integrated support for the Microsoft UI Automation framework. That support is provided through base classes and the built-in behavior of the class implementation for control types, and an interface representation of the UI Automation provider API. Each control class uses the UI Automation concepts of automation peers and automation patterns that report the control's role and content to UI Automation clients. The app is treated as a top-level window by UI Automation, and through the UI Automation framework all the accessibility-relevant content within that app window is available to a UI Automation client. For more info about UI Automation, see [UI Automation Overview](/windows/desktop/WinAuto/uiauto-uiautomationoverview). - -## Assistive technology - -Many user accessibility needs are met by assistive technology products installed by the user or by tools and settings provided by the operating system. This includes functionality such as screen readers, screen magnification, and high-contrast settings. - -Assistive technology products include a wide variety of software and hardware. These products work through the standard keyboard interface and accessibility frameworks that report information about the content and structure of a UI to screen readers and other assistive technologies. Examples of assistive technology products include: - -* The On-Screen Keyboard, which enables people to use a pointer in place of a keyboard to type text. -* Voice-recognition software, which converts spoken words into typed text. -* Screen readers, which convert text into spoken words or other forms such as Braille. -* The Narrator screen reader, which is specifically part of Windows. Narrator has a touch mode, which can perform screen reading tasks by processing touch gestures, for when there is no keyboard available. -* Programs or settings that adjust the display or areas of it, for example high contrast themes, dots per inch (dpi) settings of the display, or the Magnifier tool. - -Apps that have good keyboard and screen reader support usually work well with various assistive technology products. In many cases, a UWP app works with these products without additional modification of information or structure. However, you may want to modify some settings for optimal accessibility experience or to implement additional support. - -Some of the options that you can use for testing basic accessibility scenarios with assistive technologies are listed in [Accessibility testing](accessibility-testing.md). - -## Screen reader support and basic accessibility information - -Screen readers provide access to the text in an app by rendering it in some other format, such as spoken language or Braille output. The exact behavior of a screen reader depends on the software and on the user's configuration of it. - -For example, some screen readers read the entire app UI when the user starts or switches to the app being viewed, which enables the user to receive all of the available informational content before attempting to navigate it. Some screen readers also read the text associated with an individual control when it receives focus during tab navigation. This enables users to orient themselves as they navigate among the input controls of an application. Narrator is an example of a screen reader that provides both behaviors, depending on user choice. - -The most important information that a screen reader or any other assistive technology needs in order to help users understand or navigate an app is an *accessible name* for the element parts of the app. In many cases, a control or element already has an accessible name that is calculated from other property values that you have otherwise provided. The most common case in which you can use an already-calculated name is with an element that supports and displays inner text. For other elements, you sometimes need to account for other ways to provide an accessible name by following best practices for element structure. And sometimes you need to provide a name that is explicitly intended as the accessible name for app accessibility. For a listing of how many of these calculated values work in common UI elements, and for more info about accessible names in general, see [Basic accessibility information](basic-accessibility-information.md). - -There are several other automation properties available (including the keyboard properties described in the next section). However, not all screen readers support all automation properties. In general, you should set all appropriate automation properties and test to provide the widest possible support for screen readers. - -## Keyboard support - -To provide good keyboard support, you must ensure that every part of your application can be used with a keyboard. If your app uses mostly the standard controls and doesn't use any custom controls, you are most of the way there already. The basic XAML control model provides built-in keyboard support including tab navigation, text input, and control-specific support. The elements that serve as layout containers (such as panels) use the layout order to establish a default tab order. That order is often the correct tab order to use for an accessible representation of the UI. If you use [**ListBox**](/uwp/api/Windows.UI.Xaml.Controls.ListBox) and [**GridView**](/uwp/api/Windows.UI.Xaml.Controls.GridView) controls to display data, they provide built-in arrow-key navigation. Or if you use a [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) control, it already handles the Spacebar or Enter keys for button activation. - -For more info about all the aspects of keyboard support, including tab order and key-based activation or navigation, see [Keyboard accessibility](keyboard-accessibility.md). - -## Media and captioning - -You typically display audiovisual media through a [**MediaElement**](/uwp/api/Windows.UI.Xaml.Controls.MediaElement) object. You can use **MediaElement** APIs to control the media playback. For accessibility purposes, provide controls that enable users to play, pause, and stop the media as needed. Sometimes, media includes additional components that are intended for accessibility, such as captioning or alternative audio tracks that include narrative descriptions. - -## Accessible text - -Three main aspects of text are relevant to accessibility: - -* Tools must determine whether the text is to be read as part of a tab-sequence traversal or only as part of an overall document representation. You can help control this determination by choosing the appropriate element for displaying the text or by adjusting properties of those text elements. Each text element has a specific purpose, and that purpose often has a corresponding UI Automation role. Using the wrong element can result in reporting the wrong role to UI Automation and creating a confusing experience for an assistive technology user. -* Many users have sight limitations that make it difficult for them to read text unless it has adequate contrast against the background. How this impacts the user is not intuitive for app designers who do not have that sight limitation. For example, for color-blind users, poor color choices in the design can prevent some users from being able to read the text. Accessibility recommendations that were originally made for web content define standards for contrast that can avoid these problems in apps as well. For more info, see [Accessible text requirements](accessible-text-requirements.md). -* Many users have difficulty reading text that is simply too small. You can prevent this issue by making the text in your app's UI reasonably large in the first place. However, that's challenging for apps that display large quantities of text, or text interspersed with other visual elements. In such cases, make sure that the app correctly interacts with the system features that can scale up the display, so that any text in apps scales up along with it. (Some users change dpi values as an accessibility option. That option is available from **Make things on the screen larger** in **Ease of Access**, which redirects to a **Control Panel** UI for **Appearance and Personalization** / **Display**.) - -## Supporting high-contrast themes - -UI controls use a visual representation that is defined as part of a XAML resource dictionary of themes. One or more of these themes is specifically used when the system is set for high contrast. When the user switches to high contrast, by looking up the appropriate theme from a resource dictionary dynamically, all your UI controls will use an appropriate high-contrast theme too. Just make sure that you haven't disabled the themes by specifying an explicit style or using another styling technique that prevents the high-contrast themes from loading and overriding your style changes. For more info, see [High-contrast themes](high-contrast-themes.md). - -## Design for alternative UI - -When you design your apps, consider how they may be used by people with limited mobility, vision, and hearing. Because assistive technology products make extensive use of standard UI, it is particularly important to provide good keyboard and screen-reader support even if you make no other adjustments for accessibility. - -In many cases, you can convey essential information by using multiple techniques to widen your audience. For example, you can highlight information using both icon and color information to help users who are color blind, and you can display visual alerts along with sound effects to help users who are deaf or hard of hearing. - -If necessary, you can provide alternative, accessible user interface elements that completely remove nonessential elements and animations, and provide other simplifications to streamline the user experience. The following code example demonstrates how to display one [**UserControl**](/uwp/api/Windows.UI.Xaml.Controls.UserControl) instance in place of another depending on a user setting. - -XAML - -```xml - - - - Show Accessible UI - - - - - - - -``` - -Visual Basic - -```vb -Private Sub ShowAccessibleUICheckBox_Click(ByVal sender As Object, - ByVal e As RoutedEventArgs) - - If (ShowAccessibleUICheckBox.IsChecked.Value) Then - ContentBlock.Content = New AccessibleContentPage() - Else - ContentBlock.Content = New ContentPage() - End If -End Sub -``` - -C# - -```csharp -private void ShowAccessibleUICheckBox_Click(object sender, RoutedEventArgs e) -{ - if ((sender as CheckBox).IsChecked.Value) - { - ContentBlock.Content = new AccessibleContentPage(); - } - else - { - ContentBlock.Content = new ContentPage(); - } -} -``` - -## Verification and publishing - -For more info about accessibility declarations and publishing your app, see [Accessibility in the Store](accessibility-in-the-store.md). - -> [!NOTE] -> Declaring the app as accessible is only relevant to the Microsoft Store. - -## Assistive technology support in custom controls - -When you create a custom control, we recommend that you also implement or extend one or more [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) subclasses to provide accessibility support. In some cases, so long as you use the same peer class as was used by the base control class, the automation support for your derived class is adequate at a basic level. However, you should test this, and implementing a peer is still recommended as a best practice so that the peer can correctly report the class name of your new control class. Implementing a custom automation peer has a few steps involved. For more info, see [Custom automation peers](custom-automation-peers.md). - -## Assistive technology support in apps that support XAML / Microsoft DirectX interop - -Microsoft DirectX content that's hosted in a XAML UI (using [**SwapChainPanel**](/uwp/api/Windows.UI.Xaml.Controls.SwapChainPanel) or [**SurfaceImageSource**](/uwp/api/Windows.UI.Xaml.Media.Imaging.SurfaceImageSource)) is not accessible by default. The [XAML SwapChainPanel DirectX interop sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208.1%20Store%20app%20samples/%5BC%23%5D-Windows%208.1%20Store%20app%20samples/XAML%20SwapChainPanel%20DirectX%20interop%20sample) shows how to create UI Automation peers for the hosted DirectX content. This technique makes the hosted content accessible through UI Automation. - -## Examples - -> [!TIP] -> [!div class="nextstepaction"] -> Open the WinUI 3 Gallery app and see the following Accessibility principles in action: -> - [Screen reader support](winui3gallery://item/AccessibilityScreenReader) -> - [Keyboard support](winui3gallery://item/AccessibilityKeyboard) -> - [Color contrast](winui3gallery://item/AccessibilityColorContrast) - -> The **WinUI 3 Gallery** app includes interactive examples of most WinUI 3 controls, features, and functionality. Get the app from the [Microsoft Store](https://apps.microsoft.com/detail/9P3JFPWWDZRC) or get the source code on [GitHub](https://github.com/microsoft/WinUI-Gallery) - -## Related topics - - -* [**Windows.UI.Xaml.Automation**](/uwp/api/Windows.UI.Xaml.Automation) -* [Design for accessibility]() -* [XAML accessibility sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/master/Official%20Windows%20Platform%20Sample/XAML%20accessibility%20sample) -* [Accessibility](accessibility.md) -* [Get started with Narrator](https://support.microsoft.com/help/22798/windows-10-complete-guide-to-narrator) diff --git a/hub/apps/design/accessibility/accessibility-testing.md b/hub/apps/design/accessibility/accessibility-testing.md deleted file mode 100644 index 42302788e4..0000000000 --- a/hub/apps/design/accessibility/accessibility-testing.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -description: Testing procedures to follow to ensure that your Windows app is accessible. -ms.assetid: 272D9C9E-B179-4F5A-8493-926D007A0225 -title: Accessibility testing -label: Accessibility testing -template: detail.hbs -ms.date: 08/12/2022 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- - -# Accessibility testing - -This topic describes various tools and procedures to help you verify the accessibility implementation of your Windows and web applications. - -## Successful user experiences - -Programmatic access and keyboard access are critical requirements for supporting accessibility in your application. Testing the accessibility of your Windows applications, assistive technology (AT) tools, and UI frameworks is crucial to ensure a successful user experience for people with various disabilities and limitations (including vision, learning, dexterity/mobility, and language/communication disabilities), or those who simply prefer using a keyboard. - -Without adequate support for accessible technology (AT) such as screen-readers and on-screen keyboards, users with vision, learning, dexterity/mobility, and language/communication disabilities or limitations (and users who just prefer using the keyboard) could find it difficult, if not impossible, to use your application. - -## Accessibility testing tools - -### Accessibility Insights - -[Accessibility Insights](https://accessibilityinsights.io/) helps developers find and fix accessibility issues in both websites and Windows applications. - -> [!VIDEO https://www.youtube.com/embed/Xlvl91Q3c_8] - -- [Accessibility Insights for Windows](https://accessibilityinsights.io/docs/windows/overview) helps developers find and fix accessibility issues in Windows apps. The tool supports three primary scenarios: - - **Live Inspect** lets developers verify that an element in an app has the right UI Automation properties simply by hovering over the element or setting keyboard focus on it. - - **FastPass** - a lightweight, two-step process that helps developers identify common, high-impact accessibility issues in less than five minutes. - - **Troubleshooting** allows you to diagnose and fix specific accessibility issues. -- [Accessibility Insights for Web](https://accessibilityinsights.io/docs/web/overview) is an extension for Chrome and [Microsoft Edge Insider](https://www.microsoftedgeinsider.com) that helps developers find and fix accessibility issues in web apps and sites. It supports two primary scenarios: - - **FastPass** - a lightweight, two-step process that helps developers identify common, high-impact accessibility issues in less than five minutes. - - **Assessment** - lets anyone verify that a web site is 100% compliant with accessibility standards and guidelines. [Accessibility Insights](https://accessibilityinsights.io/) also lets you review UI Automation elements, properties, control patterns, and events (similar to the [Inspect](/windows/desktop/winauto/inspect-objects) and [AccEvent](/windows/desktop/winauto/accessible-event-watcher) legacy tools described in the following section). - -### Legacy testing tools - -> [!NOTE] -> The tools described here are still available in the Windows SDK, but we strongly recommend transitioning to [Accessibility Insights](https://accessibilityinsights.io/). - -The Windows Software Development Kit (SDK) includes several accessibility testing tools, including [**AccScope**](/windows/desktop/WinAuto/accscope), [**Inspect**](/windows/desktop/WinAuto/inspect-objects) and [**UI Accessibility Checker**](/windows/desktop/WinAuto/ui-accessibility-checker), among others. - -You can launch the following accessibility testing tools either from a Microsoft Visual Studio command prompt or by navigating to the *bin* folder of wherever the Windows SDK is installed on your development machine. - -### **AccScope** - -The [**AccScope**](/windows/desktop/WinAuto/accscope) Enables visual evaluation of an application's accessibility during the early design and development phases. AccScope is specifically intended for testing Narrator accessibility scenarios and uses the UI Automation information provided by an app to show where accessibility can be improved. - -### **Inspect** - -[**Inspect**](/windows/desktop/WinAuto/inspect-objects) enables you to select any UI element and view its accessibility data. You can view Microsoft UI Automation properties and control patterns and test the navigational structure of the automation elements in the UI Automation tree. It is especially useful for ensuring properties and control patterns are set correctly when extending a common control or creating a custom control. - -Use **Inspect** as you develop the UI to verify how accessibility attributes are exposed in UI Automation. In some cases the attributes come from the UI Automation support that is already implemented for default XAML controls. In other cases the attributes come from specific values that you have set in your XAML markup, as [**AutomationProperties**](/uwp/api/windows.ui.xaml.automation.automationproperties) attached properties. - -The following image shows the [**Inspect**](/windows/desktop/WinAuto/inspect-objects) tool querying the UI Automation properties of the **Edit** menu element in Notepad. - -![Screen shot of the Inspect tool.](./images/inspect.png) - -### UI Accessibility Checker - -**UI Accessibility Checker (AccChecker)** helps you discover potential accessibility issues at run time. AccChecker includes verification checks for UI Automation, Microsoft Active Accessibility, and Accessible Rich Internet Applications (ARIA). It can provide a static check for errors such as missing names, tree issues and more. It helps verify programmatic access and includes advanced features for automating accessibility testing. You can run **AccChecker** in UI or command line mode. To run the UI mode tool, open the *AccChecker* folder in the Windows SDK *bin* folder, run acccheckui.exe, and click the **Help** menu. - -### UI Automation Verify - -**UI Automation Verify (UIA Verify)** is a framework for manual and automated testing of the UI Automation implementation in a control or application (results can be logged). **UIA Verify** can integrate into the test code and conduct regular, automated testing or spot checks of UI Automation scenarios and is useful for verifying that changes to applications with established features do not have new issues or regressions. **UIA Verify** can be found in the *UIAVerify* subfolder of the Windows SDK *bin* folder. - -### Accessible Event Watcher - -[**Accessible Event Watcher (AccEvent)**](/windows/desktop/WinAuto/accessible-event-watcher) tests whether an app's UI elements fire proper UI Automation and Microsoft Active Accessibility events when UI changes occur. Changes in the UI can occur when the focus changes, or when a UI element is invoked, selected, or has a state or property change. AccEvent is typically used to debug issues and to validate that custom and extended controls are working correctly. - -## Accessibility testing procedures - -### Test keyboard accessibility - -The best way to test your keyboard accessibility is to unplug your mouse or use the On-Screen Keyboard if you are using a tablet device. Test keyboard accessibility navigation by using the _Tab_ key. You should be able to cycle through all interactive UI elements by using _Tab_ key. For composite UI elements, verify that you can navigate among the parts of elements by using the arrow keys. For example, you should be able to navigate lists of items using keyboard keys. Finally, make sure that you can invoke all interactive UI elements with the keyboard once those elements have focus, typically by using the Enter or Spacebar key. - -### Verify the contrast ratio of visible text - -Use color contrast tools to verify that the visible text contrast ratio is acceptable. The exceptions include inactive UI elements, and logos or decorative text that doesn’t convey any information and can be rearranged without changing the meaning. See [Accessible text requirements](accessible-text-requirements.md) for more information on contrast ratio and exceptions. See [Techniques for WCAG 2.0 G18 (Resources section)](https://www.w3.org/TR/WCAG20-TECHS/G18.html#G18-resources) for tools that can test contrast ratios. - -> [!NOTE] -> Some of the tools listed by Techniques for WCAG 2.0 G18 can't be used interactively with a UWP app. You may need to enter foreground and background color values manually in the tool, make screen captures of app UI and then run the contrast ratio tool over the screen capture image, or run the tool while opening source bitmap files in an image editing program rather than while that image is loaded by the app. - -### Verify your app in high contrast - -Use your app while a high-contrast theme is active to verify that all the UI elements display correctly. All text should be readable, and all images should be clear. Adjust the XAML theme-dictionary resources or control templates to correct any theme issues that come from controls. In cases where prominent high-contrast issues are not coming from themes or controls (such as from image files), provide separate versions to use when a high-contrast theme is active. - -### Verify your app with display settings - -Use the system display options that adjust the display's dots per inch (dpi) value, and ensure that your app UI scales correctly when the dpi value changes. (Some users change dpi values as an accessibility option, it's available from **Ease of Access** as well as display properties.) If you find any issues, follow the [Guidelines for layout scaling](https://developer.microsoft.com/windows/apps/design) and provide additional resources for different scaling factors. - -### Verify main app scenarios by using Narrator - -Use Narrator to test the screen reading experience for your app. - -**Use these steps to test your app using Narrator with a mouse and keyboard:** - -1. Start Narrator by pressing _Windows logo key + Ctrl + Enter_. In versions prior to Windows 10 version 1607, use _Windows logo key + Enter_ to start Narrator. -2. Navigate your app with the keyboard by using the _Tab_ key, the arrow keys, and the _Caps Lock + arrow keys_. -3. As you navigate your app, listen as Narrator reads the elements of your UI and verify the following: - - For each control, ensure that Narrator reads all visible content. Also ensure that Narrator reads each control's name, any applicable state (checked, selected, and so on), and the control type (button, check box, list item, and so on). - - If the element is interactive, verify that you can use Narrator to invoke its action by pressing _Caps Lock + Enter_. - - For each table, ensure that Narrator correctly reads the table name, the table description (if available), and the row and column headings. -4. Press _Caps Lock + Shift + Enter_ to search your app and verify that all of your controls appear in the search list, and that the control names are localized and readable. -5. Turn off your monitor and try to accomplish main app scenarios by using only the keyboard and Narrator. To get the full list of Narrator commands and shortcuts, press _Caps Lock + F1_. - -Starting with Windows 10 version 1607, we introduced a new developer mode in Narrator. Turn on developer mode when Narrator is already running by pressing _Control + Caps Lock + F12_. When developer mode is enabled, the screen will be masked and will highlight only the accessible objects and the associated text that is exposed programmatically to Narrator. This gives a you a good visual representation of the information that is exposed to Narrator. - -**Use these steps to test your app using Narrator's touch mode:** - -> [!NOTE] -> Narrator automatically enters touch mode on devices that support 4+ contacts. Narrator doesn't support multi-monitor scenarios or multi-touch digitizers on the primary screen. - -1. Get familiar with the UI and explore the layout. - - **Navigate through the UI by using single-finger swipe gestures.** Use left or right swipes to move between items, and up or down swipes to change the category of items being navigated. Categories include all items, links, tables, headers, and so on. Navigating with single-finger swipe gestures is similar to navigating with _Caps Lock + Arrow_. - - **Use tab gestures to navigate through focusable elements.** A three-finger swipe to the right or left is the same as navigating with _Tab_ and _Shift + Tab_ on a keyboard. - - **Spatially investigate the UI with a single finger.** Drag a single finger up and down, or left and right, to have Narrator read the items under your finger. You can use the mouse as an alternative because it uses the same hit-testing logic as dragging a single finger. - - **Read the entire window and all its contents with a three finger swipe up**. This is equivalent to using _Caps Lock + W_. - - If there is important UI that you cannot reach, you may have an accessibility issue. - -2. Interact with a control to test its primary and secondary actions, and its scrolling behavior. - - Primary actions include things like activating a button, placing a text caret, and setting focus to the control. Secondary actions include actions such as selecting a list item or expanding a button that offers multiple options. - - - To test a primary action: Double tap, or press with one finger and tap with another. - - To test a secondary action: Triple tap, or press with one finger and double tap with another. - - To test scrolling behavior: Use two-finger swipes to scroll in the desired direction. - - Some controls provide additional actions. To display the full list, enter a single four-finger tap. - - If a control responds to the mouse or keyboard but does not respond to a primary or secondary touch interaction, the control might need to implement additional [UI Automation](/windows/desktop/WinAuto/entry-uiauto-win32) control patterns. - -You should also consider using the [**AccScope**](/windows/desktop/WinAuto/accscope) tool to test Narrator accessibility scenarios with your app. The [**AccScope tool topic**](/windows/desktop/WinAuto/accscope) describes how to configure **AccScope** to test Narrator scenarios. - -### Examine the UI Automation representation for your app - -Several of the UI Automation testing tools mentioned previously provide a way to view your app in a way that deliberately does not consider what the app looks like, and instead represents the app as a structure of UI Automation elements. This is how UI Automation clients, mainly assistive technologies, will be interacting with your app in accessibility scenarios. - -The [**AccScope**](/windows/desktop/WinAuto/accscope) tool provides a particularly interesting view of your app because you can see the UI Automation elements either as a visual representation or as a list. If you use the visualization, you can drill down into the parts in a way that you'll be able to correlate with the visual appearance of your app's UI. You can even test the accessibility of your earliest UI prototypes before you've assigned all the logic to the UI, making sure that both the visual interaction and accessibility-scenario navigation for your app is in balance. - -One aspect that you can test is whether there are elements appearing in the UI Automation element view that you don't want to appear there. If you find elements you want to omit from the view, or conversely if there are elements missing, you can use the [**AutomationProperties.AccessibilityView**](/uwp/api/windows.ui.xaml.automation.automationproperties.accessibilityviewproperty) XAML attached property to adjust how XAML controls appear in accessibility views. After you've looked at the basic accessibility views, this is also a good opportunity to recheck your tab sequences or spatial navigation as enabled by arrow keys to make sure users can reach each of the parts that are interactive and exposed in the control view. - -## Related topics - -- [Accessibility](accessibility.md) -- [Practices to avoid](practices-to-avoid.md) -- [UI Automation](/windows/desktop/WinAuto/entry-uiauto-win32) -- [Accessibility in Windows](https://www.microsoft.com/accessibility/) -- [Get started with Narrator](https://support.microsoft.com/help/22798/windows-10-complete-guide-to-narrator) diff --git a/hub/apps/design/accessibility/accessibility.md b/hub/apps/design/accessibility/accessibility.md deleted file mode 100644 index 3b7e2cba54..0000000000 --- a/hub/apps/design/accessibility/accessibility.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -description: Introduces accessibility concepts that relate to Windows apps. -ms.assetid: C89D79C2-B830-493D-B020-F3FF8EB5FFDD -title: Accessibility -label: Accessibility -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- - -# Accessibility - -Accessibility is about building experiences that make your Windows application usable by people who use technology in a wide range of environments and approach your UI with a range of needs and experiences. For some situations, accessibility requirements are imposed by law. However, it's a good idea to address accessibility issues regardless of legal requirements so that your apps have the largest possible audience. - -> There's also a Microsoft Store declaration regarding accessibility for your app! - -| Article | Description | -|---------|-------------| -| [Accessibility overview](accessibility-overview.md) | This article is an overview of the concepts and technologies related to accessibility scenarios for Windows apps. | -| [Designing inclusive software](designing-inclusive-software.md) | Learn about evolving inclusive design with Windows apps for Windows. Design and build inclusive software with accessibility in mind. | -| [Developing inclusive Windows apps](developing-inclusive-windows-apps.md) | This article is a roadmap for developing accessible Windows apps. | -| [Accessibility testing](accessibility-testing.md) | Testing procedures to follow to ensure that your Windows app is accessible. | -| [Accessibility in the Store](accessibility-in-the-store.md) | Describes the requirements for declaring your Windows app as accessible in the Microsoft Store. | -| [Accessibility checklist](accessibility-checklist.md) | Provides a checklist to help you ensure that your Windows app is accessible. | -| [Expose basic accessibility information](basic-accessibility-information.md) | Basic accessibility info is often categorized into name, role, and value. This topic describes code to help your app expose the basic information that assistive technologies need. | -| [Keyboard accessibility](keyboard-accessibility.md) | If your app does not provide good keyboard access, users who are blind or have mobility issues can have difficulty using your app or may not be able to use it at all. | -| [Screen readers and hardware system buttons](system-button-narration.md) | Screen-readers, such as [Narrator](https://support.microsoft.com/en-us/help/22798/windows-10-complete-guide-to-narrator), must be able to recognize and handle hardware system button events and communicate their state to users. In some cases, the screen reader might need to handle button events exclusively and not let them bubble up to other handlers. | -| [Landmarks and Headings](landmarks-and-headings.md) | Landmarks and headings define sections of a user interface that aid in efficient navigation for users of assistive technology such as screen readers. | -| [High-contrast themes](high-contrast-themes.md) | Describes the steps needed to ensure your Windows app is usable when a high-contrast theme is active. | -| [Accessible text requirements](accessible-text-requirements.md) | This topic describes best practices for accessibility of text in an app, by assuring that colors and backgrounds satisfy the necessary contrast ratio. This topic also discusses the Microsoft UI Automation roles that text elements in a Windows app can have, and best practices for text in graphics. | -| [Accessibility practices to avoid](practices-to-avoid.md) | Lists the practices to avoid if you want to create an accessible Windows app. | -| [Custom automation peers](custom-automation-peers.md) | Describes the concept of automation peers for UI Automation, and how you can provide automation support for your own custom UI class. | -| [Control patterns and interfaces](control-patterns-and-interfaces.md) | Lists the Microsoft UI Automation control patterns, the classes that clients use to access them, and the interfaces providers use to implement them. | - -## Related topics -* [**Windows.UI.Xaml.Automation**](/uwp/api/Windows.UI.Xaml.Automation) -* [Get started with Narrator](https://support.microsoft.com/help/22798/windows-10-complete-guide-to-narrator) diff --git a/hub/apps/design/accessibility/accessible-text-requirements.md b/hub/apps/design/accessibility/accessible-text-requirements.md deleted file mode 100644 index a499e1f0ea..0000000000 --- a/hub/apps/design/accessibility/accessible-text-requirements.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -description: This topic describes best practices for accessibility of text in an app, by assuring that colors and backgrounds satisfy the necessary contrast ratio. -ms.assetid: BA689C76-FE68-4B5B-9E8D-1E7697F737E6 -title: Accessible text requirements -label: Accessible text requirements -template: detail.hbs -ms.date: 11/27/2024 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Accessible text requirements - - - - -This topic describes best practices for accessibility of text in an app, by assuring that colors and backgrounds satisfy the necessary contrast ratio. This topic also discusses the Microsoft UI Automation roles that text elements in a Universal Windows Platform (UWP) app can have, and best practices for text in graphics. - - - - -## Contrast ratios -Although users always have the option to switch to a high-contrast mode, your app design for text should regard that option as a last resort. A much better practice is to make sure that your app text meets certain established guidelines for the level of contrast between text and its background. Evaluation of the level of contrast is based on deterministic techniques that do not consider color hue. For example, if you have red text on a green background, that text might not be readable to someone with a color blindness impairment. Checking and correcting the contrast ratio can prevent these types of accessibility issues. - -The recommendations for text contrast documented here are based on a web accessibility standard, [G18: Ensuring that a contrast ratio of at least 4.5:1 exists between text (and images of text) and background behind the text](https://www.w3.org/TR/WCAG20-TECHS/G18.html). This guidance exists in the *W3C Techniques for WCAG 2.0* specification. - -To be considered accessible, visible text must have a minimum luminosity contrast ratio of 4.5:1 against the background. Exceptions include logos and incidental text, such as text that is part of an inactive UI component. - -Text that is decorative and conveys no information is excluded. For example, if random words are used to create a background, and the words can be rearranged or substituted without changing meaning, the words are considered to be decorative and do not need to meet this criterion. - -Use color contrast tools to verify that the visible text contrast ratio is acceptable. See [Techniques for WCAG 2.0 G18 (Resources section)](https://www.w3.org/TR/WCAG20-TECHS/G18.html#G18-resources) for tools that can test contrast ratios. - -> [!NOTE] -> Some of the tools listed by Techniques for WCAG 2.0 G18 can't be used interactively with a UWP app. You may need to enter foreground and background color values manually in the tool, or make screen captures of app UI and then run the contrast ratio tool over the screen capture image. - - - - - -## Text element roles -A UWP app can use these default elements (commonly called *text elements* or *textedit controls*): - -* [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock): role is [**Text**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType) -* [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox): role is [**Edit**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType) -* [**RichTextBlock**](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock) (and overflow class [**RichTextBlockOverflow**](/uwp/api/windows.ui.xaml.controls.richtextblockoverflow)): role is [**Text**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType) -* [**RichEditBox**](/uwp/api/Windows.UI.Xaml.Controls.RichEditBox): role is [**Edit**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType) - -When a control reports that is has a role of [**Edit**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType), assistive technologies assume that there are ways for users to change the values. So if you put static text in a [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox), you are misreporting the role and thus misreporting the structure of your app to the accessibility user. - -In the text models for XAML, there are two elements that are primarily used for static text, [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) and [**RichTextBlock**](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock). Neither of these are a [**Control**](/uwp/api/Windows.UI.Xaml.Controls.Control) subclass, and as such neither of them are keyboard-focusable or can appear in the tab order. But that does not mean that assistive technologies can't or won't read them. Screen readers are typically designed to support multiple modes of reading the content in an app, including a dedicated reading mode or navigation patterns that go beyond focus and the tab order, like a "virtual cursor". So don't put your static text into focusable containers just so that tab order gets the user there. Assistive technology users expect that anything in the tab order is interactive, and if they encounter static text there, that is more confusing than helpful. You should test this out yourself with Narrator to get a sense of the user experience with your app when using a screen reader to examine your app's static text. - - - - - -## Auto-suggest accessibility -When a user types into an entry field and a list of potential suggestions appears, this type of scenario is called auto-suggest. This is common in the **To:** line of a mail field, the Cortana search box in Windows, the URL entry field in Microsoft Edge, the location entry field in the Weather app, and so on. If you are using a XAML [**AutosuggestBox**](/uwp/api/windows.ui.xaml.controls.autosuggestbox) or the HTML intrinsic controls, then this experience is already hooked up for you by default. To make this experience accessible the entry field and the list must be associated. This is explained in the [Implementing auto-suggest](#implementing_auto-suggest) section. - -Narrator has been updated to make this type of experience accessible with a special suggestions mode. At a high level, when the edit field and list are connected properly the end user will: - -* Know the list is present and when the list closes -* Know how many suggestions are available -* Know the selected item, if any -* Be able to move Narrator focus to the list -* Be able to navigate through a suggestion with all other reading modes - -![Suggestion list](images/autosuggest-list.png)
-_Example of a suggestion list_ - - - - - -### Implementing auto-suggest -To make this experience accessible the entry field and the list must be associated in the UIA tree. This association is done with the [UIA_ControllerForPropertyId](/windows/win32/winauto/uiauto-automation-element-propids) property in desktop apps or the [ControlledPeers](/uwp/api/windows.ui.xaml.automation.automationproperties.getcontrolledpeers) property in UWP apps. - -At a high level there are 2 types of auto-suggest experiences. - -**Default selection** -If a default selection is made in the list, Narrator looks for a [**UIA_SelectionItem_ElementSelectedEventId**](/windows/desktop/WinAuto/uiauto-event-ids) event in a desktop app, or the [**AutomationEvents.SelectionItemPatternOnElementSelected**](/uwp/api/windows.ui.xaml.automation.peers.automationevents) event to be fired in a UWP app. Every time the selection changes, when the user types another letter and the suggestions have been updated or when a user navigates through the list, the **ElementSelected** event should be fired. - -![List with a default selection](images/autosuggest-default-selection.png)
-_Example where there is a default selection_ - -**No default selection** -If there is no default selection, such as in the Weather app’s location box, then Narrator looks for the desktop [**UIA_LayoutInvalidatedEventId**](/windows/desktop/WinAuto/uiauto-event-ids) event or the UWP [**LayoutInvalidated**](/uwp/api/windows.ui.xaml.automation.peers.automationevents) event to be fired on the list every time the list is updated. - -![List with no default selection](images/autosuggest-no-default-selection.png)
-_Example where there is no default selection_ - -### XAML implementation -If you are using the default XAML [**AutosuggestBox**](/uwp/api/windows.ui.xaml.controls.autosuggestbox), then everything is already hooked up for you. If you are making your own auto-suggest experience using a [**TextBox**](/uwp/api/windows.ui.xaml.controls.textbox) and a list then you will need to set the list as [**AutomationProperties.ControlledPeers**](/uwp/api/windows.ui.xaml.automation.automationproperties.getcontrolledpeers) on the **TextBox**. You must fire the **AutomationPropertyChanged** event for the [**ControlledPeers**](/uwp/api/windows.ui.xaml.automation.automationproperties.getcontrolledpeers) property every time you add or remove this property and also fire your own [**SelectionItemPatternOnElementSelected**](/uwp/api/windows.ui.xaml.automation.peers.automationevents) events or [**LayoutInvalidated**](/uwp/api/windows.ui.xaml.automation.peers.automationevents) events depending on your type of scenario, which was explained previously in this article. - -### HTML implementation -If you are using the intrinsic controls in HTML, then the UIA implementation has already been mapped for you. Below is an example of an implementation that is already hooked up for you: - -``` HTML - - - - - -``` - - If you are creating your own controls, you must set up your own ARIA controls, which are explained in the W3C standards. - - - - - -## Text in graphics - -Whenever possible, avoid including text in a graphic. For example, any text that you include in the image source file that is displayed in the app as an [**Image**](/uwp/api/Windows.UI.Xaml.Controls.Image) element is not automatically accessible or readable by assistive technologies. If you must use text in graphics, make sure that the [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) value that you provide as the equivalent of "alt text" includes that text or a summary of the text's meaning. Similar considerations apply if you are creating text characters from vectors as part of a [**Path**](/uwp/api/Windows.UI.Xaml.Shapes.Path), or by using [**Glyphs**](/uwp/api/Windows.UI.Xaml.Documents.Glyphs). - - - - - -## Text font size and scale - -Users can have difficulty reading text in an app when the fonts uses are simply too small, so make sure any text in your application is a reasonable size in the first place. - -Once you've done the obvious, Windows includes various accessibility tools and settings that users can take advantage of and adjust to their own needs and preferences for reading text. These include: - -* The Magnifier tool, which enlarges a selected area of the UI. You should ensure the layout of text in your app doesn't make it difficult to use Magnifier for reading. -* Global scale and resolution settings in **Settings->System->Display->Scale and layout**. Exactly which sizing options are available can vary as this depends on the capabilities of the display device. -* Text size settings in **Settings->Ease of access->Display**. Adjust the **Make text bigger** setting to specify only the size of text in supporting controls across all applications and screens (all UWP text controls support the text scaling experience without any customization or templating). -> [!NOTE] -> The **Make everything bigger** setting lets a user specify their preferred size for text and apps in general on their primary screen only. - -Various text elements and controls have an [**IsTextScaleFactorEnabled**](/uwp/api/windows.ui.xaml.controls.textblock.istextscalefactorenabled) property. This property has the value **true** by default. When **true**, the size of text in that element can be scaled. The scaling affects text that has a small **FontSize** to a greater degree than it affects text that has a large **FontSize**. You can disable automatic resizing by setting an element's **IsTextScaleFactorEnabled** property to **false**. - -See [Text scaling](../input/text-scaling.md) for more details. - -Add the following markup to an app and run it. Adjust the **Text size** setting, and see what happens to each **TextBlock**. - -XAML -```xml - - - -``` - -We don't recommend that you disable text scaling as scaling UI text universally across all apps is an important accessibility experience for users. - -You can also use the [**TextScaleFactorChanged**](/uwp/api/windows.ui.viewmanagement.uisettings.textscalefactorchanged) event and the [**TextScaleFactor**](/uwp/api/windows.ui.viewmanagement.uisettings.textscalefactor) property to find out about changes to the **Text size** setting on the phone. Here’s how: - -C# -```csharp -{ - ... - var uiSettings = new Windows.UI.ViewManagement.UISettings(); - uiSettings.TextScaleFactorChanged += UISettings_TextScaleFactorChanged; - ... -} - -private async void UISettings_TextScaleFactorChanged(Windows.UI.ViewManagement.UISettings sender, object args) -{ - var messageDialog = new Windows.UI.Popups.MessageDialog(string.Format("It's now {0}", sender.TextScaleFactor), "The text scale factor has changed"); - await messageDialog.ShowAsync(); -} -``` - -The value of **TextScaleFactor** is a double in the range \[1,2.25\]. The smallest text is scaled up by this amount. You might be able to use the value to, say, scale graphics to match the text. But remember that not all text is scaled by the same factor. Generally speaking, the larger text is to begin with, the less it’s affected by scaling. - -These types have an **IsTextScaleFactorEnabled** property: -* [**ContentPresenter**](/uwp/api/Windows.UI.Xaml.Controls.ContentPresenter) -* [**Control**](/uwp/api/Windows.UI.Xaml.Controls.Control) and derived classes -* [**FontIcon**](/uwp/api/Windows.UI.Xaml.Controls.FontIcon) -* [**RichTextBlock**](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock) -* [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) -* [**TextElement**](/uwp/api/Windows.UI.Xaml.Documents.TextElement) and derived classes - -## Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see text accessibility support in action](winui3gallery://item/AccessibilityScreenReader) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -## Related topics - -* [Text scaling](../input/text-scaling.md) -* [Accessibility](accessibility.md) -* [Basic accessibility information](basic-accessibility-information.md) -* [XAML text display sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BC%23%5D-Windows%208%20app%20samples/C%23/Windows%208%20app%20samples/XAML%20text%20display%20sample%20(Windows%208)) -* [XAML text editing sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BC%23%5D-Windows%208%20app%20samples/C%23/Windows%208%20app%20samples/XAML%20text%20editing%20sample%20(Windows%208)) -* [XAML accessibility sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/XAML%20accessibility%20sample) diff --git a/hub/apps/design/accessibility/basic-accessibility-information.md b/hub/apps/design/accessibility/basic-accessibility-information.md deleted file mode 100644 index 1c314719e6..0000000000 --- a/hub/apps/design/accessibility/basic-accessibility-information.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -description: Basic accessibility info is often categorized into name, role, and value. This topic describes code to help your app expose the basic information that assistive technologies need. -ms.assetid: 9641C926-68C9-4842-8B55-C38C39A9E5C5 -title: Expose basic accessibility information -label: Expose basic accessibility information -template: detail.hbs -ms.date: 01/20/2022 -ms.topic: how-to -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Expose basic accessibility information - - - -Basic accessibility info is often categorized into name, role, and value. This topic describes code to help your app expose the basic information that assistive technologies need. - - - - -## Accessible name -An accessible name is a short, descriptive text string that a screen reader uses to announce a UI element. Set the accessible name for UI elements so that have a meaning that is important for understanding the content or interacting with the UI. Such elements typically include images, input fields, buttons, controls, and regions. - -This table describes how to define or obtain an accessible name for various types of elements in a XAML UI. - -| Element type | Description | -|--------------|-------------| -| Static text | For [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) and [**RichTextBlock**](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock) elements, an accessible name is automatically determined from the visible (inner) text. All of the text in that element is used as the name. See [Name from inner text](#name_from_inner_text). | -| Images | The XAML [**Image**](/uwp/api/Windows.UI.Xaml.Controls.Image) element does not have a direct analog to the HTML **alt** attribute of **img** and similar elements. Either use [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) to provide a name, or use the captioning technique. See [Accessible names for images](#images). | -| Form elements | The accessible name for a form element should be the same as the label that is displayed for that element. See [Labels and LabeledBy](#labels). | -| Buttons and links | By default, the accessible name of a button or link is based on the visible text, using the same rules as described in [Name from inner text](#name_from_inner_text). In cases where a button contains only an image, use [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) to provide a text-only equivalent of the button's intended action. | - -Most container elements such as panels do not promote their content as accessible name. This is because it is the item content that should report a name and corresponding role, not its container. The container element might report that it is an element that has children in a Microsoft UI Automation representation, such that the assistive technology logic can traverse it. But users of assistive technologies don't generally need to know about the containers and thus most containers aren't named. - - - - -## Role and value -The controls and other UI elements that are part of the XAML vocabulary implement UI Automation support for reporting role and value as part of their definitions. You can use UI Automation tools to examine the role and value information for the controls, or you can read the documentation for the [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) implementations of each control. The available roles in a UI Automation framework are defined in the [**AutomationControlType**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType) enumeration. UI Automation clients such as assistive technologies can obtain role information by calling methods that the UI Automation framework exposes by using the control's **AutomationPeer**. - -Not all controls have a value. Controls that do have a value report this information to UI Automation through the peers and patterns that are supported by that control. For example, a [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox) form element does have a value. An assistive technology can be a UI Automation client and can discover both that a value exists and what the value is. In this specific case the **TextBox** supports the [**IValueProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IValueProvider) pattern through the [**TextBoxAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.TextBoxAutomationPeer) definitions. - -> [!NOTE] -> For cases where you use [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) or other techniques to supply the accessible name explicitly, do not include the same text as is used by the control role or type information in the accessible name. For example do not include strings such as "button" or "list" in the name. The role and type information comes from a different UI Automation property (**LocalizedControlType**) that is supplied by the default control support for UI Automation. Many assistive technologies append the **LocalizedControlType** to the accessible name, so duplicating the role in the accessible name can result in unnecessarily repeated words. For example, if you give a [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) control an accessible name of "button" or include "button" as the last part of the name, this might be read by screen readers as "button button". You should test this aspect of your accessibility info using Narrator. - - - - - -## Influencing the UI Automation tree views -The UI Automation framework has a concept of tree views, where UI Automation clients can retrieve the relationships between elements in a UI using three possible views: raw, control, and content. The control view is the view that's often used by UI Automation clients because it provides a good representation and organization of the elements in a UI that are interactive. Testing tools usually enable you to choose which tree view to use when the tool presents the organization of elements. - -By default, any [**Control**](/uwp/api/Windows.UI.Xaml.Controls.Control) derived class and a few other elements will appear in the control view when the UI Automation framework represents the UI for a Windows app. But sometimes you don't want an element to appear in the control view because of UI composition, where that element is duplicating information or presenting information that's unimportant for accessibility scenarios. Use the attached property [**AutomationProperties.AccessibilityView**](/uwp/api/windows.ui.xaml.automation.automationproperties.accessibilityviewproperty) to change how elements are exposed to the tree views. If you put an element in the **Raw** tree, most assistive technologies won't report that element as part of their views. To see some examples of how this works in existing controls, open the generic.xaml design reference XAML file in a text editor, and search for **AutomationProperties.AccessibilityView** in the templates. - - - - -## Name from inner text -To make it easier to use strings that already exist in the visible UI for accessible name values, many of the controls and other UI elements provide support for automatically determining a default accessible name based on inner text within the element, or from string values of content properties. - -* [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock), [**RichTextBlock**](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock), [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox) and **RichTextBlock** each promote the value of the **Text** property as the default accessible name. -* Any [**ContentControl**](/uwp/api/windows.ui.xaml.controls.contentcontrol.content) subclass uses an iterative "ToString" technique to find strings in its [**Content**](/uwp/api/windows.ui.xaml.controls.contentcontrol.content) value, and promotes these strings as the default accessible name. - -> [!NOTE] -> As enforced by UI Automation, the accessible name length cannot be greater than 2048 characters. If a string used for automatic accessible name determination exceeds that limit, the accessible name is truncated at that point. - - - - -## Accessible names for images -To support screen readers and to provide the basic identifying information for each element in the UI, you sometimes must provide text alternatives to non-textual information such as images and charts (excluding any purely decorative or structural elements). These elements don't have inner text so the accessible name won't have a calculated value. You can set the accessible name directly by setting the [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) attached property as shown in this example. - -XAML -```xml - - -``` - -Alternatively, consider including a text caption that appears in the visible UI and that also serves as the label-associated accessibility information for the image content. Here's an example: - -XAML -```xml - -Mount Snoqualmie Skiing -``` - - - - -## Labels and LabeledBy -The preferred way to associate a label with a form element is to use a [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) with an **x:Name** for label text, and then to set the [**AutomationProperties.LabeledBy**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms591292(v=vs.95)) attached property on the form element to reference the labeling **TextBlock** by its XAML name. If you use this pattern, assistive technologies can use the label text as the accessible name for the form field. Here's an example that shows this technique. - -XAML -```xml - - - First name - - - - Last name - - - -``` - - - - -## Accessible description (optional) -An accessible description provides additional accessibility information about a particular UI element. You typically provide an accessible description when an accessible name alone does not adequately convey an element's purpose. - -The Narrator screen reader reads an element's accessible description only when the user requests more information about the element by pressing CapsLock+F. - -The accessible name is meant to identify the control rather than to fully document its behavior. If a brief description is not enough to explain the control, you can set the [**AutomationProperties.HelpText**](/dotnet/api/system.windows.automation.automationproperties.helptext) attached property in addition to [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name). - - - - - -## Testing accessibility early and often -Ultimately, the best approach for supporting screen readers is to test your app using a screen reader yourself. That will show you how the screen reader behaves and what basic accessibility information might be missing from the app. Then you can adjust the UI or UI Automation property values accordingly. For more info, see [Accessibility testing](accessibility-testing.md). - -One of the tools you can use for testing accessibility is called **AccScope**. The **AccScope** tool is particularly useful because you can see visual representations of your UI that represent how assistive technologies might view your app as an automation tree. In particular, there's a Narrator mode that gives a view of how Narrator gets text from your app and how it organizes the elements in the UI. AccScope is designed so that it can be used and be useful throughout a development cycle for an app, even during the preliminary design phase. For more info see [AccScope](/windows/desktop/WinAuto/accscope). - - - - - -## Accessible names from dynamic data -Windows supports many controls that can be used to display values that come from an associated data source, through a feature known as *data binding*. When you populate lists with data items, you may need to use a technique that sets accessible names for data-bound list items after the initial list is populated. For more info, see "Scenario 4" in the [XAML accessibility sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/XAML%20accessibility%20sample). - - - - - -## Accessible names and localization -To make sure that the accessible name is also an element that is localized, you should use correct techniques for storing localizable strings as resources and then referencing the resource connections with [x:Uid directive](/windows/uwp/xaml-platform/x-uid-directive) values. If the accessible name is coming from an explicitly set [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) usage, make sure that the string there is also localizable. - -Note that attached properties such as the [**AutomationProperties**](/uwp/api/Windows.UI.Xaml.Automation.AutomationProperties) properties use a special qualifying syntax for the resource name, so that the resource references the attached property as applied to a specific element. For example, the resource name for [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) as applied to a UI element named `MediumButton` is: `MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name`. - - - -## Related topics -* [Accessibility](accessibility.md) -* [**AutomationProperties.Name**](/dotnet/api/system.windows.automation.automationproperties.name) -* [XAML accessibility sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/XAML%20accessibility%20sample) -* [Accessibility testing](accessibility-testing.md) diff --git a/hub/apps/design/accessibility/control-patterns-and-interfaces.md b/hub/apps/design/accessibility/control-patterns-and-interfaces.md deleted file mode 100644 index fe372c0592..0000000000 --- a/hub/apps/design/accessibility/control-patterns-and-interfaces.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -description: Lists the Microsoft UI Automation control patterns, the classes that clients use to access them, and the interfaces providers use to implement them. -ms.assetid: 2091883C-5D0C-44ED-936A-709022926A42 -title: Control patterns and interfaces -label: Control patterns and interfaces -template: detail.hbs -ms.date: 02/08/2017 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Control patterns and interfaces - - - -Lists the Microsoft UI Automation control patterns, the classes that clients use to access them, and the interfaces providers use to implement them. - -The table in this topic describes the Microsoft UI Automation control patterns. The table also lists the classes used by UI Automation clients to access the control patterns and the interfaces used by UI Automation providers to implement them. The **Control pattern** column shows the pattern name from the UI Automation client perspective, as a constant value listed in [**Control Pattern Availability Property Identifiers**](/windows/desktop/WinAuto/uiauto-control-pattern-availability-propids). From the UI Automation provider perspective, each of these patterns is a [**PatternInterface**](/uwp/api/Windows.UI.Xaml.Automation.Peers.PatternInterface) constant name. The **Class provider interface** column shows the name of the interface that providers implement to provide this pattern for a custom XAML control. - -For more info about how to implement custom automation peers that expose control patterns and implement the interfaces, see [Custom automation peers](custom-automation-peers.md). - -When you implement a control pattern, you should also consult the UI Automation provider documentation that explains some of the expectations that clients will have of a control pattern regardless of which UI framework is used to implement it. Some of the info listed in the general UI Automation provider documentation will influence how you implement your peers and correctly support that pattern. See [Implementing UI Automation Control Patterns](/windows/desktop/WinAuto/uiauto-implementinguiautocontrolpatterns), and view the page that documents the pattern you intend to implement. - -| Control pattern | Class provider interface | Description | -|-----------------|--------------------------|-------------| -| **Annotation** | [**IAnnotationProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IAnnotationProvider) | Used to expose the properties of an annotation in a document. | -| **Dock** | [**IDockProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IDockProvider) | Used for controls that can be docked in a docking container. For example, toolbars or tool palettes. | -| **Drag** | [**IDragProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IDragProvider) | Used to support draggable controls, or controls with draggable items. | -| **DropTarget** | [**IDropTargetProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IDropTargetProvider) | Used to support controls that can be the target of a drag-and-drop operation. | -| **ExpandCollapse** | [**IExpandCollapseProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IExpandCollapseProvider) | Used to support controls that visually expand to display more content and collapse to hide content. | -| **Grid** | [**IGridProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IGridProvider) | Used for controls that support grid functionality such as sizing and moving to a specified cell. Note that Grid itself does not implement this pattern because it provides layout but is not a control. | -| **GridItem** | [**IGridItemProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IGridItemProvider) | Used for controls that have cells within grids. | -| **Invoke** | [**IInvokeProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IInvokeProvider) | Used for controls that can be invoked, such as a [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button). | -| **ItemContainer** | [**IItemContainerProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IItemContainerProvider) | Enables applications to find an element in a container, such as a virtualized list. | -| **MultipleView** | [**IMultipleViewProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IMultipleViewProvider) | Used for controls that can switch between multiple representations of the same set of information, data, or children. | -| **ObjectModel** | [**IObjectModelProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IObjectModelProvider) | Used to expose a pointer to the underlying object model of a document. | -| **RangeValue** | [**IRangeValueProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IRangeValueProvider) | Used for controls that have a range of values that can be applied to the control. For example, a spinner control containing years might have a range of 1900 to the current year, while another spinner control presenting months would have a range of 1 to 12. | -| **Scroll** | [**IScrollProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IScrollProvider) | Used for controls that can scroll. For example, a control that has scroll bars that are active when there is more information than can be displayed in the viewable area of the control. | -| **ScrollItem** | [**IScrollItemProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IScrollItemProvider) | Used for controls that have individual items in a list that scrolls. For example, a list control that has individual items in the scroll list, such as a combo box control. | -| **Selection** | [**ISelectionProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ISelectionProvider) | Used for selection container controls. For example, [**ListBox**](/uwp/api/Windows.UI.Xaml.Controls.ListBox) and [**ComboBox**](/uwp/api/Windows.UI.Xaml.Controls.ComboBox). | -| **SelectionItem** | [**ISelectionItemProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ISelectionItemProvider) | Used for individual items in selection container controls, such as list boxes and combo boxes. | -| **Spreadsheet** | [**ISpreadsheetProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ISpreadsheetProvider) | Used to expose the contents of a spreadsheet or other grid-based document. | -| **SpreadsheetItem** | [**ISpreadsheetItemProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ISpreadsheetItemProvider) | Used to expose the properties of a cell in a spreadsheet or other grid-based document. | -| **Styles** | [**IStylesProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IStylesProvider) | Used to describe a UI element that has a specific style, fill color, fill pattern, or shape. | -| **SynchronizedInput** | [**ISynchronizedInputProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ISynchronizedInputProvider) | Enables UI Automation client apps to direct the mouse or keyboard input to a specific UI element. | -| **Table** | [**ITableProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ITableProvider) | Used for controls that have a grid as well as header information. For example, a tabular calendar control. | -| **TableItem** | [**ITableItemProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ITableItemProvider) | Used for items in a table. | -| **Text** | [**ITextProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ITextProvider) | Used for edit controls and documents that expose textual information. See also [**ITextRangeProvider**](/uwp/api/windows.ui.xaml.automation.provider.itextrangeprovider) and [**ITextProvider2**](/uwp/api/windows.ui.xaml.automation.provider.itextprovider2). | -| **TextChild** | [**ITextChildProvider**](/uwp/api/windows.ui.xaml.automation.provider.itextchildprovider) | Used to access an element’s nearest ancestor that supports the **Text** control pattern. | -| **TextEdit** | No managed class available | Provides access to a control that modifies text, for example a control that performs auto-correction or enables input composition through an Input Method Editor (IME). | -| **TextRange** | [**ITextRangeProvider**](/uwp/api/windows.ui.xaml.automation.provider.itextrangeprovider) | Provides access to a span of continuous text in a text container that implements [**ITextProvider**](/uwp/api/windows.ui.xaml.automation.provider.itextprovider). See also [**ITextRangeProvider2**](/uwp/api/windows.ui.xaml.automation.provider.itextrangeprovider2). | -| **Toggle** | [**IToggleProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IToggleProvider) | Used for controls where the state can be toggled. For example, [**CheckBox**](/uwp/api/Windows.UI.Xaml.Controls.CheckBox) and menu items that can be checked. | -| **Transform** | [**ITransformProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.ITransformProvider) | Used for controls that can be resized, moved, and rotated. Typical uses for the Transform control pattern are in designers, forms, graphical editors, and drawing applications. | -| **Value** | [**IValueProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IValueProvider) | Allows clients to get or set a value on controls that do not support a range of values. | -| **VirtualizedItem** | [**IVirtualizedItemProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IVirtualizedItemProvider) | Exposes items inside containers that are virtualized and need to be made fully accessible as UI Automation elements. | -| **Window** | [**IWindowProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IWindowProvider) | Exposes information specific to windows, a fundamental concept to the Microsoft Windows operating system. Examples of controls that are windows are child windows and dialogs. | - -> [!NOTE] -> You won't necessarily find implementations of all these patterns in existing XAML controls. Some of the patterns have interfaces solely to support parity with the general UI Automation framework definition of patterns, and to support automation peer scenarios that will require a purely custom implementation to support that pattern. - -> [!NOTE] -> Windows Phone Store apps do not support all the UI Automation control patterns listed here. **Annotation**, **Dock**, **Drag**, **DropTarget**, **ObjectModel** are some of the unsupported patterns. - - - -## Related topics -* [Custom automation peers](custom-automation-peers.md) -* [Accessibility](accessibility.md) diff --git a/hub/apps/design/accessibility/custom-automation-peers.md b/hub/apps/design/accessibility/custom-automation-peers.md deleted file mode 100644 index 3578a9984a..0000000000 --- a/hub/apps/design/accessibility/custom-automation-peers.md +++ /dev/null @@ -1,539 +0,0 @@ ---- -description: Describes the concept of automation peers for Microsoft UI Automation, and how you can provide automation support for your own custom UI class. -ms.assetid: AA8DA53B-FE6E-40AC-9F0A-CB09637C87B4 -title: Custom automation peers -label: Custom automation peers -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Custom automation peers - -Describes the concept of automation peers for Microsoft UI Automation, and how you can provide automation support for your own custom UI class. - -UI Automation provides a framework that automation clients can use to examine or operate the user interfaces of a variety of UI platforms and frameworks. If you are writing a Windows app, the classes that you use for your UI already provide UI Automation support. You can derive from existing, non-sealed classes to define a new kind of UI control or support class. In the process of doing so, your class might add behavior that should have accessibility support but that the default UI Automation support does not cover. In this case, you should extend the existing UI Automation support by deriving from the [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) class that the base implementation used, adding any necessary support to your peer implementation, and informing the Windows app control infrastructure that it should create your new peer. - -UI Automation enables not only accessibility applications and assistive technologies, such as screen readers, but also quality-assurance (test) code. In either scenario, UI Automation clients can examine user-interface elements and simulate user interaction with your app from other code outside your app. For info about UI Automation across all platforms and in its wider meaning, see [UI Automation Overview](/windows/desktop/WinAuto/uiauto-uiautomationoverview). - -There are two distinct audiences who use the UI Automation framework. - -* **UI Automation *clients*** call UI Automation APIs to learn about all of the UI that is currently displayed to the user. For example, an assistive technology such as a screen reader acts as a UI Automation client. The UI is presented as a tree of automation elements that are related. The UI Automation client might be interested in just one app at a time, or in the entire tree. The UI Automation client can use UI Automation APIs to navigate the tree and to read or change information in the automation elements. -* **UI Automation *providers*** contribute information to the UI Automation tree, by implementing APIs that expose the elements in the UI that they introduced as part of their app. When you create a new control, you should now act as a participant in the UI Automation provider scenario. As a provider, you should ensure that all UI Automation clients can use the UI Automation framework to interact with your control for both accessibility and testing purposes. - -Typically there are parallel APIs in the UI Automation framework: one API for UI Automation clients and another, similarly named API for UI Automation providers. For the most part, this topic covers the APIs for the UI Automation provider, and specifically the classes and interfaces that enable provider extensibility in that UI framework. Occasionally we mention UI Automation APIs that the UI Automation clients use, to provide some perspective, or provide a lookup table that correlates the client and provider APIs. For more info about the client perspective, see [UI Automation Client Programmer's Guide](/windows/desktop/WinAuto/uiauto-clientportal). - -> [!NOTE] -> UI Automation clients don't typically use managed code and aren't typically implemented as a UWP app (they are usually desktop apps). UI Automation is based on a standard and not a specific implementation or framework. Many existing UI Automation clients, including assistive technology products such as screen readers, use Component Object Model (COM) interfaces to interact with UI Automation, the system, and the apps that run in child windows. For more info on the COM interfaces and how to write a UI Automation client using COM, see [UI Automation Fundamentals](/windows/desktop/WinAuto/entry-uiautocore-overview). - - - - - -## Determining the existing state of UI Automation support for your custom UI class -Before you attempt to implement an automation peer for a custom control, you should test whether the base class and its automation peer already provides the accessibility or automation support that you need. In many cases, the combination of the [**FrameworkElementAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer) implementations, specific peers, and the patterns they implement can provide a basic but satisfactory accessibility experience. Whether this is true depends on how many changes you made to the object model exposure to your control versus its base class. Also, this depends on whether your additions to base class functionality correlate to new UI elements in the template contract or to the visual appearance of the control. In some cases your changes might introduce new aspects of user experience that require additional accessibility support. - -Even if using the existing base peer class provides the basic accessibility support, it is still a best practice to define a peer so that you can report precise **ClassName** information to UI Automation for automated testing scenarios. This consideration is especially important if you are writing a control that is intended for third-party consumption. - - - - - -## Automation peer classes -The UWP builds on existing UI Automation techniques and conventions used by previous managed-code UI frameworks such as Windows Forms, Windows Presentation Foundation (WPF) and Microsoft Silverlight. Many of the control classes and their function and purpose also have their origin in a previous UI framework. - -By convention, peer class names begin with the control class name and end with "AutomationPeer". For example, [**ButtonAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.ButtonAutomationPeer) is the peer class for the [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) control class. - -> [!NOTE] -> For purposes of this topic, we treat the properties that are related to accessibility as being more important when you implement a control peer. But for a more general concept of UI Automation support, you should implement a peer in accordance with recommendations as documented by the [UI Automation Provider Programmer's Guide](/windows/desktop/WinAuto/uiauto-providerportal) and [UI Automation Fundamentals](/windows/desktop/WinAuto/entry-uiautocore-overview). Those topics don't cover the specific [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) APIs that you would use to provide the information in the UWP framework for UI Automation, but they do describe the properties that identify your class or provide other information or interaction. - - - - - -## Peers, patterns and control types -A *control pattern* is an interface implementation that exposes a particular aspect of a control's functionality to a UI Automation client. UI Automation clients use the properties and methods exposed through a control pattern to retrieve information about capabilities of the control, or to manipulate the control's behavior at run time. - -Control patterns provide a way to categorize and expose a control's functionality independent of the control type or the appearance of the control. For example, a control that presents a tabular interface uses the **Grid** control pattern to expose the number of rows and columns in the table, and to enable a UI Automation client to retrieve items from the table. As other examples, the UI Automation client can use the **Invoke** control pattern for controls that can be invoked, such as buttons, and the **Scroll** control pattern for controls that have scroll bars, such as list boxes, list views, or combo boxes. Each control pattern represents a separate type of functionality, and control patterns can be combined to describe the full set of functionality supported by a particular control. - -Control patterns relate to UI as interfaces relate to COM objects. In COM, you can query an object to ask what interfaces it supports and then use those interfaces to access functionality. In UI Automation, UI Automation clients can query a UI Automation element to find out which control patterns it supports, and then interact with the element and its peered control through the properties, methods, events, and structures exposed by the supported control patterns. - -One of the main purposes of an automation peer is to report to a UI Automation client which control patterns the UI element can support through its peer. To do this, UI Automation providers implement new peers that change the [**GetPattern**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpattern) method behavior by overriding the [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) method. UI Automation clients make calls that the UI Automation provider maps to calling **GetPattern**. UI Automation clients query for each specific pattern that they want to interact with. If the peer supports the pattern, it returns an object reference to itself; otherwise it returns **null**. If the return is not **null**, the UI Automation client expects that it can call APIs of the pattern interface as a client, in order to interact with that control pattern. - -A *control type* is a way to broadly define the functionality of a control that the peer represents. This is a different concept than a control pattern because while a pattern informs UI Automation what info it can get or what actions it can perform through a particular interface, the control type exists one level above that. Each control type has guidance about these aspects of UI Automation: - -* UI Automation control patterns: A control type might support more than one pattern, each of which represents a different classification of info or interaction. Each control type has a set of control patterns that the control must support, a set that is optional, and a set that the control must not support. -* UI Automation property values: Each control type has a set of properties that the control must support. These are the general properties, as described in [UI Automation Properties Overview](/windows/desktop/WinAuto/uiauto-propertiesoverview), not the ones that are pattern-specific. -* UI Automation events: Each control type has a set of events that the control must support. Again these are general, not pattern-specific, as described in [UI Automation Events Overview](/windows/desktop/WinAuto/uiauto-eventsoverview). -* UI Automation tree structure: Each control type defines how the control must appear in the UI Automation tree structure. - -Regardless of how automation peers for the framework are implemented, UI Automation client functionality isn't tied to the UWP, and in fact it's likely that existing UI Automation clients such as assistive technologies will use other programming models, such as COM. In COM, clients can **QueryInterface** for the COM control pattern interface that implements the requested pattern or the general UI Automation framework for properties, events or tree examination. For the patterns, the UI Automation framework marshals that interface code across into UWP code running against the app's UI Automation provider and the relevant peer. - -When you implement control patterns for a managed-code framework such as a UWP app using C\# or Microsoft Visual Basic, you can use .NET Framework interfaces to represent these patterns instead of using the COM interface representation. For example, the UI Automation pattern interface for a Microsoft .NET provider implementation of the **Invoke** pattern is [**IInvokeProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IInvokeProvider). - -For a list of control patterns, provider interfaces, and their purpose, see [Control patterns and interfaces](control-patterns-and-interfaces.md). For the list of the control types, see [UI Automation Control Types Overview](/windows/desktop/WinAuto/uiauto-controltypesoverview). - - - - - -### Guidance for how to implement control patterns -The control patterns and what they're intended for are part of a larger definition of the UI Automation framework, and don't just apply to the accessibility support for a UWP app. When you implement a control pattern you should make sure you're implementing it in a way that matches the guidance as documented in these docs and also in the UI Automation specification. If you're looking for guidance, you can generally use the Microsoft documentation and won't need to refer to the specification. Guidance for each pattern is documented here: [Implementing UI Automation Control Patterns](/windows/desktop/WinAuto/uiauto-implementinguiautocontrolpatterns). You'll notice that each topic under this area has an "Implementation Guidelines and Conventions" section and "Required Members" section. The guidance usually refers to specific APIs of the relevant control pattern interface in the [Control Pattern Interfaces for Providers](/windows/desktop/WinAuto/uiauto-cpinterfaces) reference. Those interfaces are the native/COM interfaces (and their APIs use COM-style syntax). But everything you see there has an equivalent in the [**Windows.UI.Xaml.Automation.Provider**](/uwp/api/Windows.UI.Xaml.Automation.Provider) namespace. - -If you're using the default automation peers and expanding on their behavior, those peers have already been written in conformance to UI Automation guidelines. If they support control patterns, you can rely on that pattern support conforming with guidance at [Implementing UI Automation Control Patterns](/windows/desktop/WinAuto/uiauto-implementinguiautocontrolpatterns). If a control peer reports that it's representative of a control type defined by UI Automation, then the guidance documented at [Supporting UI Automation Control Types](/windows/desktop/WinAuto/uiauto-supportinguiautocontroltypes) has been followed by that peer. - -Nevertheless you might need additional guidance for control patterns or control types in order to follow the UI Automation recommendations in your peer implementation. That would be particularly true if you're implementing pattern or control type support that doesn't yet exist as a default implementation in a UWP control. For example, the pattern for annotations isn't implemented in any of the default XAML controls. But you might have an app that uses annotations extensively and therefore you want to surface that functionality to be accessible. For this scenario, your peer should implement [**IAnnotationProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IAnnotationProvider) and should probably report itself as the **Document** control type with appropriate properties to indicate that your documents support annotation. - -We recommend that you use the guidance that you see for the patterns under [Implementing UI Automation Control Patterns](/windows/desktop/WinAuto/uiauto-implementinguiautocontrolpatterns) or control types under [Supporting UI Automation Control Types](/windows/desktop/WinAuto/uiauto-supportinguiautocontroltypes) as orientation and general guidance. You might even try following some of the API links for descriptions and remarks as to the purpose of the APIs. But for syntax specifics that are needed for UWP app programming, find the equivalent API within the [**Windows.UI.Xaml.Automation.Provider**](/uwp/api/Windows.UI.Xaml.Automation.Provider) namespace and use those reference pages for more info. - - - - - -## Built-in automation peer classes -In general, elements implement an automation peer class if they accept UI activity from the user, or if they contain information needed by users of assistive technologies that represent the interactive or meaningful UI of apps. Not all UWP visual elements have automation peers. Examples of classes that implement automation peers are [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) and [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox). Examples of classes that do not implement automation peers are [**Border**](/uwp/api/Windows.UI.Xaml.Controls.Border) and classes based on [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel), such as [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) and [**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas). A **Panel** has no peer because it is providing a layout behavior that is visual only. There is no accessibility-relevant way for the user to interact with a **Panel**. Whatever child elements a **Panel** contains are instead reported to UI Automation trees as child elements of the next available parent in the tree that has a peer or element representation. - - - - - -## UI Automation and UWP process boundaries -Typically, UI Automation client code that accesses a UWP app runs out-of-process. The UI Automation framework infrastructure enables information to get across the process boundary. This concept is explained in more detail in [UI Automation Fundamentals](/windows/desktop/WinAuto/entry-uiautocore-overview). - - - - - -## OnCreateAutomationPeer -All classes that derive from [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) contain the protected virtual method [**OnCreateAutomationPeer**](/uwp/api/windows.ui.xaml.uielement.oncreateautomationpeer). The object initialization sequence for automation peers calls **OnCreateAutomationPeer** to get the automation peer object for each control and thus to construct a UI Automation tree for run-time use. UI Automation code can use the peer to get information about a control’s characteristics and features and to simulate interactive use by means of its control patterns. A custom control that supports automation must override **OnCreateAutomationPeer** and return an instance of a class that derives from [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer). For example, if a custom control derives from the [**ButtonBase**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.ButtonBase) class, the object returned by **OnCreateAutomationPeer** should derive from [**ButtonBaseAutomationPeer**](/uwp/api/windows.ui.xaml.automation.peers.buttonbaseautomationpeer). - -If you're writing a custom control class and intend to also supply a new automation peer, you should override the [**OnCreateAutomationPeer**](/uwp/api/windows.ui.xaml.uielement.oncreateautomationpeer) method for your custom control so that it returns a new instance of your peer. Your peer class must derive directly or indirectly from [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer). - -For example, the following code declares that the custom control `NumericUpDown` should use the peer `NumericUpDownPeer` for UI Automation purposes. - -```csharp -using Windows.UI.Xaml.Automation.Peers; -... -public class NumericUpDown : RangeBase { - public NumericUpDown() { - // other initialization; DefaultStyleKey etc. - } - ... - protected override AutomationPeer OnCreateAutomationPeer() - { - return new NumericUpDownAutomationPeer(this); - } -} -``` - -```vb -Public Class NumericUpDown - Inherits RangeBase - ' other initialization; DefaultStyleKey etc. - Public Sub New() - End Sub - Protected Overrides Function OnCreateAutomationPeer() As AutomationPeer - Return New NumericUpDownAutomationPeer(Me) - End Function -End Class -``` - -```cppwinrt -// NumericUpDown.idl -namespace MyNamespace -{ - runtimeclass NumericUpDown : Windows.UI.Xaml.Controls.Primitives.RangeBase - { - NumericUpDown(); - Int32 MyProperty; - } -} - -// NumericUpDown.h -... -struct NumericUpDown : NumericUpDownT -{ - ... - Windows::UI::Xaml::Automation::Peers::AutomationPeer OnCreateAutomationPeer() - { - return winrt::make(*this); - } -}; -``` - -```cpp -//.h -public ref class NumericUpDown sealed : Windows::UI::Xaml::Controls::Primitives::RangeBase -{ -// other initialization not shown -protected: - virtual AutomationPeer^ OnCreateAutomationPeer() override - { - return ref new NumericUpDownAutomationPeer(this); - } -}; -``` - -> [!NOTE] -> The [**OnCreateAutomationPeer**](/uwp/api/windows.ui.xaml.uielement.oncreateautomationpeer) implementation should do nothing more than initialize a new instance of your custom automation peer, passing the calling control as owner, and return that instance. Do not attempt additional logic in this method. In particular, any logic that could potentially lead to destruction of the [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) within the same call may result in unexpected runtime behavior. - -In typical implementations of [**OnCreateAutomationPeer**](/uwp/api/windows.ui.xaml.uielement.oncreateautomationpeer), the *owner* is specified as **this** or **Me** because the method override is in the same scope as the rest of the control class definition. - -The actual peer class definition can be done in the same code file as the control or in a separate code file. The peer definitions all exist in the [**Windows.UI.Xaml.Automation.Peers**](/uwp/api/Windows.UI.Xaml.Automation.Peers) namespace that is a separate namespace from the controls that they provide peers for. You can choose to declare your peers in separate namespaces also, as long as you reference the necessary namespaces for the [**OnCreateAutomationPeer**](/uwp/api/windows.ui.xaml.uielement.oncreateautomationpeer) method call. - - - - - -### Choosing the correct peer base class -Make sure that your [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) is derived from a base class that gives you the best match for the existing peer logic of the control class you are deriving from. In the case of the previous example, because `NumericUpDown` derives from [**RangeBase**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.RangeBase), there is a [**RangeBaseAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.RangeBaseAutomationPeer) class available that you should base your peer on. By using the closest matching peer class in parallel to how you derive the control itself, you can avoid overriding at least some of the [**IRangeValueProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IRangeValueProvider) functionality because the base peer class already implements it. - -The base [**Control**](/uwp/api/Windows.UI.Xaml.Controls.Control) class does not have a corresponding peer class. If you need a peer class to correspond to a custom control that derives from **Control**, derive the custom peer class from [**FrameworkElementAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer). - -If you derive from [**ContentControl**](/uwp/api/Windows.UI.Xaml.Controls.ContentControl) directly, that class has no default automation peer behavior because there is no [**OnCreateAutomationPeer**](/uwp/api/windows.ui.xaml.uielement.oncreateautomationpeer) implementation that references a peer class. So make sure either to implement **OnCreateAutomationPeer** to use your own peer, or to use [**FrameworkElementAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer) as the peer if that level of accessibility support is adequate for your control. - -> [!NOTE] -> You don't typically derive from [**AutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationPeer) rather than [**FrameworkElementAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer). If you did derive directly from **AutomationPeer** you'll need to duplicate a lot of basic accessibility support that would otherwise come from **FrameworkElementAutomationPeer**. - - - - - -## Initialization of a custom peer class -The automation peer should define a type-safe constructor that uses an instance of the owner control for base initialization. In the next example, the implementation passes the *owner* value on to the [**RangeBaseAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.RangeBaseAutomationPeer) base, and ultimately it is the [**FrameworkElementAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer) that actually uses *owner* to set [**FrameworkElementAutomationPeer.Owner**](/uwp/api/windows.ui.xaml.automation.peers.frameworkelementautomationpeer.owner). - -```csharp -public NumericUpDownAutomationPeer(NumericUpDown owner): base(owner) -{} -``` - -```vb -Public Sub New(owner As NumericUpDown) - MyBase.New(owner) -End Sub -``` - -```cppwinrt -// NumericUpDownAutomationPeer.idl -import "NumericUpDown.idl"; -namespace MyNamespace -{ - runtimeclass NumericUpDownAutomationPeer : Windows.UI.Xaml.Automation.Peers.AutomationPeer - { - NumericUpDownAutomationPeer(NumericUpDown owner); - Int32 MyProperty; - } -} - -// NumericUpDownAutomationPeer.h -... -struct NumericUpDownAutomationPeer : NumericUpDownAutomationPeerT -{ - ... - NumericUpDownAutomationPeer(MyNamespace::NumericUpDown const& owner); -}; -``` - -```cpp -//.h -public ref class NumericUpDownAutomationPeer sealed : Windows::UI::Xaml::Automation::Peers::RangeBaseAutomationPeer -//.cpp -public: NumericUpDownAutomationPeer(NumericUpDown^ owner); -``` - - - - - -## Core methods of AutomationPeer -For UWP infrastructure reasons, the overridable methods of an automation peer are part of a pair of methods: the public access method that the UI Automation provider uses as a forwarding point for UI Automation clients, and the protected "Core" customization method that a UWP class can override to influence the behavior. The method pair is wired together by default in such a way that the call to the access method always invokes the parallel "Core" method that has the provider implementation, or as a fallback, invokes a default implementation from the base classes. - -When implementing a peer for a custom control, override any of the "Core" methods from the base automation peer class where you want to expose behavior that is unique to your custom control. UI Automation code gets information about your control by calling public methods of the peer class. To provide information about your control, override each method with a name that ends with "Core" when your control implementation and design creates accessibility scenarios or other UI Automation scenarios that differ from what's supported by the base automation peer class. - -At a minimum, whenever you define a new peer class, implement the [**GetClassNameCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getclassnamecore) method, as shown in the next example. - -```csharp -protected override string GetClassNameCore() -{ - return "NumericUpDown"; -} -``` - -> [!NOTE] -> You might want to store the strings as constants rather than directly in the method body, but that is up to you. For [**GetClassNameCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getclassnamecore), you won't need to localize this string. The **LocalizedControlType** property is used any time a localized string is needed by a UI Automation client, not **ClassName**. - -### GetAutomationControlType - - - -Some assistive technologies use the [**GetAutomationControlType**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getautomationcontroltype) value directly when reporting characteristics of the items in a UI Automation tree, as additional information beyond the UI Automation **Name**. If your control is significantly different from the control you are deriving from and you want to report a different control type from what is reported by the base peer class used by the control, you must implement a peer and override [**GetAutomationControlTypeCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getautomationcontroltypecore) in your peer implementation. This is particularly important if you derive from a generalized base class such as [**ItemsControl**](/uwp/api/Windows.UI.Xaml.Controls.ItemsControl) or [**ContentControl**](/uwp/api/Windows.UI.Xaml.Controls.ContentControl), where the base peer doesn't provide precise information about control type. - -Your implementation of [**GetAutomationControlTypeCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getautomationcontroltypecore) describes your control by returning an [**AutomationControlType**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType) value. Although you can return **AutomationControlType.Custom**, you should return one of the more specific control types if it accurately describes your control's main scenarios. Here's an example. - -```csharp -protected override AutomationControlType GetAutomationControlTypeCore() -{ - return AutomationControlType.Spinner; -} -``` - -> [!NOTE] -> Unless you specify [**AutomationControlType.Custom**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationControlType), you don't have to implement [**GetLocalizedControlTypeCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getlocalizedcontroltypecore) to provide a **LocalizedControlType** property value to clients. UI Automation common infrastructure provides translated strings for every possible **AutomationControlType** value other than **AutomationControlType.Custom**. - - - - - -### GetPattern and GetPatternCore -A peer's implementation of [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) returns the object that supports the pattern that is requested in the input parameter. Specifically, a UI Automation client calls a method that is forwarded to the provider's [**GetPattern**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpattern) method, and specifies a [**PatternInterface**](/uwp/api/Windows.UI.Xaml.Automation.Peers.PatternInterface) enumeration value that names the requested pattern. Your override of **GetPatternCore** should return the object that implements the specified pattern. That object is the peer itself, because the peer should implement the corresponding pattern interface any time that it reports that it supports a pattern. If your peer does not have a custom implementation of a pattern, but you know that the peer's base does implement the pattern, you can call the base type's implementation of **GetPatternCore** from your **GetPatternCore**. A peer's **GetPatternCore** should return **null** if a pattern is not supported by the peer. However, instead of returning **null** directly from your implementation, you would usually rely on the call to the base implementation to return **null** for any unsupported pattern. - -When a pattern is supported, the [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) implementation can return **this** or **Me**. The expectation is that the UI Automation client will cast the [**GetPattern**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpattern) return value to the requested pattern interface whenever it is not **null**. - -If a peer class inherits from another peer, and all necessary support and pattern reporting is already handled by the base class, implementing [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) isn't necessary. For example, if you are implementing a range control that derives from [**RangeBase**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.RangeBase), and your peer derives from [**RangeBaseAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.RangeBaseAutomationPeer), that peer returns itself for [**PatternInterface.RangeValue**](/uwp/api/Windows.UI.Xaml.Automation.Peers.PatternInterface) and has working implementations of the [**IRangeValueProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IRangeValueProvider) interface that supports the pattern. - -Although it is not the literal code, this example approximates the implementation of [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) already present in [**RangeBaseAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.RangeBaseAutomationPeer). - - -```csharp -protected override object GetPatternCore(PatternInterface patternInterface) -{ - if (patternInterface == PatternInterface.RangeValue) - { - return this; - } - return base.GetPatternCore(patternInterface); -} -``` - -If you are implementing a peer where you don't have all the support you need from a base peer class, or you want to change or add to the set of base-inherited patterns that your peer can support, then you should override [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) to enable UI Automation clients to use the patterns. - -For a list of the provider patterns that are available in the UWP implementation of UI Automation support, see [**Windows.UI.Xaml.Automation.Provider**](/uwp/api/Windows.UI.Xaml.Automation.Provider). Each such pattern has a corresponding value of the [**PatternInterface**](/uwp/api/Windows.UI.Xaml.Automation.Peers.PatternInterface) enumeration, which is how UI Automation clients request the pattern in a [**GetPattern**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpattern) call. - -A peer can report that it supports more than one pattern. If so, the override should include return path logic for each supported [**PatternInterface**](/uwp/api/Windows.UI.Xaml.Automation.Peers.PatternInterface) value and return the peer in each matching case. It is expected that the caller will request only one interface at a time, and it is up to the caller to cast to the expected interface. - -Here's an example of a [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) override for a custom peer. It reports the support for two patterns, [**IRangeValueProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IRangeValueProvider) and [**IToggleProvider**](/uwp/api/Windows.UI.Xaml.Automation.Provider.IToggleProvider). The control here is a media display control that can display as full-screen (the toggle mode) and that has a progress bar within which users can select a position (the range control). This code came from the [XAML accessibility sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/XAML%20accessibility%20sample). - - -```csharp -protected override object GetPatternCore(PatternInterface patternInterface) -{ - if (patternInterface == PatternInterface.RangeValue) - { - return this; - } - else if (patternInterface == PatternInterface.Toggle) - { - return this; - } - return null; -} -``` - - - - - -### Forwarding patterns from sub-elements -A [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) method implementation can also specify a sub-element or part as a pattern provider for its host. This example mimics how [**ItemsControl**](/uwp/api/Windows.UI.Xaml.Controls.ItemsControl) transfers scroll-pattern handling to the peer of its internal [**ScrollViewer**](/uwp/api/Windows.UI.Xaml.Controls.ScrollViewer) control. To specify a sub-element for pattern handling, this code gets the sub-element object, creates a peer for the sub-element by using the [**FrameworkElementAutomationPeer.CreatePeerForElement**](/uwp/api/windows.ui.xaml.automation.peers.frameworkelementautomationpeer.createpeerforelement) method, and returns the new peer. - - -```csharp -protected override object GetPatternCore(PatternInterface patternInterface) -{ - if (patternInterface == PatternInterface.Scroll) - { - ItemsControl owner = (ItemsControl) base.Owner; - UIElement itemsHost = owner.ItemsHost; - ScrollViewer element = null; - while (itemsHost != owner) - { - itemsHost = VisualTreeHelper.GetParent(itemsHost) as UIElement; - element = itemsHost as ScrollViewer; - if (element != null) - { - break; - } - } - if (element != null) - { - AutomationPeer peer = FrameworkElementAutomationPeer.CreatePeerForElement(element); - if ((peer != null) && (peer is IScrollProvider)) - { - return (IScrollProvider) peer; - } - } - } - return base.GetPatternCore(patternInterface); -} -``` - - - - - -### Other Core methods -Your control may need to support keyboard equivalents for primary scenarios; for more info about why this might be necessary, see [Keyboard accessibility](keyboard-accessibility.md). Implementing the key support is necessarily part of the control code and not the peer code because that is part of a control's logic, but your peer class should override the [**GetAcceleratorKeyCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getacceleratorkeycore) and [**GetAccessKeyCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getaccesskeycore) methods to report to UI Automation clients which keys are used. Consider that the strings that report key information might need to be localized, and should therefore come from resources, not hard-coded strings. - -If you are providing a peer for a class that supports a collection, it's best to derive from both functional classes and peer classes that already have that kind of collection support. If you can't do so, peers for controls that maintain child collections may have to override the collection-related peer method [**GetChildrenCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getchildrencore) to properly report the parent-child relationships to the UI Automation tree. - -Implement the [**IsContentElementCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.iscontentelementcore) and [**IsControlElementCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.iscontrolelementcore) methods to indicate whether your control contains data content or fulfills an interactive role in the user interface (or both). By default, both methods return **true**. These settings improve the usability of assistive technologies such as screen readers, which may use these methods to filter the automation tree. If your [**GetPatternCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getpatterncore) method transfers pattern handling to a sub-element peer, the sub-element peer's **IsControlElementCore** method can return **false** to hide the sub-element peer from the automation tree. - -Some controls may support labeling scenarios, where a text label part supplies information for a non-text part, or a control is intended to be in a known labeling relationship with another control in the UI. If it's possible to provide a useful class-based behavior, you can override [**GetLabeledByCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getlabeledbycore) to provide this behavior. - -[**GetBoundingRectangleCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getboundingrectanglecore) and [**GetClickablePointCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getclickablepointcore) are used mainly for automated testing scenarios. If you want to support automated testing for your control, you might want to override these methods. This might be desired for range-type controls, where you can't suggest just a single point because where the user clicks in coordinate space has a different effect on a range. For example, the default [**ScrollBar**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.ScrollBar) automation peer overrides **GetClickablePointCore** to return a "not a number" [**Point**](/uwp/api/Windows.Foundation.Point) value. - -[**GetLiveSettingCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getlivesettingcore) influences the control default for the **LiveSetting** value for UI Automation. You might want to override this if you want your control to return a value other than [**AutomationLiveSetting.Off**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationLiveSetting). For more info on what **LiveSetting** represents, see [**AutomationProperties.LiveSetting**](/uwp/api/windows.ui.xaml.automation.automationproperties.livesettingproperty). - -You might override [**GetOrientationCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getorientationcore) if your control has a settable orientation property that can map to [**AutomationOrientation**](/uwp/api/Windows.UI.Xaml.Automation.Peers.AutomationOrientation). The [**ScrollBarAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.ScrollBarAutomationPeer) and [**SliderAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.SliderAutomationPeer) classes do this. - - - - - -### Base implementation in FrameworkElementAutomationPeer -The base implementation of [**FrameworkElementAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer) provides some UI Automation information that can be interpreted from various layout and behavior properties that are defined at the framework level. - -* [**GetBoundingRectangleCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getboundingrectanglecore): Returns a [**Rect**](/uwp/api/Windows.Foundation.Rect) structure based on the known layout characteristics. Returns a 0-value **Rect** if [**IsOffscreen**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.isoffscreen) is **true**. -* [**GetClickablePointCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getclickablepointcore): Returns a [**Point**](/uwp/api/Windows.Foundation.Point) structure based on the known layout characteristics, as long as there is a nonzero **BoundingRectangle**. -* [**GetNameCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getnamecore): More extensive behavior than can be summarized here; see [**GetNameCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getnamecore). Basically, it attempts a string conversion on any known content of a [**ContentControl**](/uwp/api/Windows.UI.Xaml.Controls.ContentControl) or related classes that have content. Also, if there is a value for [**LabeledBy**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms591292(v=vs.95)), that item's **Name** value is used as the **Name**. -* [**HasKeyboardFocusCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.haskeyboardfocuscore): Evaluated based on the owner's [**FocusState**](/uwp/api/windows.ui.xaml.controls.control.focusstate) and [**IsEnabled**](/uwp/api/windows.ui.xaml.controls.control.isenabled) properties. Elements that aren't controls always return **false**. -* [**IsEnabledCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.isenabledcore): Evaluated based on the owner's [**IsEnabled**](/uwp/api/windows.ui.xaml.controls.control.isenabled) property if it is a [**Control**](/uwp/api/Windows.UI.Xaml.Controls.Control). Elements that aren't controls always return **true**. This doesn't mean that the owner is enabled in the conventional interaction sense; it means that the peer is enabled despite the owner not having an **IsEnabled** property. -* [**IsKeyboardFocusableCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.iskeyboardfocusablecore): Returns **true** if owner is a [**Control**](/uwp/api/Windows.UI.Xaml.Controls.Control); otherwise it is **false**. -* [**IsOffscreenCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.isoffscreencore): A [**Visibility**](/uwp/api/windows.ui.xaml.uielement.visibility) of [**Collapsed**](/uwp/api/windows.ui.xaml.visibility) on the owner element or any of its parents equates to a **true** value for [**IsOffscreen**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.isoffscreen). Exception: a [**Popup**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.Popup) object can be visible even if its owner's parents are not. -* [**SetFocusCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.setfocuscore): Calls [**Focus**](/uwp/api/windows.ui.xaml.controls.control.focus). -* [**GetParent**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getparent): Calls [**FrameworkElement.Parent**](/uwp/api/windows.ui.xaml.frameworkelement.parent) from the owner, and looks up the appropriate peer. This isn't an override pair with a "Core" method, so you can't change this behavior. - -> [!NOTE] -> Default UWP peers implement a behavior by using internal native code that implements the UWP, not necessarily by using actual UWP code. You won't be able to see the code or logic of the implementation through common language runtime (CLR) reflection or other techniques. You also won't see distinct reference pages for subclass-specific overrides of base peer behavior. For example, there might be additional behavior for [**GetNameCore**](/uwp/api/windows.ui.xaml.automation.peers.automationpeer.getnamecore) of a [**TextBoxAutomationPeer**](/uwp/api/Windows.UI.Xaml.Automation.Peers.TextBoxAutomationPeer), which won't be described on the **AutomationPeer.GetNameCore** reference page, and there is no reference page for **TextBoxAutomationPeer.GetNameCore**. There isn't even a **TextBoxAutomationPeer.GetNameCore** reference page. Instead, read the reference topic for the most immediate peer class, and look for implementation notes in the Remarks section. - - - - - -## Peers and AutomationProperties -Your automation peer should provide appropriate default values for your control's accessibility-related information. Note that any app code that uses the control can override some of that behavior by including [**AutomationProperties**](/uwp/api/Windows.UI.Xaml.Automation.AutomationProperties) attached-property values on control instances. Callers can do this either for the default controls or for custom controls. For example, the following XAML creates a button that has two customized UI Automation properties: ` -``` -For more information about using system colors and resources, see [XAML theme resources](../../develop/platform/xaml/xaml-theme-resources.md). - -As long as you haven’t overridden system colors, a UWP app supports high-contrast themes by default. If a user has chosen that they want the system to use a high-contrast theme from system settings or accessibility tools, the framework automatically uses colors and style settings that produce a high-contrast layout and rendering for controls and components in the UI. - -For more information, see [High-contrast themes](high-contrast-themes.md). - -If you have decided to use you own color theme instead of system colors, consider these guidelines: - -**Color contrast ratio** – The updated Section 508 of the Americans with Disability Act, as well as other legislation, requires that the default color contrasts between text and its background must be 5:1. For large text (18-point font sizes, or 14 points and bolded), the required default contrast is 3:1. - -**Color combinations** – About 7 percent of males (and less than 1 percent of females) have some form of color deficiency. Users with colorblindness have problems distinguishing between certain colors, so it is important that color alone is never used to convey status or meaning in an application. As for decorative images (such as icons or backgrounds), color combinations should be chosen in a manner that maximizes the perception of the image by colorblind users. - -## Accessibility checklist -Following is an abbreviated version of the accessibility checklist: - -1. Set the accessible name (required) and description (optional) for content and interactive UI elements in your app. -2. Implement keyboard accessibility. -3. Visually verify your UI to ensure that the text contrast is adequate, elements render correctly in the high-contrast themes, and colors are used correctly. -4. Run accessibility tools, address reported issues, and verify the screen reading experience. (See Accessibility testing topic.) -5. Make sure your app manifest settings follow accessibility guidelines. -6. Declare your app as accessible in the Microsoft Store. (See the [Accessibility in the store](accessibility-in-the-store.md) topic.) - -For more detail, please see the full [Accessibility checklist](accessibility-checklist.md) topic. - -## Related topics -* [Designing inclusive software](designing-inclusive-software.md) -* [Inclusive design](https://www.microsoft.com/design/inclusive/) -* [Accessibility practices to avoid](practices-to-avoid.md) -* [Engineering Software for Accessibility](https://www.microsoft.com/download/details.aspx?id=19262) -* [Microsoft accessibility developer hub](https://developer.microsoft.com/windows/accessible-apps) -* [Accessibility](accessibility.md) diff --git a/hub/apps/design/accessibility/high-contrast-themes.md b/hub/apps/design/accessibility/high-contrast-themes.md deleted file mode 100644 index 16c935fb64..0000000000 --- a/hub/apps/design/accessibility/high-contrast-themes.md +++ /dev/null @@ -1,263 +0,0 @@ ---- -description: Describes the steps needed to ensure your Windows app is usable when a contrast theme is active. -title: Contrast themes -label: Contrast design guidelines -keywords: -template: detail.hbs -ms.date: 02/27/2025 -ms.topic: how-to -ms.localizationpriority: medium ---- - -# Contrast themes - -Contrast themes use a small palette of colors (with a contrast ratio of at least 7:1) to help make elements in the UI easier to see, reduce eye strain, improve text readability, and accommodate user preferences. - -> [!NOTE] -> Don't confuse contrast themes with light and dark themes, which support a much larger color palette and don't necessarily increase contrast or make things easier to see. For more on light and dark themes, see [Color](../style/color.md). - -To see how your app behaves with contrast themes, enable and customize them through the *Settings > Accessibility > Contrast themes* page. - -> [!Tip] -> You can also press the left-Alt key + Shift key + Print screen (PrtScn on some keyboards) to quickly turn contrast themes on or off. If you have not selected a theme previously, the Aquatic theme is used by default (shown in the following image). -> -> :::image type="content" border="false" source="images/contrast-theme-calculators.png" alt-text="Calculator shown in Light theme and Aquatic contrast theme."::: - -## Setting HighContrastAdjustment to None - -Windows apps have [**HighContrastAdjustment**](/uwp/api/windows.ui.xaml.uielement.highcontrastadjustment) turned on by default. This sets all text color to white with a solid black highlight behind it, ensuring sufficient contrast against all backgrounds. If you are using brushes correctly, this setting should be turned off. - -## Detecting high contrast - -You can programmatically check if the current theme is a contrast theme through the [**AccessibilitySettings**](/uwp/api/Windows.UI.ViewManagement.AccessibilitySettings) class (you must call the **AccessibilitySettings** constructor from a scope where the app is initialized and is already displaying content). - -## Creating theme dictionaries - -A [**ResourceDictionary.ThemeDictionaries**](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries) object can indicate theme colors that are different from the system-defined colors by specifying brushes for the **Default** (Dark), **Light**, and **HighContrast** contrast themes. - -> [!Tip] -> **Contrast theme** refers to the feature in general, while **HighContrast** refers to the specific dictionary being referenced. - -1. In App.xaml, create a **ThemeDictionaries** collection with both a **Default** and a **HighContrast** [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary) (a **Light** [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary) is not necessary for this example). -2. In the **Default** dictionary, create the type of [Brush](/uwp/api/Windows.UI.Xaml.Media.Brush) you need (usually a **SolidColorBrush**). Give it an *x:Key* name corresponding to its intended use (a **StaticResource** referencing an existing system brush would also be appropriate). -3. In the **HighContrast** ResourceDictionary (shown in the following code snippet), specify an appropriate **SystemColor** brush. See [Contrast colors](#contrast-colors) for details on picking one of the dynamic system **HighContrast** colors for the **SystemColor** brush. - - ```xaml - - - - - - - - - - - - - - - - - - - - - ``` - -## Contrast colors - -On the *Settings > Ease of access > Contrast themes* page (shown in the following image), users can select from four default contrast themes: **Aquatic**, **Desert**, **Dusk**, and **Night sky**. - -:::image type="content" border="false" source="images/contrast-theme-settings.png" alt-text="Contrast theme settings."::: - -After the user selects an option, they can choose to immediately apply it, or they can edit the theme. The following image shows the Edit theme dialog for the **Aquatic** contrast theme. - -:::image type="content" border="false" source="images/contrast-theme-resources.png" alt-text="Settings - Edit theme dialog for the **Aquatic** contrast theme."::: - -This table shows the contrast theme colors and their recommended pairings. Each **SystemColor** resource is a variable that automatically updates the color when the user switches contrast themes. - -| Color swatch | Description | -|---------|---------| -|:::image source="images/sys-color/aquatic-color-window.png" alt-text="Color swatch of SystemColorWindowColor used for background of pages, panes, popups, and windows.":::| **SystemColorWindowColor**
Background of pages, panes, popups, and windows.

Pair with **SystemColorWindowTextColor** | -|:::image source="images/sys-color/aquatic-color-windowtext.png" alt-text="Color swatch of SystemColorWindowTextColor used for headings, body copy, lists, placeholder text, app and window borders, any UI that can't be interacted with."::: | **SystemColorWindowTextColor**
Headings, body copy, lists, placeholder text, app and window borders, any UI that can't be interacted with.

Pair with **SystemColorWindowColor** | -|:::image source="images/sys-color/aquatic-color-hotlight.png" alt-text="Color swatch of SystemColorWindowTextColor used for hyperlinks.":::| **SystemColorHotlightColor**
Hyperlinks.

Pair with **SystemColorWindowColor** | -|:::image source="images/sys-color/aquatic-color-graytext.png" alt-text="Color swatch of SystemColorWindowTextColor used for inactive or disabled UI.":::| **SystemColorGrayTextColor**
Inactive or disabled UI.

Pair with **SystemColorWindowColor** | -|:::image source="images/sys-color/aquatic-color-highlighttext.png" alt-text="Color swatch of SystemColorWindowTextColor used for foreground color of text or UI that is selected, interacted with (hover, pressed), or in progress.":::| **SystemColorHighlightTextColor**
Foreground color of text or UI that is selected, interacted with (hover, pressed), or in progress.

Pair with **SystemColorHighlightColor** | -|:::image source="images/sys-color/aquatic-color-highlight.png" alt-text="Color swatch of SystemColorWindowTextColor used for background or accent color of UI that is selected, interacted with (hover, pressed), or in progress.":::| **SystemColorHighlightColor**
Background or accent color of UI that is selected, interacted with (hover, pressed), or in progress.

Pair with **SystemColorHighlightTextColor** | -|:::image source="images/sys-color/aquatic-color-btntext.png" alt-text="Color swatch of SystemColorWindowTextColor used for foreground color of buttons and any UI that can be interacted with.":::| **SystemColorButtonTextColor**
Foreground color of buttons and any UI that can be interacted with.

Pair with **SystemColorButtonFaceColor** | -|:::image source="images/sys-color/aquatic-color-3dface.png" alt-text="Color swatch of SystemColorWindowTextColor used for background color of buttons and any UI that can be interacted with.":::| **SystemColorButtonFaceColor**
Background color of buttons and any UI that can be interacted with.

Pair with **SystemColorButtonTextColor** | - -The next table shows how the colors appear when used on a background set to **SystemColorWindowColor**. - -| Example | Values | -|---------|---------| -|:::image type="content" source="images/sys-color/aquatic-example-windowtext.png" alt-text="A window with text using the window text color." border="false"::: | **SystemColorWindowTextColor** | -|:::image type="content" source="images/sys-color/aquatic-example-hotlight.png" alt-text="A window with hyperlink text using the hot light color." border="false":::| **SystemColorHotlightColor** | -|:::image type="content" source="images/sys-color/aquatic-example-graytext.png" alt-text="A window with inactive text using the gray text color." border="false":::| **SystemColorGrayTextColor** | -|:::image type="content" source="images/sys-color/aquatic-example-highlighttext+highlight.png" alt-text="A window with text using the highlight text color on the highlight color." border="false":::|**SystemColorHighlightTextColor** + **SystemColorHighlightColor** | -|:::image type="content" source="images/sys-color/aquatic-example-btntext+3dface.png" alt-text="A window with a button using the 3d face color and button text using the button text color." border="false":::| **SystemColorButtonTextColor** + **SystemColorButtonFaceColor** - -In the following code snippet, we show how to pick a resource for **BrandedPageBackgroundBrush**. **SystemColorWindowColor** is a good choice here as **BrandedPageBackgroundBrush** indicates that it will be used for a background. - -```xaml - - - - - - - - - - - - - - - - - - - - -``` - -The resource is then assigned to the background of an element. - -```xaml - -``` - -We use `{ThemeResource}` twice in the preceding example, once to reference **SystemColorWindowColor** and again to reference **BrandedPageBackgroundBrush**. Both are required for your app to theme correctly at run time. This is a good time to test out the functionality in your app. The **Grid** background will automatically update as you switch to a high contrast theme. It will also update when switching between different high contrast themes. - -> [!NOTE] ->**WinUI 2.6 and newer** -> -> There are eight high contrast system brushes available for referencing through a **ResourceKey** (see the following example for **SystemColorWindowTextColorBrush**). -> -> `` -> -> The brush names match one of the eight previously mentioned system colors exactly (with "Brush" appended). We recommend using a **StaticResource** instead of a local **SolidColorBrush** for performance reasons. - -## Best practices - -Here are some recommendations for customizing the contrast theme colors in your Windows app. - -- Test in all four high contrast themes while your app is running. -- Be consistent. -- Make sure **HighContrastAdjustment** is set to `None` in your app (it is turned on by default). See [Setting HighContrastAdjustment to None](#setting-highcontrastadjustment-to-none). -- **Do not** hard code a color in the HighContrast theme. Instead, use the **SystemColor** `Color` and `ColorBrush` resources. For more detail, see [Hard-coded colors](#hard-coded-colors). -- **Do not** mix background/foreground pairs that are not compatible -- **Do not** choose color resource for aesthetics. Remember, the colors change with the theme. -- **Do not** use `SystemColorGrayTextColor` for body copy that is secondary or acts as hint text. This is intended for disabled content only. -- **Do not** use `SystemColorHotlightColor` and corresponding brush as both are reserved for hyperlinks. - -> [!TIP] -> It's often helpful to look at the WinUI Gallery app to see how common controls use the **SystemColor** brushes. If installed already, open them by clicking the following links: [**WinUI 3 Gallery**](winui3gallery:) or [**WinUI 2 Gallery**](winui2gallery:). -> -> If they are not installed, you can download the [**WinUI 3 Gallery**](https://apps.microsoft.com/detail/9P3JFPWWDZRC) and the [**WinUI 2 Gallery**](https://apps.microsoft.com/detail/9MSVH128X2ZT) from the Microsoft Store. -> -> You can also get the source code for both from [GitHub](https://github.com/Microsoft/WinUI-Gallery) (use the *main* branch for WinUI 3 and the *winui2* branch for WinUI 2). - -### Hard-coded colors - -Platform controls provide built-in support for contrast themes, but you should be careful when customizing your application UI. Two of the most common issues occur when either the color of an element is hard-coded or an incorrect **SystemColor** resource is used. - -In the following code snippet, we show a Grid element declared with a background color set to `#E6E6E6` (a very light grey). If you hard-code the color in this way, you also override the background color across all themes. For example, if the user selects the **Aquatic** contrast theme, instead of white text on a near black background, the text color in this app changes to white while the background remains light grey. The very low contrast between text and background could make this app very difficult to use. - -```xaml - -``` - -Instead, we recommend using the [**{ThemeResource} markup extension**](/windows/uwp/xaml-platform/themeresource-markup-extension) to reference a color in the [**ThemeDictionaries**](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries) collection of a [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary). This enables the automatic substitution of colors and brushes based on the user's current theme. - -```xaml - -``` - -### Borders - -Pages, panes, popups, and bars should all use **SystemColorWindowColor** for their background. Add a contrast theme-only border only where necessary to preserve important boundaries in your UI. - -> [!Tip] -> We recommend using 2px borders for transitory surfaces such as flyouts and dialogs. - -The navigation pane and the page both share the same background color in contrast themes. To distinguish them, a contrast theme-only border is essential. - -:::image type="content" border="false" source="images/contrast-theme-border.png" alt-text="A navigation pane separated from the rest of the page."::: - -### List items with colored text - -In contrast themes, items in a [ListView](/uwp/api/windows.ui.xaml.controls.listview) have their background set to **SystemColorHighlightColor** when the user hovers over, presses, or selects them. A common issue with complex list items occurs when the content of the list item fails to invert its color, making the items impossible to read. - -Be careful when you set the TextBlock.Foreground in the [**DataTemplate**](/uwp/api/windows.ui.xaml.controls.itemscontrol.itemtemplate) of the **ListView** (typically done to establish visual hierarchy). The **Foreground** property is set on the **ListViewItem**, and each **TextBlock** in the DataTemplate inherits the correct **Foreground** color. Setting **Foreground** breaks this inheritance. - -:::image type="content" border="false" source="images/high-contrast-list1.png" alt-text="Complex list in Light theme and Aquatic theme (note how the text color is not inverted in HighContrast)."::: - -You can resolve this by setting **Foreground** conditionally through a **Style** in a [**ThemeDictionaries**](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries) collection. As the **Foreground** is not set by **SecondaryBodyTextBlockStyle** in **HighContrast**, the color will invert correctly. - -:::image type="content" border="false" source="images/high-contrast-list2.png" alt-text="Complex list in Light theme and Aquatic theme (note how the text color is inverted in HighContrast)."::: - -The following code snippet (from an App.xaml file) shows an example [**ThemeDictionaries**](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries) collection in a **ListView** data template. - -```xaml - - - - - - - - - - - - inputs \ No newline at end of file diff --git a/hub/apps/design/basics/images/intro-style.gif b/hub/apps/design/basics/images/intro-style.gif deleted file mode 100644 index 2e8b1dc471..0000000000 Binary files a/hub/apps/design/basics/images/intro-style.gif and /dev/null differ diff --git a/hub/apps/design/basics/images/intro-uwp-header.jpg b/hub/apps/design/basics/images/intro-uwp-header.jpg deleted file mode 100644 index ef561827a8..0000000000 Binary files a/hub/apps/design/basics/images/intro-uwp-header.jpg and /dev/null differ diff --git a/hub/apps/design/basics/images/landing-page/photolab-50.png b/hub/apps/design/basics/images/landing-page/photolab-50.png deleted file mode 100644 index c9a49e584b..0000000000 Binary files a/hub/apps/design/basics/images/landing-page/photolab-50.png and /dev/null differ diff --git a/hub/apps/design/basics/images/left-nav-silhouette.png b/hub/apps/design/basics/images/left-nav-silhouette.png deleted file mode 100644 index 426dbc45de..0000000000 Binary files a/hub/apps/design/basics/images/left-nav-silhouette.png and /dev/null differ diff --git a/hub/apps/design/basics/images/menu-bar-silhouette.png b/hub/apps/design/basics/images/menu-bar-silhouette.png deleted file mode 100644 index ca05840fba..0000000000 Binary files a/hub/apps/design/basics/images/menu-bar-silhouette.png and /dev/null differ diff --git a/hub/apps/design/basics/images/multi-line-list.png b/hub/apps/design/basics/images/multi-line-list.png deleted file mode 100644 index 828ca27880..0000000000 Binary files a/hub/apps/design/basics/images/multi-line-list.png and /dev/null differ diff --git a/hub/apps/design/basics/images/multi-view.png b/hub/apps/design/basics/images/multi-view.png deleted file mode 100644 index 7c8a2f450f..0000000000 Binary files a/hub/apps/design/basics/images/multi-view.png and /dev/null differ diff --git a/hub/apps/design/basics/images/nav-back-pc.png b/hub/apps/design/basics/images/nav-back-pc.png deleted file mode 100644 index 6f2cd1b1f2..0000000000 Binary files a/hub/apps/design/basics/images/nav-back-pc.png and /dev/null differ diff --git a/hub/apps/design/basics/images/nav/clarity-image.svg b/hub/apps/design/basics/images/nav/clarity-image.svg deleted file mode 100644 index 18f57d4636..0000000000 --- a/hub/apps/design/basics/images/nav/clarity-image.svg +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/combining-structures.svg b/hub/apps/design/basics/images/nav/combining-structures.svg deleted file mode 100644 index 1a49a442c5..0000000000 --- a/hub/apps/design/basics/images/nav/combining-structures.svg +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/do.svg b/hub/apps/design/basics/images/nav/do.svg deleted file mode 100644 index df09140b59..0000000000 --- a/hub/apps/design/basics/images/nav/do.svg +++ /dev/null @@ -1,30 +0,0 @@ - -do -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/dont.svg b/hub/apps/design/basics/images/nav/dont.svg deleted file mode 100644 index 488d22e2c7..0000000000 --- a/hub/apps/design/basics/images/nav/dont.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/flat-lateral-structure.svg b/hub/apps/design/basics/images/nav/flat-lateral-structure.svg deleted file mode 100644 index 02707dd114..0000000000 --- a/hub/apps/design/basics/images/nav/flat-lateral-structure.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/hierarchical-structure.svg b/hub/apps/design/basics/images/nav/hierarchical-structure.svg deleted file mode 100644 index 10cd94fb49..0000000000 --- a/hub/apps/design/basics/images/nav/hierarchical-structure.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/nav-1.svg b/hub/apps/design/basics/images/nav/nav-1.svg deleted file mode 100644 index 038895027b..0000000000 --- a/hub/apps/design/basics/images/nav/nav-1.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/nav-2.svg b/hub/apps/design/basics/images/nav/nav-2.svg deleted file mode 100644 index cabf4fda5e..0000000000 --- a/hub/apps/design/basics/images/nav/nav-2.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/nav-3.svg b/hub/apps/design/basics/images/nav/nav-3.svg deleted file mode 100644 index 61819d96f5..0000000000 --- a/hub/apps/design/basics/images/nav/nav-3.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/navigation-basics-header.jpg b/hub/apps/design/basics/images/nav/navigation-basics-header.jpg deleted file mode 100644 index 0bfac104f0..0000000000 Binary files a/hub/apps/design/basics/images/nav/navigation-basics-header.jpg and /dev/null differ diff --git a/hub/apps/design/basics/images/nav/navview-bad.svg b/hub/apps/design/basics/images/nav/navview-bad.svg deleted file mode 100644 index d1fb04ec49..0000000000 --- a/hub/apps/design/basics/images/nav/navview-bad.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/navview-good.svg b/hub/apps/design/basics/images/nav/navview-good.svg deleted file mode 100644 index fd5e9e0491..0000000000 --- a/hub/apps/design/basics/images/nav/navview-good.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/page-components.svg b/hub/apps/design/basics/images/nav/page-components.svg deleted file mode 100644 index d703fa2447..0000000000 --- a/hub/apps/design/basics/images/nav/page-components.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/thumbnail-frame.svg b/hub/apps/design/basics/images/nav/thumbnail-frame.svg deleted file mode 100644 index a0a57b496c..0000000000 --- a/hub/apps/design/basics/images/nav/thumbnail-frame.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/thumbnail-hyperlinks-buttons.svg b/hub/apps/design/basics/images/nav/thumbnail-hyperlinks-buttons.svg deleted file mode 100644 index b231fad28b..0000000000 --- a/hub/apps/design/basics/images/nav/thumbnail-hyperlinks-buttons.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/thumbnail-list-detail.svg b/hub/apps/design/basics/images/nav/thumbnail-list-detail.svg deleted file mode 100644 index d9d037bab3..0000000000 --- a/hub/apps/design/basics/images/nav/thumbnail-list-detail.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/thumbnail-navview.svg b/hub/apps/design/basics/images/nav/thumbnail-navview.svg deleted file mode 100644 index 55706395d5..0000000000 --- a/hub/apps/design/basics/images/nav/thumbnail-navview.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/nav/thumbnail-tabs-pivot.svg b/hub/apps/design/basics/images/nav/thumbnail-tabs-pivot.svg deleted file mode 100644 index d98fe386f8..0000000000 --- a/hub/apps/design/basics/images/nav/thumbnail-tabs-pivot.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/navigation-basics-hero.png b/hub/apps/design/basics/images/navigation-basics-hero.png deleted file mode 100644 index c3b5ebafcf..0000000000 Binary files a/hub/apps/design/basics/images/navigation-basics-hero.png and /dev/null differ diff --git a/hub/apps/design/basics/images/news-reader/.ds-store b/hub/apps/design/basics/images/news-reader/.ds-store deleted file mode 100644 index c0c30bb239..0000000000 Binary files a/hub/apps/design/basics/images/news-reader/.ds-store and /dev/null differ diff --git a/hub/apps/design/basics/images/peertopeer.png b/hub/apps/design/basics/images/peertopeer.png deleted file mode 100644 index 97e3ebe134..0000000000 Binary files a/hub/apps/design/basics/images/peertopeer.png and /dev/null differ diff --git a/hub/apps/design/basics/images/photo-editor/uap-photo-pc-phone.psd b/hub/apps/design/basics/images/photo-editor/uap-photo-pc-phone.psd deleted file mode 100644 index ab2833b150..0000000000 Binary files a/hub/apps/design/basics/images/photo-editor/uap-photo-pc-phone.psd and /dev/null differ diff --git a/hub/apps/design/basics/images/shell.svg b/hub/apps/design/basics/images/shell.svg deleted file mode 100644 index 1be3b00d80..0000000000 --- a/hub/apps/design/basics/images/shell.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/signature-experiences-hero.png b/hub/apps/design/basics/images/signature-experiences-hero.png deleted file mode 100644 index e39b5a1481..0000000000 Binary files a/hub/apps/design/basics/images/signature-experiences-hero.png and /dev/null differ diff --git a/hub/apps/design/basics/images/subway/uap-subway-pc-phone.psd b/hub/apps/design/basics/images/subway/uap-subway-pc-phone.psd deleted file mode 100644 index 22c84642f7..0000000000 Binary files a/hub/apps/design/basics/images/subway/uap-subway-pc-phone.psd and /dev/null differ diff --git a/hub/apps/design/basics/images/tab-view-silhouette.png b/hub/apps/design/basics/images/tab-view-silhouette.png deleted file mode 100644 index b68e9448cb..0000000000 Binary files a/hub/apps/design/basics/images/tab-view-silhouette.png and /dev/null differ diff --git a/hub/apps/design/basics/images/thumbnail-autosuggest.svg b/hub/apps/design/basics/images/thumbnail-autosuggest.svg deleted file mode 100644 index bf59b56124..0000000000 --- a/hub/apps/design/basics/images/thumbnail-autosuggest.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-button.svg b/hub/apps/design/basics/images/thumbnail-button.svg deleted file mode 100644 index 15f4e7d758..0000000000 --- a/hub/apps/design/basics/images/thumbnail-button.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-calendar.svg b/hub/apps/design/basics/images/thumbnail-calendar.svg deleted file mode 100644 index 38e9775445..0000000000 --- a/hub/apps/design/basics/images/thumbnail-calendar.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-canvas.svg b/hub/apps/design/basics/images/thumbnail-canvas.svg deleted file mode 100644 index 8f1e0038e0..0000000000 --- a/hub/apps/design/basics/images/thumbnail-canvas.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-commandbar.svg b/hub/apps/design/basics/images/thumbnail-commandbar.svg deleted file mode 100644 index e1320663b9..0000000000 --- a/hub/apps/design/basics/images/thumbnail-commandbar.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-commandbar2.svg b/hub/apps/design/basics/images/thumbnail-commandbar2.svg deleted file mode 100644 index 8ed2289cff..0000000000 --- a/hub/apps/design/basics/images/thumbnail-commandbar2.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-contextmenu.svg b/hub/apps/design/basics/images/thumbnail-contextmenu.svg deleted file mode 100644 index 7f5ee6e10c..0000000000 --- a/hub/apps/design/basics/images/thumbnail-contextmenu.svg +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-dialog.svg b/hub/apps/design/basics/images/thumbnail-dialog.svg deleted file mode 100644 index 538c537933..0000000000 --- a/hub/apps/design/basics/images/thumbnail-dialog.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-flyout.svg b/hub/apps/design/basics/images/thumbnail-flyout.svg deleted file mode 100644 index 7365df907f..0000000000 --- a/hub/apps/design/basics/images/thumbnail-flyout.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-list.svg b/hub/apps/design/basics/images/thumbnail-list.svg deleted file mode 100644 index 141754ce34..0000000000 --- a/hub/apps/design/basics/images/thumbnail-list.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/thumbnail-selection.svg b/hub/apps/design/basics/images/thumbnail-selection.svg deleted file mode 100644 index ec33c8e3e3..0000000000 --- a/hub/apps/design/basics/images/thumbnail-selection.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/basics/images/title-subtitle-body.png b/hub/apps/design/basics/images/title-subtitle-body.png deleted file mode 100644 index 84165fa3c4..0000000000 Binary files a/hub/apps/design/basics/images/title-subtitle-body.png and /dev/null differ diff --git a/hub/apps/design/basics/images/titlebar/back-button.png b/hub/apps/design/basics/images/titlebar/back-button.png deleted file mode 100644 index 0f4ff8466d..0000000000 Binary files a/hub/apps/design/basics/images/titlebar/back-button.png and /dev/null differ diff --git a/hub/apps/design/basics/images/titlebar/people.png b/hub/apps/design/basics/images/titlebar/people.png deleted file mode 100644 index c78fe891ea..0000000000 Binary files a/hub/apps/design/basics/images/titlebar/people.png and /dev/null differ diff --git a/hub/apps/design/basics/images/titlebar/search.png b/hub/apps/design/basics/images/titlebar/search.png deleted file mode 100644 index 4a5efc4141..0000000000 Binary files a/hub/apps/design/basics/images/titlebar/search.png and /dev/null differ diff --git a/hub/apps/design/basics/images/titlebar/tabs.png b/hub/apps/design/basics/images/titlebar/tabs.png deleted file mode 100644 index a2e448e74d..0000000000 Binary files a/hub/apps/design/basics/images/titlebar/tabs.png and /dev/null differ diff --git a/hub/apps/design/basics/images/titlebar/titlebar-overview.png b/hub/apps/design/basics/images/titlebar/titlebar-overview.png deleted file mode 100644 index 2dfa197aac..0000000000 Binary files a/hub/apps/design/basics/images/titlebar/titlebar-overview.png and /dev/null differ diff --git a/hub/apps/design/basics/images/top-nav-silhouette.png b/hub/apps/design/basics/images/top-nav-silhouette.png deleted file mode 100644 index d0c658cb8b..0000000000 Binary files a/hub/apps/design/basics/images/top-nav-silhouette.png and /dev/null differ diff --git a/hub/apps/design/basics/images/universal-image-1.jpg b/hub/apps/design/basics/images/universal-image-1.jpg deleted file mode 100644 index 88002223cb..0000000000 Binary files a/hub/apps/design/basics/images/universal-image-1.jpg and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/adaptive-layout-small-after.PNG b/hub/apps/design/basics/images/xaml-basics/adaptive-layout-small-after.PNG deleted file mode 100644 index 0666b4eea1..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/adaptive-layout-small-after.PNG and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/adaptive-layout-small-before.PNG b/hub/apps/design/basics/images/xaml-basics/adaptive-layout-small-before.PNG deleted file mode 100644 index 61503e87f8..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/adaptive-layout-small-before.PNG and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/clone-repo.png b/hub/apps/design/basics/images/xaml-basics/clone-repo.png deleted file mode 100644 index 7b5bf06619..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/clone-repo.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/detailpage.png b/hub/apps/design/basics/images/xaml-basics/detailpage.png deleted file mode 100644 index 00e15a3bd7..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/detailpage.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/doc-outline-reset.png b/hub/apps/design/basics/images/xaml-basics/doc-outline-reset.png deleted file mode 100644 index 66ddcde811..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/doc-outline-reset.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/effect-sliders-after-label-fix.png b/hub/apps/design/basics/images/xaml-basics/effect-sliders-after-label-fix.png deleted file mode 100644 index 7dbca1f8fb..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/effect-sliders-after-label-fix.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/effect-sliders-before-label-fix.png b/hub/apps/design/basics/images/xaml-basics/effect-sliders-before-label-fix.png deleted file mode 100644 index 36efbd9661..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/effect-sliders-before-label-fix.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/gallery-with-fit-to-screen.png b/hub/apps/design/basics/images/xaml-basics/gallery-with-fit-to-screen.png deleted file mode 100644 index b3e93b4ea8..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/gallery-with-fit-to-screen.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/gallery-with-placeholder-templates.png b/hub/apps/design/basics/images/xaml-basics/gallery-with-placeholder-templates.png deleted file mode 100644 index 48c066c071..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/gallery-with-placeholder-templates.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/gallery-with-populated-templates.png b/hub/apps/design/basics/images/xaml-basics/gallery-with-populated-templates.png deleted file mode 100644 index 61ef4fedd3..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/gallery-with-populated-templates.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/gallery-with-zoom-control.png b/hub/apps/design/basics/images/xaml-basics/gallery-with-zoom-control.png deleted file mode 100644 index 57095c0031..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/gallery-with-zoom-control.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/layout-0.png b/hub/apps/design/basics/images/xaml-basics/layout-0.png deleted file mode 100644 index 2b5aa5c191..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/layout-0.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/layout-1.png b/hub/apps/design/basics/images/xaml-basics/layout-1.png deleted file mode 100644 index eb80e219ac..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/layout-1.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/layout-2.png b/hub/apps/design/basics/images/xaml-basics/layout-2.png deleted file mode 100644 index f3f5864c23..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/layout-2.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/layout-3.png b/hub/apps/design/basics/images/xaml-basics/layout-3.png deleted file mode 100644 index d085eaf29e..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/layout-3.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/layout-vs-settings.png b/hub/apps/design/basics/images/xaml-basics/layout-vs-settings.png deleted file mode 100644 index fd36f0008b..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/layout-vs-settings.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/mainpage.png b/hub/apps/design/basics/images/xaml-basics/mainpage.png deleted file mode 100644 index 47ef89a10e..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/mainpage.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/margins.png b/hub/apps/design/basics/images/xaml-basics/margins.png deleted file mode 100644 index 719428eecc..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/margins.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/slider-start.png b/hub/apps/design/basics/images/xaml-basics/slider-start.png deleted file mode 100644 index cee9e26a09..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/slider-start.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/style-2sliders-done.png b/hub/apps/design/basics/images/xaml-basics/style-2sliders-done.png deleted file mode 100644 index 6539bf54b0..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/style-2sliders-done.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/style-3sliders-done.png b/hub/apps/design/basics/images/xaml-basics/style-3sliders-done.png deleted file mode 100644 index 1e3eca6b23..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/style-3sliders-done.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/style-detail-page-explorer.png b/hub/apps/design/basics/images/xaml-basics/style-detail-page-explorer.png deleted file mode 100644 index 7a179e8c6a..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/style-detail-page-explorer.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/style-exposure-slider-done.png b/hub/apps/design/basics/images/xaml-basics/style-exposure-slider-done.png deleted file mode 100644 index 1adbbaac91..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/style-exposure-slider-done.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/style-sliders-templates.png b/hub/apps/design/basics/images/xaml-basics/style-sliders-templates.png deleted file mode 100644 index 38367a3742..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/style-sliders-templates.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/style-volume-slider.png b/hub/apps/design/basics/images/xaml-basics/style-volume-slider.png deleted file mode 100644 index fd8d6b8b21..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/style-volume-slider.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/text-block-properties.png b/hub/apps/design/basics/images/xaml-basics/text-block-properties.png deleted file mode 100644 index 23c132a644..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/text-block-properties.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/unicorn.png b/hub/apps/design/basics/images/xaml-basics/unicorn.png deleted file mode 100644 index e49b438ad9..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/unicorn.png and /dev/null differ diff --git a/hub/apps/design/basics/images/xaml-basics/visual-studio-tools.png b/hub/apps/design/basics/images/xaml-basics/visual-studio-tools.png deleted file mode 100644 index 5277c45350..0000000000 Binary files a/hub/apps/design/basics/images/xaml-basics/visual-studio-tools.png and /dev/null differ diff --git a/hub/apps/design/basics/index.md b/hub/apps/design/basics/index.md deleted file mode 100644 index e9da8e1b33..0000000000 --- a/hub/apps/design/basics/index.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -description: Learn how to design and code a Windows app that's easy to navigate and looks great on a variety of devices and screen sizes. -title: Design basics -keywords: uwp app layout, universal windows platform, app design, interface, windows app layout -ms.date: 09/30/2021 -ms.topic: article -ms.localizationpriority: medium ---- -# Design basics for Windows apps - -Windows design guidance is a resource to help you design and build beautiful, polished apps. It’s not a list of prescriptive rules - it’s a living document, designed to adapt to our evolving design language as well as the needs of our app-building community. - -## Overview - -:::row::: - :::column::: - :::image type="content" source="images/app-silhouette-hero.png" alt-text="App silhouette hero image"::: - :::column-end::: - :::column::: - [**App Silhouette**](app-silhouette.md) - -A high-level look at app patterns commonly used across our in-box applications. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - :::image type="content" source="images/signature-experiences-hero.png" alt-text="Signature experiences hero image"::: - :::column-end::: - :::column::: - [**Windows 11 Signature Experiences**](../signature-experiences/signature-experiences.md) - -See what’s new for Windows 11 design elements. - :::column-end::: -:::row-end::: - -## Basics - -:::row::: - :::column::: - :::image type="content" source="images/navigation-basics-hero.png" alt-text="Navigation basics hero image"::: - :::column-end::: - :::column::: - [**Navigation basics**](navigation-basics.md) - -Navigation in Windows apps is based on a flexible model of navigation structures, navigation elements, and system-level features. This article introduces you to these components and shows you how to use them together to create a good navigation experience. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - :::image type="content" source="images/command-basics-hero.png" alt-text="Command basics hero image"::: - :::column-end::: - :::column::: - [**Command basics**](commanding-basics.md) - -Command elements are the interactive UI elements that enable the user to perform actions, such as sending an email, deleting an item, or submitting a form. This article describes the command elements, such as buttons and check boxes, the interactions they support, and the command surfaces (such as command bars and context menus) for hosting them. - :::column-end::: -:::row-end::: -:::row::: - :::column::: - :::image type="content" source="images/content-basics-hero.png" alt-text="Content basics hero image"::: - :::column-end::: - :::column::: - [**Content basics**](content-basics.md) - -This article provides some practical tips and examples to help you design the content of your app: Windows spacing rationale, using the type ramp to demonstrate hierarchy, lists and grids, and how to group controls. - :::column-end::: -:::row-end::: diff --git a/hub/apps/design/basics/navigate-between-two-pages.md b/hub/apps/design/basics/navigate-between-two-pages.md deleted file mode 100644 index 1e91759512..0000000000 --- a/hub/apps/design/basics/navigate-between-two-pages.md +++ /dev/null @@ -1,465 +0,0 @@ ---- -description: Learn how to enable peer-to-peer navigation between two basic pages in an Windows app. -title: Peer-to-peer navigation between two pages -ms.assetid: 0A364C8B-715F-4407-9426-92267E8FB525 -label: Peer-to-peer navigation between two pages -template: detail.hbs -op-migration-status: ready -ms.date: 04/03/2025 -ms.topic: how-to -ms.localizationpriority: medium -dev_langs: -- csharp -- cppwinrt ---- - -# Implement navigation between two pages - -Learn how to use a frame and pages to enable basic peer-to-peer navigation in your app. - -![peer to peer navigation](images/peertopeer.png) - -Almost every app requires navigation between pages. Even a simple app with a single content page will typically have a settings page that requires navigation. In this article, we walk through the basics of adding a XAML `Page` to your app, and using a `Frame` to navigate between pages. - -> [!div class="checklist"] -> -> - **Applies to**: Windows App SDK/WinUI3 -> - **Important APIs**: [Microsoft.UI.Xaml.Controls.Frame](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame) class, [Microsoft.UI.Xaml.Controls.Page](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page) class, [Microsoft.UI.Xaml.Navigation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.navigation) namespace - -> [!NOTE] -> For navigation in UWP apps, see [App navigation (UWP)](/windows/uwp/ui-input/app-navigation) - -## 1. Create a blank app - -To create a blank app in Visual Studio: - -1. To set up your development computer, see [Start developing Windows apps](../../get-started/start-here.md). -1. From the Microsoft Visual Studio start window, select **Create a new project**, OR, on the Visual Studio menu, choose **File** > **New** > **Project**. -1. In the **Create a new project** dialog's drop-down filters, select **C#** or **C++**, **Windows**, and **WinUI**, respectively. -1. Select the **Blank App, Packaged (WinUI 3 in Desktop)** project template, and click **Next**. That template creates a desktop app with a WinUI 3-based user interface. -1. In the **Project name** box, enter `BasicNavigation`, and click **Create**. -1. To run the program, choose **Debug** > **Start Debugging** from the menu, or press F5. Build and run your solution on your development computer to confirm that the app runs without errors. A blank page is displayed. -1. To stop debugging and return to Visual Studio, exit the app, or click **Stop Debugging** from the menu. -1. Remove any example code that's included in the template from the `MainWindow.xaml` and `MainWindow` code-behind files. - -## 2. Use a Frame to navigate between pages - -When your app has multiple pages, you use a [Frame](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame) to navigate between them. The `Frame` class supports various navigation methods such as [Navigate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.navigate), [GoBack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.goback), and [GoForward](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.goforward), and properties such as [BackStack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.backstack), [ForwardStack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.forwardstack), and [BackStackDepth](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.backstackdepth). - -When you create a new Windows App SDK project in Visual Studio, the project template creates a `MainWindow` class (of type [Microsoft.UI.Xaml.Window](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.window)). However, it doesn't create a [Frame](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame) or [Page](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page) and doesn't provide any navigation code. - -To enable navigation between pages, add a `Frame` as the root element of `MainWindow`. You can do that in the [Application.OnLaunched](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.application.onlaunched) method override in the `App.xaml` code-behind file. Open the `App` code-behind file, update the `OnLaunched` override, and handle the [NavigationFailed](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.navigationfailed) event as shown here. - -```csharp -// App.xaml.cs - -protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) -{ - m_window = new MainWindow(); - - // Create a Frame to act as the navigation context and navigate to the first page - Frame rootFrame = new Frame(); - rootFrame.NavigationFailed += OnNavigationFailed; - // Navigate to the first page, configuring the new page - // by passing required information as a navigation parameter - rootFrame.Navigate(typeof(MainPage), args.Arguments); - - // Place the frame in the current Window - m_window.Content = rootFrame; - // Ensure the MainWindow is active - m_window.Activate(); -} - -void OnNavigationFailed(object sender, NavigationFailedEventArgs e) -{ - throw new Exception("Failed to load Page " + e.SourcePageType.FullName); -} -``` - -```cppwinrt -// App.xaml.h - -// Add after OnLaunched declaration. -void OnNavigationFailed(IInspectable const&, Microsoft::UI::Xaml::Navigation::NavigationFailedEventArgs const&); - -/////////////// -// App.xaml.cpp - -void App::OnLaunched(LaunchActivatedEventArgs const& e) -{ - window = make(); - Frame rootFrame = Frame(); - rootFrame.NavigationFailed({ this, &App::OnNavigationFailed }); - rootFrame.Navigate(xaml_typename(), box_value(e.Arguments())); - window.Content(rootFrame); - window.Activate(); -} - -void App::OnNavigationFailed(IInspectable const&, NavigationFailedEventArgs const& e) -{ - throw hresult_error(E_FAIL, hstring(L"Failed to load Page ") + e.SourcePageType().Name); -} -``` - -> [!NOTE] -> For apps with more complex navigation, you will typically use a [NavigationView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.navigationview) as the root of MainWindow, and place a `Frame` as the content of the navigation view. For more info, see [Navigation view](../controls/navigationview.md). - -The [Navigate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.navigate) method is used to display content in this `Frame`. Here, `MainPage.xaml` is passed to the `Navigate` method, so the method loads `MainPage` in the `Frame`. - -If the navigation to the app's initial window fails, a `NavigationFailed` event occurs, and this code throws an exception in the event handler. - -## 3. Add basic pages - -The **Blank App** template doesn't create multiple app pages for you. Before you can navigate between pages, you need to add some pages to your app. - -To add a new item to your app: - -1. In **Solution Explorer**, right-click the `BasicNavigation` project node to open the context menu. -1. Choose **Add** > **New Item** from the context menu. -1. In the **Add New Item** dialog box, select the **WinUI** node in the left pane, then choose **Blank Page (WinUI 3)** in the middle pane. -1. In the **Name** box, enter `MainPage` and press the **Add** button. -1. Repeat steps 1-4 to add the second page, but in the **Name** box, enter `Page2`. - -Now, these files should be listed as part of your `BasicNavigation` project. - - - - - - - - - - - - - - -
C#C++
    -
  • MainPage.xaml
  • -
  • MainPage.xaml.cs
  • -
  • Page2.xaml
  • -
  • Page2.xaml.cs
  • -
    -
  • MainPage.xaml
  • -
  • MainPage.xaml.cpp
  • -
  • MainPage.xaml.h
  • -
  • Page2.xaml
  • -
  • Page2.xaml.cpp
  • -
  • Page2.xaml.h -
  • -
- -> [!IMPORTANT] -> **For C++ projects**, you must add a `#include` directive in the header file of each page that references another page. For the inter-page navigation example presented here, **MainPage.xaml.h** file contains `#include "Page2.xaml.h"`, in turn, **Page2.xaml.h** contains `#include "MainPage.xaml.h"`. -> -> C++ page templates also include an example `Button` and click handler code that you will need to remove from the XAML and code-behind files for the page. - -### Add content to the pages - -In `MainPage.xaml`, replace the existing page content with the following content: - -```xaml - - - - -``` - -This XAML adds: - -- A [TextBlock](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textblock) element named `pageTitle` with its [Text](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textblock.text) property set to `Main Page` as a child element of the root [Grid](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.Grid). -- A [HyperlinkButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.hyperlinkbutton) element that is used to navigate to the next page as a child element of the root [Grid](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.grid). - -In the `MainPage` code-behind file, add the following code to handle the `Click` event of the [HyperlinkButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.hyperlinkbutton) you added to enable navigation to `Page2.xaml`. - -```csharp -// MainPage.xaml.cs - -private void HyperlinkButton_Click(object sender, RoutedEventArgs e) -{ - Frame.Navigate(typeof(Page2)); -} -``` - -```cppwinrt -// pch.h -// Add this include in pch.h to support winrt::xaml_typename - -#include - -//////////////////// -// MainPage.xaml.h - -void HyperlinkButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e); - -//////////////////// -// MainPage.xaml.cpp - -void winrt::BasicNavigation::implementation::MainPage::HyperlinkButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e) -{ - Frame().Navigate(winrt::xaml_typename()); -} -``` - -`MainPage` is a subclass of the [Page](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page) class. The `Page` class has a read-only [Frame](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page.frame) property that gets the `Frame` containing the `Page`. When the `Click` event handler of the `HyperlinkButton` in `MainPage` calls `Frame.Navigate(typeof(Page2))`, the `Frame` displays the content of `Page2.xaml`. - -Whenever a page is loaded into the frame, that page is added as a [PageStackEntry](/uwp/api/Windows.UI.Xaml.Navigation.PageStackEntry) to the [BackStack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.backstack) or [ForwardStack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.forwardstack) of the [Frame](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page.frame), allowing for [history and backwards navigation](navigation-history-and-backwards-navigation.md). - -Now, do the same in `Page2.xaml`. Replace the existing page content with the following content: - -```xaml - - - - -``` - -In the `Page2` code-behind file, add the following code to handle the `Click` event of the [HyperlinkButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.hyperlinkbutton) to navigate to `MainPage.xaml`. - -```csharp -// Page2.xaml.cs - -private void HyperlinkButton_Click(object sender, RoutedEventArgs e) -{ - Frame.Navigate(typeof(MainPage)); -} -``` - -```cppwinrt -// Page2.xaml.h - -void HyperlinkButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e); - -///////////////// -// Page2.xaml.cpp - -void winrt::BasicNavigation::implementation::Page2::HyperlinkButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e) -{ - Frame().Navigate(winrt::xaml_typename()); -} -``` - -Build and run the app. Click the link that says "Click to go to page 2". The second page that says "Page 2" at the top should be loaded and displayed in the frame. Now click the link on Page 2 to go back to Main Page. - -## 4. Pass information between pages - -Your app now navigates between two pages, but it really doesn't do anything interesting yet. Often, when an app has multiple pages, the pages need to share information. Now you'll pass some information from the first page to the second page. - -In `MainPage.xaml`, replace the `HyperlinkButton` you added earlier with the following [StackPanel](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.StackPanel). This adds a [TextBlock](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.TextBlock) label and a [TextBox](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.TextBox) `name` for entering a text string. - -```xaml - - - - - -``` - -Now you'll use the second overload of the `Navigate` method and pass the text from the text box as the second parameter. Here's the signature of this `Navigate` overload: - -```csharp -public bool Navigate(System.Type sourcePageType, object parameter); -``` - -```cppwinrt -bool Navigate(TypeName const& sourcePageType, IInspectable const& parameter); -``` - -In the `HyperlinkButton_Click` event handler of the `MainPage` code-behind file, add a second parameter to the `Navigate` method that references the `Text` property of the `name` text box. - -```csharp -// MainPage.xaml.cs - -private void HyperlinkButton_Click(object sender, RoutedEventArgs e) -{ - Frame.Navigate(typeof(Page2), name.Text); -} -``` - -```cppwinrt -// MainPage.xaml.cpp - -void winrt::BasicNavigation::implementation::MainPage::HyperlinkButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e) -{ - Frame().Navigate(xaml_typename(), winrt::box_value(name().Text())); -} -``` - -In `Page2.xaml`, replace the `HyperlinkButton` you added earlier with the following `StackPanel`. This adds a [TextBlock](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.TextBlock) for displaying the text string passed from `MainPage`. - -```xaml - - - - -``` - -In the `Page2` code-behind file, add the following code to override the `OnNavigatedTo` method: - -```csharp -// Page2.xaml.cs - -protected override void OnNavigatedTo(NavigationEventArgs e) -{ - if (e.Parameter is string && !string.IsNullOrWhiteSpace((string)e.Parameter)) - { - greeting.Text = $"Hello, {e.Parameter.ToString()}"; - } - else - { - greeting.Text = "Hello!"; - } - base.OnNavigatedTo(e); -} -``` - -```cppwinrt -// Page2.xaml.h - -void Page2::OnNavigatedTo(Microsoft::UI::Xaml::Navigation::NavigationEventArgs const& e) -{ - auto propertyValue{ e.Parameter().as() }; - if (propertyValue.Type() == Windows::Foundation::PropertyType::String) - { - auto name{ winrt::unbox_value(e.Parameter()) }; - if (!name.empty()) - { - greeting().Text(L"Hello, " + name); - __super::OnNavigatedTo(e); - return; - } - } - greeting().Text(L"Hello!"); - __super::OnNavigatedTo(e); -} -``` - -Run the app, type your name in the text box, and then click the link that says `Click to go to page 2`. - -When the `Click` event of the `HyperlinkButton` in `MainPage` calls `Frame.Navigate(typeof(Page2), name.Text)`, the `name.Text` property is passed to `Page2`, and the value from the event data is used for the message displayed on the page. - -## 5. Cache a page - -Page content and state is not cached by default, so if you'd like to cache information, you must enable it in each page of your app. - -In our basic peer-to-peer example, when you click the `Click to go to page 1` link on `Page2`, the `TextBox` (and any other field) on `MainPage` is set to its default state. One way to work around this is to use the [NavigationCacheMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page.navigationcachemode) property to specify that a page be added to the frame's page cache. - -By default, a new page instance is created with its default values every time navigation occurs. In `MainPage.xaml`, set `NavigationCacheMode` to `Enabled` (in the opening `Page` tag) to cache the page and retain all content and state values for the page until the page cache for the frame is exceeded. Set [NavigationCacheMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page.navigationcachemode) to [Required](/uwp/api/Windows.UI.Xaml.Navigation.NavigationCacheMode) if you want to ignore [CacheSize](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.cachesize) limits, which specify the number of pages in the navigation history that can be cached for the frame. However, keep in mind that cache size limits might be crucial, depending on the memory limits of a device. - -```xaml - -``` - -Now, when you click back to main page, the name you entered in the text box is still there. - -## 6. Customize page transition animations - -By default, each page is animated into the frame when navigation occurs. The default animation is an "entrance" animation that causes the page to slide up from the bottom of the window. However, you can choose different animation options that better suit the navigation of your app. For example, you can use a "drill in" animation to give the feeling that the user is going deeper into your app, or a horizontal slide animation to give the feeling that two pages are peers. For more info, see [Page transitions](../motion/page-transitions.md). - -These animations are represented by sub-classes of [NavigationTransitionInfo](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationtransitioninfo). To specify the animation to use for a page transition, you'll use the third overload of the `Navigate` method and pass a `NavigationTransitionInfo` sub-class as the third parameter (`infoOverride`). Here's the signature of this `Navigate` overload: - -```csharp -public bool Navigate(System.Type sourcePageType, - object parameter, - NavigationTransitionInfo infoOverride); -``` - -```cppwinrt -bool Navigate(TypeName const& sourcePageType, - IInspectable const& parameter, - NavigationTransitionInfo const& infoOverride); -``` - -In the `HyperlinkButton_Click` event handler of the `MainPage` code-behind file, add a third parameter to the `Navigate` method that sets the `infoOverride` parameter to a [SlideNavigationTransitionInfo](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.slidenavigationtransitioninfo) with its [Effect](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.slidenavigationtransitioninfo.effect) property set to [FromRight](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.slidenavigationtransitioneffect). - -```csharp -// MainPage.xaml.cs - -private void HyperlinkButton_Click(object sender, RoutedEventArgs e) -{ - Frame.Navigate(typeof(Page2), - name.Text, - new SlideNavigationTransitionInfo() - { Effect = SlideNavigationTransitionEffect.FromRight}); -} -``` - -```cppwinrt -// pch.h - -#include - -//////////////////// -// MainPage.xaml.cpp - -using namespace winrt::Microsoft::UI::Xaml::Media::Animation; - -// ... - -void winrt::BasicNavigation::implementation::MainPage::HyperlinkButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e) -{ - // Create the slide transition and set the transition effect to FromRight. - SlideNavigationTransitionInfo slideEffect = SlideNavigationTransitionInfo(); - slideEffect.Effect(SlideNavigationTransitionEffect(SlideNavigationTransitionEffect::FromRight)); - Frame().Navigate(winrt::xaml_typename(), - winrt::box_value(name().Text()), - slideEffect); -} -``` - -In the `HyperlinkButton_Click` event handler of the `Page2` code-behind file, set the `infoOverride` parameter to a [SlideNavigationTransitionInfo](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.slidenavigationtransitioninfo) with its [Effect](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.slidenavigationtransitioninfo.effect) property set to [FromLeft](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.slidenavigationtransitioneffect). - - - -```csharp -// Page2.xaml.cs - -private void HyperlinkButton_Click(object sender, RoutedEventArgs e) -{ - Frame.Navigate(typeof(MainPage), - null, - new SlideNavigationTransitionInfo() - { Effect = SlideNavigationTransitionEffect.FromLeft}); -} -``` - -```cppwinrt -// Page2.xaml.cpp - -using namespace winrt::Microsoft::UI::Xaml::Media::Animation; - -// ... - -void winrt::BasicNavigation::implementation::MainPage::HyperlinkButton_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e) -{ - // Create the slide transition and set the transition effect to FromLeft. - SlideNavigationTransitionInfo slideEffect = SlideNavigationTransitionInfo(); - slideEffect.Effect(SlideNavigationTransitionEffect(SlideNavigationTransitionEffect::FromLeft)); - Frame().Navigate(winrt::xaml_typename(), - nullptr, - slideEffect); -} -``` - -Now, when you navigate between pages, the pages slide left and right, which provides a more natural feeling for this transition and reinforces the connection between the pages. - -## Related articles - -- [Navigation design basics for Windows apps](./navigation-basics.md) -- [Navigation view](../controls/navigationview.md) -- [Navigation history and backwards navigation](navigation-history-and-backwards-navigation.md) diff --git a/hub/apps/design/basics/navigation-basics.md b/hub/apps/design/basics/navigation-basics.md deleted file mode 100644 index 8873694e8b..0000000000 --- a/hub/apps/design/basics/navigation-basics.md +++ /dev/null @@ -1,314 +0,0 @@ ---- -description: Navigation in Windows apps is based on a flexible model of navigation structures, navigation elements, and system-level features. -title: Navigation basics for Windows apps -ms.assetid: B65D33BA-AAFE-434D-B6D5-1A0C49F59664 -label: Navigation design basics -template: detail.hbs -op-migration-status: ready -ms.date: 04/03/2025 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium -ms.custom: RS5 ---- -# Navigation design basics for Windows apps - -![Navigation basics header](images/nav/navigation-basics-header.jpg) - -If you think of an app as a collection of pages, *navigation* describes the act of moving between pages and within a page. It's the starting point of the user experience, and it's how users find the content and features they're interested in. It's very important, and it can be difficult to get right. - -You have a huge number of choices to make for navigation. You could: - -:::row::: - :::column::: - ![navigation example 1](images/nav/nav-1.svg) - Require users to go through a series of pages in order. - :::column-end::: - :::column::: - ![navigation example 2](images/nav/nav-2.svg) - Provide a menu that allows users to jump directly to any page. - :::column-end::: - :::column::: - ![navigation example 3](images/nav/nav-3.svg) - Place everything on a single page and provide filtering mechanisms for viewing content. - :::column-end::: -:::row-end::: - -While there's no single navigation design that works for every app, there are principles and guidelines to help you decide the right design for your app. - -## Principles of good navigation - -Let's start with the basic principles of good navigation design: - -- **Consistency:** Meet user expectations. -- **Simplicity:** Don't do more than you need to. -- **Clarity:** Provide clear paths and options. - -### Consistency - -Navigation should be consistent with user expectations. Using [standard controls](#use-the-right-controls) that users are familiar with and following standard conventions for icons, location, and styling will make navigation predictable and intuitive for users. - -![page components image](images/nav/page-components.svg) - -> *Users expect to find certain UI elements in standard locations.* - -### Simplicity - -Fewer navigation items simplify decision making for users. Providing easy access to important destinations and hiding less important items will help users get where they want, faster. - -:::row::: - :::column::: - ![First screenshot of a green bar that has a green check mark and the word Do in it.](images/nav/do.svg) - - ![navview good](images/nav/navview-good.svg) - -Present navigation items in a familiar navigation menu. - :::column-end::: - :::column::: - ![don't example](images/nav/dont.svg) - - ![navview bad](images/nav/navview-bad.svg) - -Don't overwhelm users with many navigation options. - :::column-end::: -:::row-end::: - -### Clarity - -Clear paths allow for logical navigation for users. Making navigation options obvious and clarifying relationships between pages should prevent users from getting lost. - -![Screenshot of a mock-up of an application showing clear paths fo navigation for a user.](images/nav/clarity-image.svg) - -> *Destinations are clearly labeled so users know where they are.* - -## General recommendations - -Now, let's take our design principles--consistency, simplicity, and clarity--and use them to come up with some general recommendations. - -- Think about your users. Trace out typical paths they might take through your app, and for each page, think about why the user is there and where they might want to go. -- Avoid deep navigation hierarchies. If you go beyond two levels of navigation, provide a [breadcrumb bar](../controls/breadcrumbbar.md) that shows the user where they are and let's them quickly get back out. Otherwise, you risk stranding your user in a deep hierarchy that they will have difficulty leaving. -- Avoid "pogo-sticking." Pogo-sticking occurs when there is related content, but navigating to it requires the user to go up a level and then down again. - -## Use the right structure - -Now that you're familiar with general navigation principles, how should you structure your app? There are two general structures: flat and hierarchal. - -:::row::: - :::column::: - ![Pages arranged in a flat structure](images/nav/flat-lateral-structure.svg) - :::column-end::: - :::column span="2"::: - ### Flat/lateral - -In a flat/lateral structure, pages exist side-by-side. You can go from one page to another in any order. - -We recommend using a flat structure when: - -- The pages can be viewed in any order. -- The pages are clearly distinct from each other and don't have an obvious parent/child relationship. -- There are less than 8 pages in the group.
-(When there are more pages, it might be difficult for users to understand how the pages are unique or to understand their current location within the group. If you don't think that's an issue for your app, go ahead and make the pages peers. Otherwise, consider using a hierarchical structure to break the pages into two or more smaller groups.) - - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![Pages arranged in a hierarchy](images/nav/hierarchical-structure.svg) - :::column-end::: - :::column span="2"::: - ### Hierarchical - -In a hierarchical structure, pages are organized into a tree-like structure. Each child page has one parent, but a parent can have one or more child pages. To reach a child page, you travel through the parent. - -Hierarchical structures are good for organizing complex content that spans lots of pages. The downside is some navigation overhead: the deeper the structure, the more clicks it takes to get from page to page. - -We recommend a hierarchical structure when: - -- Pages should be traversed in a specific order. -- There is a clear parent-child relationship between pages. -- There are more than 7 pages in the group. - - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![an app with a hybrid structure](images/nav/combining-structures.svg) - :::column-end::: - :::column span="2"::: - ### Combining structures - -You don't have to choose one structure or the other; many well-designed apps use both. An app can use flat structures for top-level pages that can be viewed in any order, and hierarchical structures for pages that have more complex relationships. - -If your navigation structure has multiple levels, we recommend that peer-to-peer navigation elements only link to the peers within their current subtree. Consider the adjacent illustration, which shows a navigation structure that has two levels: - -- At level 1, the peer-to-peer navigation element should provide access to pages A, B, and C. -- At level 2, the peer-to-peer navigation elements for the A2 pages should only link to the other A2 pages. They should not link to level 2 pages in the C subtree. - :::column-end::: -:::row-end::: - -## Use the right controls - -Once you've decided on a page structure, you need to decide how users navigate through those pages. XAML provides a variety of navigation controls to help ensure a consistent, reliable navigation experience in your app. - -:::row::: - :::column::: - ![Frame image](images/nav/thumbnail-frame.svg) - :::column-end::: - :::column span="2"::: - [**Frame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame) - -With few exceptions, any app that has multiple pages uses a frame. Typically, an app has a main page that contains the frame and a primary navigation element, such as a navigation view control. When the user selects a page, the frame loads and displays it. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![tabs and pivot image](images/nav/thumbnail-tabs-pivot.svg) - :::column-end::: - :::column span="2"::: - [**Top navigation**](../controls/navigationview.md) - -Displays a horizontal list of links to pages at the same level. The [NavigationView](../controls/navigationview.md) control implements the top navigation pattern. - -Use top navigation when: - -- You want to show all navigation options on the screen. -- You desire more space for your app's content. -- Icons cannot clearly describe your navigation categories. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![tabs and pivot image](images/nav/thumbnail-tabs-pivot.svg) - :::column-end::: - :::column span="2"::: - [**Tabs**](../controls/tab-view.md) - -Displays a horizontal set of tabs and their respective content. The [TabView](../controls/tab-view.md) control is useful for displaying several pages (or documents) while giving the user the capability to rearrange, open, or close tabs. - -Use tabs when: - -- You want users to be able to dynamically open, close, or rearrange tabs. -- You expect that there might be a large number of tabs open at once. -- You expect users to be able to easily move tabs between windows in your application that use tabs, similar to web browsers like Microsoft Edge. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![tabs and pivot image](images/nav/thumbnail-tabs-pivot.svg) - :::column-end::: - :::column span="2"::: - [**Breadcrumb**](../controls/breadcrumbbar.md) - -Displays a horizontal list of links to pages at each of the higher levels. The [BreadcrumbBar](../controls/breadcrumbbar.md) control implements the top navigation pattern. - -Use a breadcrumb when: - -- You want to show the path to the current location -- You have many levels of navigation -- You expect users to be able to return to any previous level - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - - ![navview image](images/nav/thumbnail-navview.svg) - :::column-end::: - :::column span="2"::: - [**Left navigation**](../controls/navigationview.md) - -Displays a vertical list of links to top-level pages. Use when: - -- The pages exist at the top level. -- There are many navigation items (more than 5) -- You don't expect users to switch between pages frequently. - :::column-end::: -:::row-end::: -:::row::: - :::column::: - ![List details image](images/nav/thumbnail-list-detail.svg) - :::column-end::: - :::column span="2"::: - [**List/details**](../controls/list-details.md) - -Displays a list of items. Selecting an item displays its corresponding page in the details section. Use when: - -- You expect users to switch between child items frequently. -- You want to enable the user to perform high-level operations, such as deleting or sorting, on individual items or groups of items, and also want to enable the user to view or update the details for each item. - -List/details is well suited for email inboxes, contact lists, and data entry. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![Hyperlinks and buttons image](images/nav/thumbnail-hyperlinks-buttons.svg) - :::column-end::: - :::column span="2"::: - [**Hyperlinks**](../controls/hyperlinks.md) - -Embedded navigation elements can appear in a page's content. Unlike other navigation elements, which should be consistent across the pages, content-embedded navigation elements are unique from page to page. - :::column-end::: -:::row-end::: - -## Guidelines for custom back navigation behavior - -If you choose to provide your own back stack navigation, the experience should be consistent with other apps. We recommend that you follow the following patterns for navigation actions: - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Navigation actionAdd to navigation history?
Page to page, different peer groupsYes -

In this illustration, the user navigates from level 1 of the app to level 2, crossing peer groups, so the navigation is added to the navigation history.

-

Diagram of navigation across peer groups showing the user navigating from group one to group two and the back to group one.

-

In the next illustration, the user navigates between two peer groups at the same level, again crossing peer groups, so the navigation is added to the navigation history.

-

Diagram of navigation across peer groups showing the user navigating from group one to group two then on to group three and back to group two.

Page to page, same peer group, no on-screen navigation element -

The user navigates from one page to another with the same peer group. There is no on-screen navigation element (such as NavigationView) that provides direct navigation to both pages.

Yes -

In the following illustration, the user navigates between two pages in the same peer group, and the navigation should be added to the navigation history.

-

Navigation within a peer group

Page to page, same peer group, with an on-screen navigation element -

The user navigates from one page to another in the same peer group. Both pages are shown in the same navigation element, such as NavigationView.

It depends -

Yes, add to the navigation history, with two notable exceptions. If you expect users of your app to switch between pages in the peer group frequently, or if you wish to preserve the navigational hierarchy, then do not add to the navigation history. In this case, when the user presses back, go back to the last page before the user navigated to the current peer group.

-

Navigation across peer groups when a navigation element is present

Show a transient UI -

The app displays a pop-up or child window, such as a dialog, splash screen, or on-screen keyboard, or the app enters a special mode, such as multiple selection mode.

No -

When the user presses the back button, dismiss the transient UI (hide the on-screen keyboard, cancel the dialog, etc) and return to the page that spawned the transient UI.

-

Showing a transient UI

Enumerate items -

The app displays content for an on-screen item, such as the details for the selected item in list/details list.

No -

Enumerating items is similar to navigating within a peer group. When the user presses back, navigate to the page that preceded the current page that has the item enumeration.

-

Iterm enumeration

-
- -## Next: Add navigation code to your app - -The next article, [Implement basic navigation](navigate-between-two-pages.md), shows the code required to use a `Frame` control to enable basic navigation between two pages in your app. diff --git a/hub/apps/design/basics/navigation-history-and-backwards-navigation.md b/hub/apps/design/basics/navigation-history-and-backwards-navigation.md deleted file mode 100644 index b0e23b00bb..0000000000 --- a/hub/apps/design/basics/navigation-history-and-backwards-navigation.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -description: Learn how to implement backwards navigation for traversing the user's navigation history within a Windows app. -title: Navigation history and backwards navigation -template: detail.hbs -op-migration-status: ready -ms.date: 04/10/2025 -ms.topic: article -ms.localizationpriority: medium -dev_langs: -- csharp -- cppwinrt ---- -# Navigation history and backwards navigation for Windows apps - -> [!div class="checklist"] -> -> - **Applies to**: Windows App SDK/WinUI3 -> - **Important APIs**: [Frame](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame) class, [Page](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page) class, [Frame.GoBack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.goback) method - -To implement backwards navigation in your app, place a back button at the top left corner of your app's UI. The user expects the back button to navigate to the previous location in the app's navigation history. By default, the [Frame](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame) control records navigation actions in its [BackStack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.backstack) and [ForwardStack](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame.forwardstack). However, you can modify which navigation actions are added to the navigation history. - -> [!NOTE] ->For most apps that have multiple pages, we recommend that you use the [NavigationView](../controls/navigationview.md) control to provide the navigation framework for your app. It adapts to a variety of screen sizes and supports both _top_ and _left_ navigation styles. If your app uses the `NavigationView` control, then you can use [NavigationView's built-in back button](../controls/navigationview.md#backwards-navigation). -> -> The guidelines and examples in this article should be used when you implement navigation without using the `NavigationView` control. If you use `NavigationView`, this information provides useful background knowledge, but you should use the specific guidance and examples in the [NavigationView](../controls/navigationview.md) article - -## Back button - -We recommend that you place the back button in the upper left corner of your app. If you [customize the title bar](../../develop/title-bar.md), place the back button in the title bar. See [Title bar design > Back button](/windows/apps/design/basics/titlebar-design#back-button) for more info. - -If you use the [TitleBar](../controls/title-bar.md) control to create a custom title bar, use the built-in back button. Set [IsBackButtonVisible](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.titlebar.isbackbuttonvisible) to `true`, set [IsBackButtonEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.titlebar.isbackbuttonenabled) as needed, and handle the [BackRequested](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.titlebar.backrequested) event to navigate. - -To create a stand-alone back button, use the [Button](../controls/buttons.md) control with the `TitleBarBackButtonStyle` resource, and place the button at the top left hand corner of your app's UI (for details, see the XAML code examples below). - -![Back button in the top left of the app's UI](images/back-nav/back-enabled.png) - -```xaml - - - - - - - - -``` - -```cs -private void Button_PointerEntered(object sender, PointerRoutedEventArgs e) -{ - AnimatedIcon.SetState(this.BackAnimatedIcon, "PointerOver"); -} - -private void Button_PointerExited(object sender, PointerRoutedEventArgs e) -{ - AnimatedIcon.SetState(this.BackAnimatedIcon, "Normal"); -} -``` - -### Add an AnimatedIcon to NavigationViewItem - -The NavigationViewItem control automatically sets common states on an AnimatedIcon based on the state of the control, if those markers are defined in the Lottie animation. - -For example, the following example shows how to set a custom animation (`GameSettingsIcon`) that was generated by the LottieGen tool: - -```xaml - - - - - - - - - - - - - - -``` - -![Animated Settings Gear](images/animated-settings.gif) - -The NavigationViewItem automatically sets the following states on the AnimatedIcon: - -- Normal -- PointerOver -- Pressed -- Selected -- PressedSelected -- PointerOverSelected - -If `GameSettingsIcon` has a marker defined for "NormalToPointerOver", the icon will be animated until the pointer moves over the NavigationViewItem. See the following section for more information on creating markers. - -## Define AnimatedIcon markers - -To create the custom `GameSettingsIcon` in the previous example, run a Lottie JSON file (with markers) through the Windows [LottieGen](/windows/communitytoolkit/animations/lottie-scenarios/getting_started_codegen) tool to generate the animation code as a C# class. - -Once you run your Lottie file through LottieGen you can add the CodeGen output class to your project. See the [LottieGen](/windows/communitytoolkit/animations/lottie-scenarios/getting_started_codegen) tutorial for more information. - -Setting the AnimatedIcon state to a new value also sets a playback position in the Lottie animation for the transition from the old state to the new state. These playback positions are also identified with markers in the Lottie file. Specific markers for the start of the transition or the end of the transition can also be defined. - -For example, the [AutoSuggestBox](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox) control uses an AnimatedIcon that animates with the following states: - -- Normal -- PointerOver -- Pressed - -You can define markers in your Lottie file with those state names. You can also define markers as follows: - -- Insert "To" between state names. For example, if you define a "NormalToPointerOver" marker, changing the AnimatedIcon state from "Normal" to "PointerOver" will cause it to move to this marker's playback position. -- Append "_Start" or "_End" to a marker name. For example defining markers "NormalToPointerOver_Start" and "NormalToPointerOver_End" and changing the AnimatedIcon state from "Normal" to "PointerOver" will cause it to jump to the _Start marker's playback position and then animate to the _End playback position. - -The exact algorithm used to map AnimatedIcon State changes to marker playback positions: - -- Check the provided file's markers for the markers "[PreviousState]To[NewState]_Start" and "[PreviousState]To[NewState]_End". If both are found play the animation from "[PreviousState]To[NewState]_Start" to "[PreviousState]To[NewState]_End". -- If "[PreviousState]To[NewState]_Start" is not found but "[PreviousState]To[NewState]_End" is found, then hard cut to the "[PreviousState]To[NewState]_End" playback position. -- If "[PreviousState]To[NewState]_End" is not found but "[PreviousState]To[NewState]_Start" is found, then hard cut to the "[PreviousState]To[NewState]_Start" playback position. -- Check if the provided IAnimatedVisualSource2's markers for the marker "[PreviousState]To[NewState]". If it is found then hard cut to the "[PreviousState]To[NewState]" playback position. -- Check if the provided IAnimatedVisualSource2's markers for the marker "[NewState]". If it is found, then hard cut to the "[NewState]" playback position. -- Check if the provided IAnimatedVisualSource2's markers has any marker which ends with "To[NewState]_End". If any marker is found which has that ending, hard cut to the first marker found with the appropriate ending's playback position. -- Check if "[NewState]" parses to a float. If it does, animated from the current position to the parsed float. -- Hard cut to playback position 0.0. - -The following example shows the marker format in a Lottie JSON file. See the AnimatedIcon guidance for more detail. - -```json -"markers":[{"tm":0,"cm":"NormalToPointerOver_Start","dr":0},{"tm":9,"cm":"NormalToPointerOver_End","dr":0}, - -{"tm":10,"cm":"NormalToPressed_Start","dr":0},{"tm":19,"cm":"NormalToPressed_End","dr":0}, - -{"tm":20,"cm":"PointerOverToNormal_Start","dr":0},{"tm":29,"cm":"PointerOverToNormal_End","dr":0}, - -{"tm":30,"cm":"PointerOverToPressed_Start","dr":0},{"tm":39,"cm":"PointerOverToPressed_End","dr":0}, - -{"tm":40,"cm":"PressedToNormal_Start","dr":0},{"tm":49,"cm":"PressedToNormal_End","dr":0}, - -{"tm":50,"cm":"PressedToPointerOver_Start","dr":0},{"tm":69,"cm":"PressedToPointerOver_End","dr":0}, - -{"tm":90,"cm":"PressedToNormal_Start","dr":0},{"tm":99,"cm":"PressedToNormal_End","dr":0}, - -{"tm":100,"cm":"PressedToPointerOver_Start","dr":0},{"tm":101,"cm":"PressedToPointerOver_End","dr":0}] -``` - -### Adding a Standalone AnimatedIcon - -The following example is a button that the user clicks to Accept a prompt. - -The `MyAcceptAnimation` class is created with the [LottieGen](/windows/communitytoolkit/animations/lottie-scenarios/getting_started_codegen) tool. - -The FallbackIconSource will be used rather than the animation when animations can't be played, such as on older versions of Windows that don't support Lottie animations. - -If the end user turns off animations in their system settings, AnimatedIcon will display the final frame of the state transition the controls was in. - -```xml - -``` - -```cs -private void Button_PointerEntered(object sender, PointerRoutedEventArgs e) -{ - AnimatedIcon.SetState(this.AnimatedIcon1, "PointerOver"); -} - -private void Button_PointerExited(object sender, PointerRoutedEventArgs e) -{ - AnimatedIcon.SetState(this.StackPaAnimatedIcon1nel1, "Normal"); -} -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The AnimatedIcon for UWP apps requires WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in the [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespace. - -> [!div class="checklist"] -> -> - **WinUI 2 Apis:** [AnimatedIcon class](/windows/winui/api/microsoft.ui.xaml.controls.animatedicon) -> - [Open the WinUI 2 Gallery app and see the AnimatedIcon in action](winui2gallery:/item/AnimatedIcon). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related articles - -- [Icons in Windows apps](../style/icons.md) -- [Motion for Windows apps](../motion/index.md) \ No newline at end of file diff --git a/hub/apps/design/controls/annotated-scrollbar.md b/hub/apps/design/controls/annotated-scrollbar.md deleted file mode 100644 index 4abc9bd54a..0000000000 --- a/hub/apps/design/controls/annotated-scrollbar.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -description: Use an annotated scrollbar control to add labels that help a user navigate through a large collection. -title: Annotated Scrollbar -label: Annotated Scrollbar -template: detail.hbs -ms.date: 10/01/2023 -ms.topic: article -doc-status: Published -ms.localizationpriority: medium ---- -# Annotated scrollbar control - -An annotated scrollbar helps users easily navigate through a large collection of items. It replaces the default scrollbar and can be used in conjunction with any scrollable container. This vertical scrollbar allows users to scroll up and down through the items in a collection. Users can see category labels along the scrollbar area to provide a visual reference of where they are within their collection. A panning indicator (accent-colored line) indicates the user's current position in the collection. A tooltip is revealed when a user hovers on the scrollbar area. This tooltip contains a label to give more information to the user about their current position in the collection. Scroll arrows are located at the top and bottom of the scrollbar area. They can be used to move the current position by a small increment - -:::image type="content" source="images/scrolling/annotated-scrollbar-photos-app.png" alt-text="A screenshot that shows an annotated scrollbar in the Photos app."::: - -_The annotated scrollbar can be used in conjunction with an ItemsView control to recreate a photo gallery experience. The category labels can be set to different years to help users navigate to a specific location within their photo collection._ - -## Interactions - -On hover, a tooltip is revealed to show a preview of that location. Users can then click to navigate to that specific location. Users can also click and drag anywhere on the scrollbar area to navigate to a new position within their collection. As they drag, the panning indicator stays attached to the mouse cursor and the content scrolls to reflect the new position. Users can also scroll through their collection by using the mouse wheel. Scrolling up or down on the mouse wheel moves their position in the collection and the corresponding panning indicator up or down by a fixed amount. - -> [!NOTE] -> Unlike in a [ScrollBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.scrollbar) control, you can't click-and-drag the thumb. The thumb is a non-interactive element that is only for visualizing the current viewport position. The thumb has a fixed height which is not representative of the viewport height. - -### Label behavior - -- For experiences optimized for touch input, users can tap and hold on the scrollbar area to see the tooltip. The tooltip will be slightly more elevated to make it easier to read for touch users. Tapping and dragging anywhere on the scrollbar area will work similarly to a click and drag with mouse. -- The tooltip label is never truncated as its purpose is to display text that's explanatory. Instead, the text is wrapped if it goes over the tooltip's max width of 360px. -- Category labels are clipped if the text is longer than the width of the scrollbar's area. -- When there is a collision between two category labels (for example, when the window size decreases and two labels overlap each other), the top label is removed. As an exception to this rule, the first label of the collection is always kept as it helps to indicate the range of the collection to users. Category labels should always have a minimum of 4px (2px above, 2px below) in between, otherwise a label-collision is triggered. - -## Is this the right control? - -We recommend using an annotated scrollbar, rather than a default scrollbar, when dealing with a large collection of items or when a large amount of scrolling is expected. The annotated scrollbar will provide an easy way for users to locate themselves in their collection and to traverse it. - -For collections that only have a few items or that only require a small amount of scrolling, we recommend using a default scrollbar. - -## Recommendations - -- Only add a category label if it provides helpful information to users -- Keep the strings used for the category labels and the tooltip as concise as possible -- The annotated scrollbar is best used when there is sufficient vertical space. Using the annotated scrollbar in a confined vertical space will reduce the number of visible labels -- Do not use the annotated scrollbar as the only way for users to locate themselves within a collection. We recommend using sticky headers or category labels throughout your collection to complement the annotated scrollbar. - -## Create an annotated scrollbar - -> [!div class="checklist"] -> -> - **Important APIs:** [AnnotatedScrollBar class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar), [ScrollView class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview), [IScrollController interface](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.iscrollcontroller) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the AnnotatedScrollBar in action](winui3gallery:/item/AnnotatedScrollBar) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -To use an [AnnotatedScrollBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar), you need to complete several steps: - -- Connect the AnnotatedScrollBar to a scrolling container. -- Add labels to the scrollbar. -- Add detail labels (tooltips). - -### Connect the AnnotatedScrollBar to a scrolling container - -To use an [AnnotatedScrollBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar), you connect it to a scrollable container via the [IScrollController](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.iscrollcontroller) interface. The AnnotatedScrollBar provides an IScrollController implementation through its [ScrollController](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar.scrollcontroller) property, while the ScrollView consumes it through its [ScrollPresenter](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview.scrollpresenter) property (specifically, [ScrollPresenter.VerticalScrollController](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.scrollpresenter.verticalscrollcontroller)). - -> [!NOTE] -> The ScrollView control has built in support for consuming the IScrollController interface. For other scrolling containers, like ScrollViewer, you must write an adapter for IScrollController. See an example later in this article. - -Here, the VerticalScrollController property of an ItemsView is bound to the ScrollController of an AnnotatedScrollBar. (The ItemsView.VerticalScrollPresenter property is passed through to the ScrollPresenter.VerticalScrollController value of the ItemsView's inner ScrollView.) - -```xaml - - - - -``` - -You can also connect them in code, as shown here. In this example, a ScrollView is used to wrap an ItemsRepeater and provide scrolling functionality for it. The AnnotatedScrollBar replaces the ScrollView's default scrollbar. - -```xaml - - - - - - - - - - - - - - - - -``` - -```csharp -private void AnnotatedScrollBarPage_Loaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) -{ - scrollView.ScrollPresenter.VerticalScrollController = annotatedScrollBar.ScrollController; -} -``` - -### Labels - -The AnnotatedScrollBar can display two kinds of labels, both of which are optional. - -#### Category labels - -You add labels by populating the [Labels](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar.labels) collection. Each Label is represented by the [AnnotatedScrollBarLabel](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbarlabel) class and requires two pieces of information: - -- [Content](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbarlabel.content): The content that is displayed on the scrollbar. -- [ScrollOffset](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbarlabel.scrolloffset): The offset value at which the label content is displayed. - -Labels (if specified) are always visible on the scrollbar, unless they collide with other labels or extend past the bounds of the rail. (See [Label behavior](#label-behavior) for more info.) - -The calculation of the label offset value depends on the details of your app and its data. For one example of how the offset can be calculated, see the [WinUI Gallery example on GitHub](https://github.com/microsoft/WinUI-Gallery/blob/main/WinUIGallery/ControlPages/AnnotatedScrollBarPage.xaml.cs). - -#### Detail labels - -A detail label is a tooltip element that is shown when the cursor is over the scrollbar. To create a detail label, you handle the [DetailLabelRequested](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar.detaillabelrequested) event. The event args provide the [ScrollOffset](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbardetaillabelrequestedeventargs.scrolloffset) where the tooltip label will be shown. Use this value to determine the correct label to show for that position, and set the label as the [Content](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbardetaillabelrequestedeventargs.content) property of the event args. - -### Scrolling - -The user can scroll the AnnotatedScrollBar by clicking the arrow buttons at the top and bottom of the scrollbar. You can set the [SmallChange](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar.smallchange) property to specify the amount by which the arrow buttons scroll the content. - -You can handle the [Scrolling](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbar.scrolling) event to determine how the scrolling is being performed, take an action when scrolling occurs, or to [Cancel](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.annotatedscrollbarscrollingeventargs.cancel) the scroll action. - -## Get the sample code - -- [WinUI Gallery sample](https://github.com/Microsoft/WinUI-Gallery) - See all the XAML controls in an interactive format. - -## Related topics - -- [ScrollView class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ScrollView) \ No newline at end of file diff --git a/hub/apps/design/controls/auto-suggest-box.md b/hub/apps/design/controls/auto-suggest-box.md deleted file mode 100644 index b4d2b282e1..0000000000 --- a/hub/apps/design/controls/auto-suggest-box.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Guidelines for auto-suggest boxes -description: Learn how to use an AutoSuggestBox to provide a list of suggestions for a user to select from as they type. -ms.assetid: 1F608477-F795-4F33-92FA-F200CC243B6B -dev.assetid: 54F8DB8A-120A-4D79-8B5A-9315A3764C2F -label: Auto-suggest box -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: article -doc-status: Published -ms.localizationpriority: medium ---- -# Auto-suggest box - -Use an AutoSuggestBox to provide a list of suggestions for a user to select from as they type. - -![An auto suggest box](images/controls-autosuggest-expanded-01.png) - -## Is this the right control? - -If you'd like a simple, customizable control that allows text search with a list of suggestions, then choose an auto-suggest box. - -For more info about choosing the right text control, see the [Text controls](text-controls.md) article. - -## Anatomy - -The entry point for the auto-suggest box consists of an optional header and a text box with optional hint text: - -![Example of the entry point for auto-suggest control](images/controls-autosuggest-entrypoint.png) - -The auto-suggest results list populates automatically once the user starts to enter text. The results list can appear above or below the text entry box. A "clear all" button appears: - -![Example of the expanded auto-suggest control](images/controls-autosuggest-expanded-01.png) - -## Recommendations - -- When using the auto-suggest box to perform searches and no search results exist for the entered text, display a single-line "No results" message as the result so that users know their search request executed: - - ![Example of an auto suggest box with no search results](images/controls-autosuggest-no-results.png) - -## Create an auto-suggest box - -> [!div class="checklist"] -> -> - **Important APIs:** [AutoSuggestBox class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox), [TextChanged event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.textchanged), [SuggestionChose event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.suggestionchosen), [QuerySubmitted event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.querysubmitted) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the AutoSuggestBox in action](winui3gallery:/item/AutoSuggestBox) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -To use an AutoSuggestBox, you need to respond to 3 user actions. - -- Text changed - When the user enters text, update the suggestion list. -- Suggestion chosen - When the user chooses a suggestion in the suggestion list, update the text box. -- Query submitted - When the user submits a query, show the query results. - -### Text changed - -The [TextChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.textchanged) event occurs whenever the content of the text box is updated. Use the event args [Reason](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestboxtextchangedeventargs.reason) property to determine whether the change was due to user input. If the change reason is **UserInput**, filter your data based on the input. Then, set the filtered data as the [ItemsSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.itemssource) of the AutoSuggestBox to update the suggestion list. - -To control how items are displayed in the suggestion list, you can use [DisplayMemberPath](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.displaymemberpath) or [ItemTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.itemtemplate). - -- To display the text of a single property of your data item, set the DisplayMemberPath property to choose which property from your object to display in the suggestion list. -- To define a custom look for each item in the list, use the ItemTemplate property. - -### Suggestion chosen - -When a user navigates through the suggestion list using the keyboard, you need to update the text in the text box to match. - -You can set the [TextMemberPath](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.textmemberpath) property to choose which property from your data object to display in the text box. If you specify a TextMemberPath, the text box is updated automatically. You should typically specify the same value for DisplayMemberPath and TextMemberPath so the text is the same in the suggestion list and the text box. - -If you need to show more than a simple property, handle the [SuggestionChosen](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.suggestionchosen) event to populate the text box with custom text based on the selected item. - -### Query submitted - -Handle the [QuerySubmitted](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.querysubmitted) event to perform a query action appropriate to your app and show the result to the user. - -The QuerySubmitted event occurs when a user commits a query string. The user can commit a query in one of these ways: - -- While the focus is in the text box, press Enter or click the query icon. The event args [ChosenSuggestion](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestboxquerysubmittedeventargs.chosensuggestion) property is **null**. -- While the focus is in the suggestion list, press Enter, click, or tap an item. The event args ChosenSuggestion property contains the item that was selected from the list. - -In all cases, the event args [QueryText](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestboxquerysubmittedeventargs.querytext) property contains the text from the text box. - -Here is a simple AutoSuggestBox with the required event handlers. - -```xaml - -``` - -```csharp -private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) -{ - // Only get results when it was a user typing, - // otherwise assume the value got filled in by TextMemberPath - // or the handler for SuggestionChosen. - if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) - { - //Set the ItemsSource to be your filtered dataset - //sender.ItemsSource = dataset; - } -} - - -private void AutoSuggestBox_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args) -{ - // Set sender.Text. You can use args.SelectedItem to build your text string. -} - - -private void AutoSuggestBox_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args) -{ - if (args.ChosenSuggestion != null) - { - // User selected an item from the suggestion list, take an action on it here. - } - else - { - // Use args.QueryText to determine what to do. - } -} -``` - -## Use AutoSuggestBox for search - -Use an AutoSuggestBox to provide a list of suggestions for a user to select from as they type. - -By default, the text entry box doesn't have a query button shown. You can set the [QueryIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.queryicon) property to add a button with the specified icon on the right side of the text box. For example, to make the AutoSuggestBox look like a typical search box, add a 'find' icon, like this. - -```xaml - -``` - -Here's an AutoSuggestBox with a 'find' icon. - -![Example of auto-suggest control with a find icon.](images/controls-autosuggest-entrypoint.png) - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -APIs for this control exist in the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) namespace. - -> [!div class="checklist"] -> -> - **UWP APIs:** [AutoSuggestBox class](/uwp/api/Windows.ui.xaml.controls.autosuggestbox), [TextChanged event](/uwp/api/windows.ui.xaml.controls.autosuggestbox.textchanged), [SuggestionChose event](/uwp/api/windows.ui.xaml.controls.autosuggestbox.suggestionchosen), [QuerySubmitted event](/uwp/api/windows.ui.xaml.controls.autosuggestbox.querysubmitted) -> - [Open the WinUI 2 Gallery app and see the AutoSuggestBox in action](winui2gallery:/item/AutoSuggestBox). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -## Related articles - -- [Text controls](text-controls.md) -- [Spell checking](text-controls.md) -- [TextBox class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textbox) -- [Windows.UI.Xaml.Controls PasswordBox class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.passwordbox) -- [String.Length property](/dotnet/api/system.string.length) \ No newline at end of file diff --git a/hub/apps/design/controls/breadcrumbbar.md b/hub/apps/design/controls/breadcrumbbar.md deleted file mode 100644 index 00344d6930..0000000000 --- a/hub/apps/design/controls/breadcrumbbar.md +++ /dev/null @@ -1,267 +0,0 @@ ---- -description: The BreadcrumbBar control provides the direct path of pages or folders to the current location. It adapts to a variety of screen sizes. -title: BreadcrumbBar -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: article -ms.custom: 21H1 -ms.localizationpriority: medium ---- - -# Breadcrumb Bar - -A [BreadcrumbBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbar) provides the direct path of pages or folders to the current location. It is often used for situations where the user's navigation trail (in a file system or menu system) needs to be persistently visible and the user may need to go back to a previous location. - -![Breadcrumb bar with nodes: Home, Documents, Design, Northwind, Images, Folder1, Folder2, Folder3. The app is resized so that the Breadcrumb crumbles and an ellipsis replaces the leftmost nodes. Then, clicking the ellipsis opens a flyout with the crumbled nodes](images/breadcrumbbar-default.gif) - -## Is this the right control? - -A breadcrumb bar lets a user keep track of their location when navigating through an app or folders, and lets them quickly jump back to a previous location in the path. - -Use a BreadcrumbBar when the path taken to the current position is relevant. This UI is commonly used in folder managers and when a user may navigate many levels deep into an app. - -## Breadcrumb bar UI - -The breadcrumb bar displays each node in a horizontal line, separated by chevrons. - -:::image type="content" source="images/breadcrumb-bar.png" alt-text="Breadcrumb bar with nodes: Home, Documents, Design, Northwind, Images, Folder1, Folder2, Folder3."::: - -If the app is resized so that there is not enough space to show all the nodes, the breadcrumbs collapse and an ellipsis replaces the leftmost nodes. Clicking the ellipsis opens a flyout to show the collapsed nodes. - -:::image type="content" source="images/breadcrumb-bar-flyout.png" alt-text="Breadcrumb bar resized so that an ellipsis replaces the leftmost nodes. The ellipsis opens a flyout with that shows the collapsed nodes"::: - -### Anatomy - -The image below shows the parts of the `BreadcrumbBar` control. You can modify the appearance of some parts by using [lightweight styling](#lightweight-styling). - -:::image type="content" source="images/breadcrumb-bar-anatomy.png" alt-text="An image of a breadcrumb bar with the parts labeled: ellipsis, chevron, breadcrumb bar item, current item, ellipsis flyout, ellipsis drop down item"::: - -## Recommendations - -- Use a breadcrumb bar when you have many levels of navigation and expect users to be able to return to any previous level. -- Don't use a breadcrumb bar if you only have 2 possible levels of navigation. Simple [back navigation](../basics/navigation-history-and-backwards-navigation.md) is sufficient. -- Show the current location as the last item in the breadcrumb bar. However, you typically don't want to perform any navigation if the user clicks the current item. (If you want to let the user reload the current page or data, consider providing a dedicated 'reload' option.) - -## Create a breadcrumb bar - -> [!div class="checklist"] -> -> - **Important APIs:** [BreadcrumbBar class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the BreadcrumbBar in action](winui3gallery:/item/BreadcrumbBar) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -This example shows how to create a breadcrumb bar with the default styling. You can place the breadcrumb bar anywhere in your app UI. You populate the breadcrumbs by setting the [ItemsSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbar.itemssource) property. Here, it's set to an array of strings that are shown in the breadcrumb bar. - -```xaml - -``` - -```csharp -BreadcrumbBar1.ItemsSource = - new string[] { "Home", "Documents", "Design", "Northwind", "Images", "Folder1", "Folder2", "Folder3" }; -``` - -### ItemsSource - -The breadcrumb bar does not have an `Items` property, it only has an [ItemsSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbar.itemssource) property. This means you can't populate the breadcrumbs in XAML or by adding them directly to an `Items` collection in code. Instead, you create a collection and connect the `ItemsSource` property to it in code or using data binding. - -You can set the [ItemsSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbar.itemssource) to a collection of any type of data to suit the needs of your app. The data items in the collection are used both to display the breadcrumb in the bar, and to navigate when an item in the breadcrumb bar is clicked. In the examples on this page, we create a simple `struct` (named `Crumb`) that contains a label to display in the breadcrumb bar and a data object that holds information used for navigation. - -```csharp -public readonly struct Crumb -{ - public Crumb(String label, object data) - { - Label = label; - Data = data; - } - public string Label { get; } - public object Data { get; } - public override string ToString() => Label; -} -``` - -### ItemTemplate - -By default, the breadcrumb bar displays the string representation of each item in the collection. If the data items in your collection don't have an appropriate `ToString` override, you can use the [ItemTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbar.itemtemplate) property to specify a data template that defines how the items are shown in the breadcrumb bar. - -For example, if your breadcrumb collection was a list of [StorageFolder](/uwp/api/windows.storage.storagefolder) objects, you could provide a data template and bind to the [DisplayName](/uwp/api/windows.storage.storagefolder.displayname) property like this. - -```csharp -ObservableCollection Breadcrumbs = - new ObservableCollection(); -``` - -```xaml - - - - - - - -``` - -### ItemClicked - -Handle the [ItemClicked](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbar.itemclicked) event to navigate to the item the user has clicked in the breadcrumb bar. The current location is typically shown as the last item in the breadcrumb bar, so you should include a check in your event handler if you don't want to reload the current location. - -This example checks the [Index](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbaritemclickedeventargs.index) to see whether the clicked [Item](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbaritemclickedeventargs.item) is the last item in the collection, which is the current location. If it is, no navigation occurs. - -```csharp -// Breadcrumbs is set as BreadcrumbBar1.ItemsSource. -List Breadcrumbs = new List(); - -... - -private void BreadcrumbBar1_ItemClicked(muxc.BreadcrumbBar sender, muxc.BreadcrumbBarItemClickedEventArgs args) -{ - if (args.Index < Breadcrumbs.Count - 1) - { - var crumb = (Crumb)args.Item; - Frame.Navigate((Type)crumb.Data); - } -} -``` - -### Lightweight styling - -You can modify the default Style and ControlTemplate to give the control a unique appearance. See the Control Style and Template section of the BreadcrumbBar API docs for a list of the available theme resources. For more info, see the [Light-weight styling section](../../develop/platform/xaml/xaml-styles.md#lightweight-styling) of the [Styling controls](../../develop/platform/xaml/xaml-styles.md) article. - -## Code examples - -This example shows how you could use a breadcrumb bar in a simple file explorer scenario. The list view shows the contents of the selected Pictures or Music library, and lets the user drill down into sub-folders. The breadcrumb bar is placed in the header of the list view, and shows the path to the current folder. - -:::image type="content" source="images/breadcrumb-bar-file-list.png" alt-text="An image of a file list with a breadcrumb bar showing the path to the current folder"::: - -```xaml - - - - - - - - - - - - - -``` - -```csharp -public sealed partial class MainPage : Page -{ - List Items; - ObservableCollection Breadcrumbs = - new ObservableCollection(); - - public MainPage() - { - this.InitializeComponent(); - InitializeView(); - } - - private void InitializeView() - { - // Start with Pictures and Music libraries. - Items = new List(); - Items.Add(KnownFolders.PicturesLibrary); - Items.Add(KnownFolders.MusicLibrary); - FolderListView.ItemsSource = Items; - - Breadcrumbs.Clear(); - Breadcrumbs.Add(new Crumb("Home", null)); - } - - private async void FolderBreadcrumbBar_ItemClicked(muxc.BreadcrumbBar sender, muxc.BreadcrumbBarItemClickedEventArgs args) - { - // Don't process last index (current location) - if (args.Index < Breadcrumbs.Count - 1) - { - // Home is special case. - if (args.Index == 0) - { - InitializeView(); - } - // Go back to the clicked item. - else - { - var crumb = (Crumb)args.Item; - await GetFolderItems((StorageFolder)crumb.Data); - - // Remove breadcrumbs at the end until - // you get to the one that was clicked. - while (Breadcrumbs.Count > args.Index + 1) - { - Breadcrumbs.RemoveAt(Breadcrumbs.Count - 1); - } - } - } - } - - private async void FolderListView_ItemClick(object sender, ItemClickEventArgs e) - { - // Ignore if a file is clicked. - // If a folder is clicked, drill down into it. - if (e.ClickedItem is StorageFolder) - { - StorageFolder folder = e.ClickedItem as StorageFolder; - await GetFolderItems(folder); - Breadcrumbs.Add(new Crumb(folder.DisplayName, folder)); - } - } - - private async Task GetFolderItems(StorageFolder folder) - { - IReadOnlyList itemsList = await folder.GetItemsAsync(); - FolderListView.ItemsSource = itemsList; - } -} - -public readonly struct Crumb -{ - public Crumb(String label, object data) - { - Label = label; - Data = data; - } - public string Label { get; } - public object Data { get; } - public override string ToString() => Label; -} -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The BreadcrumbBar for UWP apps requires WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in the [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespace. - -> [!div class="checklist"] -> -> - **WinUI 2 Apis:** [BreadcrumbBar class](/windows/winui/api/microsoft.ui.xaml.controls.breadcrumbbar) -> - [Open the WinUI 2 Gallery app and see the BreadcrumbBar in action](winui2gallery:/item/BreadcrumbBar). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related articles - -- [Navigation design basics](../basics/navigation-basics.md) -- [NavigationView](./navigationview.md) -- [BreadcrumbBar class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.breadcrumbbar) \ No newline at end of file diff --git a/hub/apps/design/controls/buttons.md b/hub/apps/design/controls/buttons.md deleted file mode 100644 index 93b87c36e5..0000000000 --- a/hub/apps/design/controls/buttons.md +++ /dev/null @@ -1,580 +0,0 @@ ---- -title: Buttons -description: Learn how to use a button to give users a way to trigger immediate actions, and learn about specialized buttons for particular tasks. -label: Buttons -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: article -ms.assetid: f04d1a3c-7dcd-4bc8-9586-3396923b312e -doc-status: Published -ms.localizationpriority: medium -ms.custom: RS5 ---- -# Buttons - -A button gives the user a way to trigger an immediate action. Some buttons are specialized for particular tasks, such as navigation, repeated actions, or presenting menus. - -![Example of buttons](images/button.png) - -The [Extensible Application Markup Language (XAML)](/windows/uwp/xaml-platform/xaml-overview) framework provides a standard button control as well as several specialized button controls. - -Control | Description -------- | ----------- -[Button](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button) | A button that initiates an immediate action. Can be used with a [Click](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.click) event or [Command](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.command) binding. -[RepeatButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.repeatbutton) | A button that raises a [Click](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.click) event continuously while pressed. -[HyperlinkButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.hyperlinkbutton) | A button that's styled like a hyperlink and used for navigation. For more info about hyperlinks, see [Hyperlinks](hyperlinks.md). -[DropDownButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.dropdownbutton) | A button with a chevron to open an attached flyout. -[SplitButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitbutton) | A button with two sides. One side initiates an action, and the other side opens a menu. -[ToggleSplitButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.togglesplitbutton) | A toggle button with two sides. One side toggles on/off, and the other side opens a menu. -[ToggleButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton) | A button that can be on or off. - -## Is this the right control? - -Use a **Button** control to let the user initiate an immediate action, such as submitting a form. - -Don't use a **Button** control when the action is to navigate to another page; instead, use a [HyperlinkButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.hyperlinkbutton) control. For more info about hyperlinks, see [Hyperlinks](hyperlinks.md). - -> [!IMPORTANT] -> For wizard navigation, use buttons labeled *Back* and *Next*. For other types of backwards navigation or navigation to an upper level, use a [back button](../basics/navigation-history-and-backwards-navigation.md). - -Use a **RepeatButton** control when the user might want to trigger an action repeatedly. For example, use a **RepeatButton** control to increment or decrement a value in a counter. - -Use a **DropDownButton** control when the button has a flyout that contains more options. The default chevron provides a visual indication that the button includes a flyout. - -Use a **SplitButton** control when you want the user to be able to initiate an immediate action or choose from additional options independently. - -Use a **ToggleButton** control when you want the user to be able to immediately switch between two mutually exclusive states, and a button is the best fit for your UI needs. Unless your UI benefits from a button, it might be a better choice to use an [AppBarToggleButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbartogglebutton), [CheckBox](checkbox.md), [RadioButton](radio-button.md), or [ToggleSwitch](toggles.md). - -## Recommendations - -- Make sure the purpose and state of a button are clear to the user. - -- When there are multiple buttons for the same decision (such as in a confirmation dialog), present the commit buttons in this order, where [Do it] and [Don't do it] are specific responses to the main instruction: - - OK/[Do it]/Yes - - [Don't do it]/No - - Cancel - -- Expose only one or two buttons to the user at a time, for example, **Accept** and **Cancel**. If you need to expose more actions to the user, consider using [checkboxes](checkbox.md) or [radio buttons](radio-button.md) from which the user can select actions, with a single command button to trigger those actions. - -- For an action that needs to be available across multiple pages within your app, instead of duplicating a button on multiple pages, consider using a [bottom app bar](command-bar.md). - -### Button text - -A button's content is usually text. When you design that text, use the following recommendations: - -- Use a concise, specific, self-explanatory text that clearly describes the action that the button performs. Usually button text is a single word that is a verb. - -- Use the default font, unless your brand guidelines tell you to use something different. - -- For shorter text, avoid narrow command buttons by using a minimum button width of 120px. - -- For longer text, avoid wide command buttons by limiting text to a maximum length of 26 characters. - -- If the button's text content is dynamic (that is, it is [localized](../globalizing/globalizing-portal.md)), consider how the button will be resized and what will happen to controls around it. - - - - - - - - - - - - - - -
Need to fix:
Buttons with overflowing text.
Screenshot of two buttons, side by side, with labels that both say: Button with thxt that woul
Option 1:
Increase button width, stack buttons, and wrap if text length is greater than 26 characters.
Screenshot of two buttons with increased width, one over the other, with labels that both say: Button with thxt that would wrap.
Option 2:
Increase button height, and wrap text.
Screenshot of two buttons with increased height, side by side, with labels that both say: Button with thxt that would wrap.
- -### Recommended single-button layout - -If your layout requires only one button, it should be either left- or right-aligned based on its container context. - - - Dialogs with only one button should **right-align** the button. If your dialog contains only one button, ensure that the button performs the safe, nondestructive action. If you use [ContentDialog](./dialogs-and-flyouts/index.md) and specify a single button, it will be automatically right-aligned. - - ![A button within a dialog](images/pushbutton_doc_dialog.png) - - - If your button appears within a container UI (for example, within a toast notification, a flyout, or a list view item), you should **right-align** the button within the container. - - ![A button within a container](images/pushbutton_doc_container.png) - - - In pages that contain a single button (for example, an **Apply** button at the bottom of a settings page), you should **left-align** the button. This ensures that the button aligns with the rest of the page content. - - ![A button on a page](images/pushbutton_doc_page.png) - -### Back buttons - -The back button is a system-provided UI element that enables backward navigation through either the back stack or navigation history of the user. You don't have to create your own back button, but you might have to do some work to enable a good backwards navigation experience. For more info, see [Navigation history and backwards navigation for Windows apps](../basics/navigation-history-and-backwards-navigation.md). - -## Examples - -This example uses three buttons, **Save**, **Don't Save**, and **Cancel**, in a dialog that asks users if they want to save their work. - -![Example of buttons, used in a dialog](images/button-dialog-example.png) - -## Create a button - -> [!div class="checklist"] -> -> - **Important APIs:** [Button class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button), [Click event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.click), [Command property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.command), [Content property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol.content) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the Buttons in action](winui3gallery:/item/Button) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -This example shows a button that responds to a click. - -Create the button in XAML. - -```xaml -`. You can set any object as the button's content. If the content is a [UIElement](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.UIElement) object, it is rendered in the button. If the content is another type of object, its string representation is shown in the button. - -A button's content is usually text. When you design that text, follow the [Button text recommendations](#button-text) listed previously. - -You can also customize visuals that make up the button's appearance. For example, you could replace the text with an icon, or use an icon in addition to text. - -Here, a **StackPanel** that contains an image and text is set as the content of a button. - -```xaml - -``` - -The button looks like this. - -![A button with image and text content](images/button-orange.png) - -## Create a repeat button - -> [!div class="checklist"] -> -> - **Important APIs:** [RepeatButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.repeatbutton), [Click event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.click), [Content property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol.content) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the RepeatButton in action](winui3gallery:/item/RepeatButton) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -A [RepeatButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.repeatbutton) control is a button that raises [Click](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.click) events repeatedly from the time it's pressed until it's released. Set the [Delay](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.repeatbutton.delay) property to specify the time that the **RepeatButton** control waits after it is pressed before it starts repeating the click action. Set the [Interval](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.repeatbutton.interval) property to specify the time between repetitions of the click action. Times for both properties are specified in milliseconds. - -The following example shows two **RepeatButton** controls whose respective **Click** events are used to increase and decrease the value shown in a text block. - -```xaml - - Increase - Decrease - - -``` - -```csharp -private static int _clicks = 0; -private void Increase_Click(object sender, RoutedEventArgs e) -{ - _clicks += 1; - clickTextBlock.Text = "Number of Clicks: " + _clicks; -} - -private void Decrease_Click(object sender, RoutedEventArgs e) -{ - if(_clicks > 0) - { - _clicks -= 1; - clickTextBlock.Text = "Number of Clicks: " + _clicks; - } -} -``` - -## Create a drop down button - -> [!div class="checklist"] -> -> - **Important APIs**: [DropDownButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button), [Flyout property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button.flyout) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the DropdownButton in action](winui3gallery:/item/DropdownButton) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -A [DropDownButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.dropdownbutton) is a button that shows a chevron as a visual indicator that it has an attached flyout that contains more options. It has the same behavior as a standard **Button** control with a flyout; only the appearance is different. - -The drop down button inherits the **Click** event, but you typically don't use it. Instead, you use the [Flyout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button.flyout) property to attach a flyout and invoke actions by using menu options in the flyout. The flyout opens automatically when the button is clicked. -Be sure to specify the [Placement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.flyoutbase.placement) property of your flyout to ensure the desired placement in relation to the button. The default placement algorithm might not produce the intended placement in all situations. For more info about flyouts, see [Flyouts](dialogs-and-flyouts/flyouts.md) and [Menu flyout and menu bar](menus.md). - -### Example - Drop down button - -This example shows how to create a drop down button with a flyout that contains commands for paragraph alignment in a **RichEditBox** control. (For more info and code, see [Rich edit box](rich-edit-box.md)). - -![A drop down button with alignment commands](images/drop-down-button-align.png) - -```xaml - - - - - - - - - - -``` - -```csharp -private void AlignmentMenuFlyoutItem_Click(object sender, RoutedEventArgs e) -{ - var option = ((MenuFlyoutItem)sender).Tag.ToString(); - - Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection; - if (selectedText != null) - { - // Apply the alignment to the selected paragraphs. - var paragraphFormatting = selectedText.ParagraphFormat; - if (option == "left") - { - paragraphFormatting.Alignment = Windows.UI.Text.ParagraphAlignment.Left; - } - else if (option == "center") - { - paragraphFormatting.Alignment = Windows.UI.Text.ParagraphAlignment.Center; - } - else if (option == "right") - { - paragraphFormatting.Alignment = Windows.UI.Text.ParagraphAlignment.Right; - } - } -} -``` - -## Create a split button - -> [!div class="checklist"] -> -> - **Important APIs**: [SplitButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitbutton), [Click event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.click), [Flyout property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button.flyout) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the SplitButton in action](winui3gallery:/item/SplitButton) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -A [SplitButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitbutton) control has two parts that can be invoked separately. One part behaves like a standard button and invokes an immediate action. The other part invokes a flyout that contains additional options that the user can choose from. - -> [!NOTE] -> When invoked with touch, the split button behaves as a drop down button; both halves of the button invoke the flyout. With other methods of input, a user can invoke either half of the button separately. - -The typical behavior for a split button is: - -- When the user clicks the button part, handle the **Click** event to invoke the option that's currently selected in the drop down. - -- When the drop down is open, handle invocation of the items in the drop down to both change which option is selected, and then invoke it. It's important to invoke the flyout item because the button **Click** event doesn't occur when using touch. - -> [!TIP] -> There are many ways to put items in the drop down and handle their invocation. If you use a **ListView** or **GridView**, one way is to handle the **SelectionChanged** event. If you do this, set [SingleSelectionFollowsFocus](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listviewbase.singleselectionfollowsfocus) to **false**. This lets users navigate the options using a keyboard without invoking the item on each change. - -### Example - Split button - -This example shows how to create a split button that is used to change the foreground color of selected text in a **RichEditBox** control. (For more info and code, see [Rich edit box](rich-edit-box.md)). -Split button's flyout uses [BottomEdgeAlignedLeft](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.flyoutplacementmode) as the default value for its [Placement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.flyoutbase.placement) property. You can't override this value. - -![A split button for selecting foreground color](images/split-button-rtb.png) - -```xaml - - - - - - - - - - - - - - - - - - -``` - -```csharp -public sealed partial class MainPage : Page -{ - // Color options that are bound to the grid in the split button flyout. - private List ColorOptions = new List(); - private SolidColorBrush CurrentColorBrush = null; - - public MainPage() - { - this.InitializeComponent(); - - // Add color brushes to the collection. - ColorOptions.Add(new SolidColorBrush(Colors.Black)); - ColorOptions.Add(new SolidColorBrush(Colors.Red)); - ColorOptions.Add(new SolidColorBrush(Colors.Orange)); - ColorOptions.Add(new SolidColorBrush(Colors.Yellow)); - ColorOptions.Add(new SolidColorBrush(Colors.Green)); - ColorOptions.Add(new SolidColorBrush(Colors.Blue)); - ColorOptions.Add(new SolidColorBrush(Colors.Indigo)); - ColorOptions.Add(new SolidColorBrush(Colors.Violet)); - ColorOptions.Add(new SolidColorBrush(Colors.White)); - } - - private void BrushButtonClick(object sender, object e) - { - // When the button part of the split button is clicked, - // apply the selected color. - ChangeColor(); - } - - private void BrushSelectionChanged(object sender, SelectionChangedEventArgs e) - { - // When the flyout part of the split button is opened and the user selects - // an option, set their choice as the current color, apply it, then close the flyout. - CurrentColorBrush = (SolidColorBrush)e.AddedItems[0]; - SelectedColorBorder.Background = CurrentColorBrush; - ChangeColor(); - BrushFlyout.Hide(); - } - - private void ChangeColor() - { - // Apply the color to the selected text in a RichEditBox. - Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection; - if (selectedText != null) - { - Windows.UI.Text.ITextCharacterFormat charFormatting = selectedText.CharacterFormat; - charFormatting.ForegroundColor = CurrentColorBrush.Color; - selectedText.CharacterFormat = charFormatting; - } - } -} -``` - -## Create a toggle split button - -> [!div class="checklist"] -> -> - **Important APIs**: [ToggleSplitButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.togglesplitbutton), [IsCheckedChanged event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.togglesplitbutton.ischeckedchanged), [IsChecked property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.togglesplitbutton.ischecked) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the ToggleSplitButton in action](winui3gallery:/item/ToggleSplitButton) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -A [ToggleSplitButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.togglesplitbutton) control has two parts that can be invoked separately. One part behaves like a toggle button that can be on or off. The other part invokes a flyout that contains additional options that the user can choose from. - -A toggle split button is typically used to enable or disable a feature when the feature has multiple options that the user can choose from. For example, in a document editor, it could be used to turn lists on or off, while the drop down is used to choose the style of the list. - -> [!NOTE] -> When invoked with touch, the toggle split button behaves as a drop down button. With other methods of input, a user can toggle and invoke the two halves of the button separately. With touch, both halves of the button invoke the flyout. Therefore, you must include an option in your flyout content to toggle the button on or off. - -### Differences with ToggleButton - -Unlike [ToggleButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton), **ToggleSplitButton** does not have an indeterminate state. As a result, you should keep in mind these differences: - -- **ToggleSplitButton** does not have an **IsThreeState** property or **Indeterminate** event. -- The [ToggleSplitButton.IsChecked](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.togglesplitbutton.ischecked) property is just a Boolean, not a **Nullable\**. -- **ToggleSplitButton** has only the [IsCheckedChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.togglesplitbutton.ischeckedchanged) event; it does not have separate **Checked** and **Unchecked** events. - -### Example - Toggle split button - -The following example shows how a toggle split button could be used to turn list formatting on or off, and change the style of the list, in a **RichEditBox** control. (For more info and code, see [Rich edit box](rich-edit-box.md)). -The flyout of the toggle split button uses [BottomEdgeAlignedLeft](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.flyoutplacementmode) as the default value for its [Placement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.flyoutbase.placement) property. You can't override this value. - -![A toggle split button for selecting list styles](images/toggle-split-button-open.png) - -```xaml - - - - - - - - - - - - - - - - - - - - - - -``` - -```csharp -private void ListStyleButton_IsCheckedChanged(ToggleSplitButton sender, ToggleSplitButtonIsCheckedChangedEventArgs args) -{ - // Use the toggle button to turn the selected list style on or off. - if (((ToggleSplitButton)sender).IsChecked == true) - { - // On. Apply the list style selected in the drop down to the selected text. - var listStyle = ((FrameworkElement)(ListStylesListView.SelectedItem)).Tag.ToString(); - ApplyListStyle(listStyle); - } - else - { - // Off. Make the selected text not a list, - // but don't change the list style selected in the drop down. - ApplyListStyle("none"); - } -} - -private void ListStylesListView_SelectionChanged(object sender, SelectionChangedEventArgs e) -{ - var listStyle = ((FrameworkElement)(e.AddedItems[0])).Tag.ToString(); - - if (ListButton.IsChecked == true) - { - // Toggle button is on. Turn it off... - if (listStyle == "none") - { - ListButton.IsChecked = false; - } - else - { - // or apply the new selection. - ApplyListStyle(listStyle); - } - } - else - { - // Toggle button is off. Turn it on, which will apply the selection - // in the IsCheckedChanged event handler. - ListButton.IsChecked = true; - } -} - -private void ApplyListStyle(string listStyle) -{ - Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection; - if (selectedText != null) - { - // Apply the list style to the selected text. - var paragraphFormatting = selectedText.ParagraphFormat; - if (listStyle == "none") - { - paragraphFormatting.ListType = Windows.UI.Text.MarkerType.None; - } - else if (listStyle == "bullet") - { - paragraphFormatting.ListType = Windows.UI.Text.MarkerType.Bullet; - } - else if (listStyle == "numeric") - { - paragraphFormatting.ListType = Windows.UI.Text.MarkerType.Arabic; - } - else if (listStyle == "alpha") - { - paragraphFormatting.ListType = Windows.UI.Text.MarkerType.UppercaseEnglishLetter; - } - selectedText.ParagraphFormat = paragraphFormatting; - } -} -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The DropDownButton, SplitButton, and ToggleSplitButton controls for UWP apps are included as part of WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for these controls exist in both the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) and [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespaces. - -> [!div class="checklist"] -> -> - **UWP APIs:** [Button class](/uwp/api/windows.ui.xaml.controls.button), [RepeatButton class](/uwp/api/windows.ui.xaml.controls.primitives.repeatbutton), [HyperlinkButton class](/uwp/api/windows.ui.xaml.controls.hyperlinkbutton), [DropDownButton](/uwp/api/windows.ui.xaml.controls.dropdownbutton), [SplitButton](/uwp/api/windows.ui.xaml.controls.splitbutton), [ToggleSplitButton](/uwp/api/windows.ui.xaml.controls.togglesplitbutton), [ToggleButton](/uwp/api/windows.ui.xaml.controls.primitives.togglebutton), [Click event](/uwp/api/windows.ui.xaml.controls.primitives.buttonbase.click), [Command property](/uwp/api/windows.ui.xaml.controls.primitives.buttonbase.command), [Content property](/uwp/api/windows.ui.xaml.controls.contentcontrol.content) -> - **WinUI 2 Apis:** [DropDownButton](/windows/winui/api/microsoft.ui.xaml.controls.dropdownbutton), [SplitButton](/windows/winui/api/microsoft.ui.xaml.controls.splitbutton), [ToggleSplitButton](/windows/winui/api/microsoft.ui.xaml.controls.togglesplitbutton) -> - [Open the WinUI 2 Gallery app and see the Button in action](winui2gallery:/item/Button). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for these controls that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - - - -``` - -## Related articles - -- [Button class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button) -- [Radio buttons](radio-button.md) -- [Check boxes](checkbox.md) -- [Toggle switches](toggles.md) \ No newline at end of file diff --git a/hub/apps/design/controls/calendar-date-picker.md b/hub/apps/design/controls/calendar-date-picker.md deleted file mode 100644 index e850bdc821..0000000000 --- a/hub/apps/design/controls/calendar-date-picker.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -description: The calendar date picker is a drop down control that's optimized for picking a single date from a calendar view where contextual information like the day of the week or fullness of the calendar is important. -title: Calendar date picker -ms.assetid: 9e0213e0-046a-4906-ba86-0b49be51ca99 -label: Calendar date picker -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium ---- -# Calendar date picker - -The calendar date picker is a drop down control that's optimized for picking a single date from a calendar view where contextual information like the day of the week or fullness of the calendar is important. You can modify the calendar to provide additional context or to limit available dates. - -## Is this the right control? - -Use a **calendar date picker** to let a user pick a single date from a contextual calendar view. Use it for things like choosing an appointment or departure date. - -To let a user pick a known date, such as a date of birth, where the context of the calendar is not important, consider using a [date picker](date-picker.md). - -For more info about choosing the right control, see the [Date and time controls](date-and-time.md) article. - -## Examples - -The entry point displays placeholder text if a date has not been set; otherwise, it displays the chosen date. When the user selects the entry point, a calendar view expands for the user to make a date selection. The calendar view overlays other UI; it doesn't push other UI out of the way. - -![Screenshot of a Calendar Date Picker showing an empty select a date text box and then one populated with a calendar beneath it.](images/calendar-date-picker-2-views.png) - -## Create a calendar date picker - -> [!div class="checklist"] -> -> - **Important APIs:** [CalendarDatePicker class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CalendarDatePicker), [Date property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.date), [DateChanged event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.datechanged) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the CalendarDatePicker in action](winui3gallery:/item/CalendarDatePicker) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -```xaml - -``` - -```csharp -CalendarDatePicker arrivalCalendarDatePicker = new CalendarDatePicker(); -arrivalCalendarDatePicker.Header = "Calendar"; -``` - -The resulting calendar date picker looks like this: - -![Screenshot of a populated Calendar Date Picker with a label that says Calendar.](images/calendar-date-picker-closed.png) - -The calendar date picker has an internal [CalendarView](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CalendarView) for picking a date. A subset of CalendarView properties, like [IsTodayHighlighted](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.istodayhighlighted) and [FirstDayOfWeek](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.firstdayofweek), exist on CalendarDatePicker and are forwarded to the internal CalendarView to let you modify it. - -However, you can't change the [SelectionMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selectionmode) of the internal CalendarView to allow multiple selection. If you need to let a user pick multiple dates or need a calendar to be always visible, consider using a calendar view instead of a calendar date picker. See the [Calendar view](calendar-view.md) article for more info on how you can modify the calendar display. - -### Selecting dates - -Use the [Date](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.date) property to get or set the selected date. By default, the Date property is **null**. When a user selects a date in the calendar view, this property is updated. A user can clear the date by clicking the selected date in the calendar view to deselect it. - -You can set the date in your code like this. - -```csharp -myCalendarDatePicker.Date = new DateTime(1977, 1, 5); -``` - -When you set the Date in code, the value is constrained by the [MinDate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.mindate) and [MaxDate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.maxdate) properties. - -- If **Date** is smaller than **MinDate**, the value is set to **MinDate**. -- If **Date** is greater than **MaxDate**, the value is set to **MaxDate**. - -You can handle the [DateChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.datechanged) event to be notified when the Date value has changed. - -> [!NOTE] -> For important info about date values, see [DateTime and Calendar values](date-and-time.md#datetime-and-calendar-values) in the Date and time controls article. - -### Setting a header and placeholder text - -You can add a [Header](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.header) (or label) and [PlaceholderText](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.placeholdertext) (or watermark) to the calendar date picker to give the user an indication of what it's used for. To customize the look of the header, you can set the [HeaderTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendardatepicker.headertemplate) property instead of Header. - -The default placeholder text is "select a date". You can remove this by setting the PlaceholderText property to an empty string, or you can provide custom text as shown here. - -```xaml - -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -APIs for this control exist in the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) namespace. - -> [!div class="checklist"] -> -> - **UWP APIs:** [CalendarDatePicker class](/uwp/api/Windows.UI.Xaml.Controls.CalendarDatePicker), [Date property](/uwp/api/windows.ui.xaml.controls.calendardatepicker.date), [DateChanged event](/uwp/api/windows.ui.xaml.controls.calendardatepicker.datechanged) -> - [Open the WinUI 2 Gallery app and see the CalendarDatePicker in action](winui2gallery:/item/CalendarDatePicker). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -## Related articles - -- [Date and time controls](date-and-time.md) -- [Calendar view](calendar-view.md) -- [Date picker](date-picker.md) -- [Time picker](time-picker.md) diff --git a/hub/apps/design/controls/calendar-view.md b/hub/apps/design/controls/calendar-view.md deleted file mode 100644 index 93a1d246d5..0000000000 --- a/hub/apps/design/controls/calendar-view.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -description: A calendar view lets a user view and interact with a calendar that they can navigate by month, year, or decade. -title: Calendar view -ms.assetid: d8ec5ba8-7a9d-405d-a1a5-5a1b502b9e64 -label: Calendar view -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium ---- -# Calendar view - -A calendar view lets a user view and interact with a calendar that they can navigate by month, year, or decade. A user can select a single date or a range of dates. It doesn't have a picker surface and the calendar is always visible. - -## Is this the right control? - -Use a calendar view to let a user pick a single date or a range of dates from an always visible calendar. - -If you need to let a user select multiple dates at one time, you must use a calendar view. If you need to let a user pick only a single date and don't need a calendar to be always visible, consider using a [calendar date picker](calendar-date-picker.md) or [date picker](date-picker.md) control. - -For more info about choosing the right control, see the [Date and time controls](date-and-time.md) article. - -## Examples - -The calendar view is made up of 3 separate views: the month view, year view, and decade view. By default, it starts with the month view open. You can specify a startup view by setting the [DisplayMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.displaymode) property. - -![The 3 views of a calendar view](images/calendar-view-3-views.png) - -Users click the header in the month view to open the year view, and click the header in the year view to open the decade view. Users pick a year in the decade view to return to the year view, and pick a month in the year view to return to the month view. The two arrows to the side of the header navigate forward or backward by month, by year, or by decade. - -## Create a calendar view - -> [!div class="checklist"] -> -> - **Important APIs:** [CalendarView class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CalendarView), [SelectedDatesChanged event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selecteddateschanged) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the CalendarView in action](winui3gallery:/item/CalendarView) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -This example shows how to create a simple calendar view. - -```xaml - -``` - -The resulting calendar view looks like this: - -![Example of calendar view](images/controls-calendar-monthview.png) - -### Selecting dates - -By default, the [SelectionMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selectionmode) property is set to **Single**. This lets a user pick a single date in the calendar. Set SelectionMode to **None** to disable date selection. - -Set SelectionMode to **Multiple** to let a user select multiple dates. You can select multiple dates programmatically by adding [DateTime](/dotnet/api/system.datetime)/[DateTimeOffset](/dotnet/api/system.datetimeoffset) objects to the [SelectedDates](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selecteddates) collection, as shown here: - -```csharp -calendarView1.SelectedDates.Add(DateTimeOffset.Now); -calendarView1.SelectedDates.Add(new DateTime(1977, 1, 5)); -``` - -A user can deselect a selected date by clicking or tapping it in the calendar grid. - -You can handle the [SelectedDatesChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selecteddateschanged) event to be notified when the [SelectedDates](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selecteddates) collection has changed. - -> [!NOTE] -> For important info about date values, see [DateTime and Calendar values](date-and-time.md#datetime-and-calendar-values) in the Date and time controls article. - -### Customizing the calendar view's appearance - -The calendar view is composed of both XAML elements defined in the ControlTemplate and visual elements rendered directly by the control. - -- The XAML elements defined in the control template include the border that encloses the control, the header, previous and next buttons, and DayOfWeek elements. You can style and re-template these elements like any XAML control. -- The calendar grid is composed of [CalendarViewDayItem](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CalendarViewDayItem) objects. You can't style or re-template these elements, but various properties are provided to let you to customize their appearance. - -This diagram shows the elements that make up the month view of the calendar. For more info, see the Remarks on the [CalendarViewDayItem](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CalendarViewDayItem) class. - -![The elements of a calendar month view](images/calendar-view-month-elements.png) - -This table lists the properties you can change to modify the appearance of calendar elements. - -Element | Properties ---------|----------- -DayOfWeek | [DayOfWeekFormat](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.dayofweekformat) -CalendarItem | [CalendarItemBackground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.calendaritembackground), [CalendarItemBorderBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.calendaritemborderbrush), [CalendarItemBorderThickness](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.calendaritemborderthickness), [CalendarItemForeground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.calendaritemforeground) -DayItem | [DayItemFontFamily](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.dayitemfontfamily), [DayItemFontSize](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.dayitemfontsize), [DayItemFontStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.dayitemfontstyle), [DayItemFontWeight](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.dayitemfontweight), [HorizontalDayItemAlignment](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.horizontaldayitemalignment), [VerticalDayItemAlignment](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.verticaldayitemalignment), [CalendarViewDayItemStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.calendarviewdayitemstyle) -MonthYearItem (in the year and decade views, equivalent to DayItem) | [MonthYearItemFontFamily](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.monthyearitemfontfamily), [MonthYearItemFontSize](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.monthyearitemfontsize), [MonthYearItemFontStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.monthyearitemfontstyle), [MonthYearItemFontWeight](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.monthyearitemfontweight) -FirstOfMonthLabel | [FirstOfMonthLabelFontFamily](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofmonthlabelfontfamily), [FirstOfMonthLabelFontSize](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofmonthlabelfontsize), [FirstOfMonthLabelFontStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofmonthlabelfontstyle), [FirstOfMonthLabelFontWeight](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofmonthlabelfontweight), [HorizontalFirstOfMonthLabelAlignment](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.horizontalfirstofmonthlabelalignment), [VerticalFirstOfMonthLabelAlignment](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.verticalfirstofmonthlabelalignment), [IsGroupLabelVisible](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.isgrouplabelvisible) -FirstofYearDecadeLabel (in the year and decade views, equivalent to FirstOfMonthLabel) | [FirstOfYearDecadeLabelFontFamily](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofyeardecadelabelfontfamily), [FirstOfYearDecadeLabelFontSize](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofyeardecadelabelfontsize), [FirstOfYearDecadeLabelFontStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofyeardecadelabelfontstyle), [FirstOfYearDecadeLabelFontWeight](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.firstofyeardecadelabelfontweight) -Visual State Borders | [FocusBorderBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.focusborderbrush), [HoverBorderBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.hoverborderbrush), [PressedBorderBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.pressedborderbrush), [SelectedBorderBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selectedborderbrush), [SelectedForeground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selectedforeground), [SelectedHoverBorderBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selectedhoverborderbrush), [SelectedPressedBorderBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.selectedpressedborderbrush) -OutofScope | [IsOutOfScopeEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.isoutofscopeenabled), [OutOfScopeBackground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.outofscopebackground), [OutOfScopeForeground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.outofscopeforeground) -Today | [IsTodayHighlighted](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.istodayhighlighted), [TodayFontWeight](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.todayfontweight), [TodayForeground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.todayforeground) - - By default, the month view shows 6 weeks at a time. You can change the number of weeks shown by setting the [NumberOfWeeksInView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.numberofweeksinview) property. The minimum number of weeks to show is 2; the maximum is 8. - -By default, the year and decade views show in a 4x4 grid. To change the number of rows or columns, call [SetYearDecadeDisplayDimensions](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.setyeardecadedisplaydimensions) with the your desired number of rows and columns. This will change the grid for both the year and decade views. - -Here, the year and decade views are set to show in a 3x4 grid. - -```csharp -calendarView1.SetYearDecadeDisplayDimensions(3, 4); -``` - -By default, the minimum date shown in the calendar view is 100 years prior to the current date, and the maximum date shown is 100 years past the current date. You can change the minimum and maximum dates that the calendar shows by setting the [MinDate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.mindate) and [MaxDate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.maxdate) properties. - -```csharp -calendarView1.MinDate = new DateTime(2000, 1, 1); -calendarView1.MaxDate = new DateTime(2099, 12, 31); -``` - -### Updating calendar day items - -Each day in the calendar is represented by a [CalendarViewDayItem](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CalendarViewDayItem) object. To access an individual day item and use its properties and methods, handle the [CalendarViewDayItemChanging](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarview.calendarviewdayitemchanging) event and use the Item property of the event args to access the CalendarViewDayItem. - -You can make a day not selectable in the calendar view by setting its [CalendarViewDayItem.IsBlackout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarviewdayitem.isblackout) property to **true**. - -You can show contextual information about the density of events in a day by calling the [CalendarViewDayItem.SetDensityColors](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.calendarviewdayitem.setdensitycolors) method. You can show from 0 to 10 density bars for each day, and set the color of each bar. - -Here are some day items in a calendar. Days 1 and 2 are blacked out. Days 2, 3, and 4 have various density bars set. - -![Calendar days with density bars](images/calendar-view-density-bars.png) - -### Phased rendering - -A calendar view can contain a large number of CalendarViewDayItem objects. To keep the UI responsive and enable smooth navigation through the calendar, calendar view supports phased rendering. This lets you break up processing of a day item into phases. If a day is moved out of view before all the phases are complete, no more time is used trying to process and render that item. - -This example shows phased rendering of a calendar view for scheduling appointments. - -- In phase 0, the default day item is rendered. -- In phase 1, you blackout dates that can't be booked. This includes past dates, Sundays, and dates that are already fully booked. -- In phase 2, you check each appointment that's booked for the day. You show a green density bar for each confirmed appointment and a blue density bar for each tentative appointment. - -The `Bookings` class in this example is from a fictitious appointment booking app, and is not shown. - -```xaml - -``` - -```csharp -private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, - CalendarViewDayItemChangingEventArgs args) -{ - // Render basic day items. - if (args.Phase == 0) - { - // Register callback for next phase. - args.RegisterUpdateCallback(CalendarView_CalendarViewDayItemChanging); - } - // Set blackout dates. - else if (args.Phase == 1) - { - // Blackout dates in the past, Sundays, and dates that are fully booked. - if (args.Item.Date < DateTimeOffset.Now || - args.Item.Date.DayOfWeek == DayOfWeek.Sunday || - Bookings.HasOpenings(args.Item.Date) == false) - { - args.Item.IsBlackout = true; - } - // Register callback for next phase. - args.RegisterUpdateCallback(CalendarView_CalendarViewDayItemChanging); - } - // Set density bars. - else if (args.Phase == 2) - { - // Avoid unnecessary processing. - // You don't need to set bars on past dates or Sundays. - if (args.Item.Date > DateTimeOffset.Now && - args.Item.Date.DayOfWeek != DayOfWeek.Sunday) - { - // Get bookings for the date being rendered. - var currentBookings = Bookings.GetBookings(args.Item.Date); - - List densityColors = new List(); - // Set a density bar color for each of the days bookings. - // It's assumed that there can't be more than 10 bookings in a day. Otherwise, - // further processing is needed to fit within the max of 10 density bars. - foreach (booking in currentBookings) - { - if (booking.IsConfirmed == true) - { - densityColors.Add(Colors.Green); - } - else - { - densityColors.Add(Colors.Blue); - } - } - args.Item.SetDensityColors(densityColors); - } - } -} -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -APIs for this control exist in the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) namespace. - -> [!div class="checklist"] -> -> - **UWP APIs:** [CalendarView class](/uwp/api/Windows.UI.Xaml.Controls.CalendarView), [SelectedDatesChanged event](/uwp/api/windows.ui.xaml.controls.calendarview.selecteddateschanged) -> - [Open the WinUI 2 Gallery app and see the CalendarView in action](winui2gallery:/item/CalendarView). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -## Related articles - -- [Date and time controls](date-and-time.md) -- [Calendar date picker](calendar-date-picker.md) -- [Date picker](date-picker.md) -- [Time picker](time-picker.md) diff --git a/hub/apps/design/controls/checkbox.md b/hub/apps/design/controls/checkbox.md deleted file mode 100644 index be5f27b6e0..0000000000 --- a/hub/apps/design/controls/checkbox.md +++ /dev/null @@ -1,324 +0,0 @@ ---- -description: Used to select or deselect action items. Can be used for a single list item or for multiple list items. -title: Check boxes -ms.assetid: 6231A806-287D-43EE-BD8D-39D2FF761914 -label: Check boxes -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium ---- -# Check boxes - -A check box is used to select or deselect action items. It can be used for a single item or for a list of multiple items that a user can choose from. The control has three selection states: unselected, selected, and indeterminate. Use the indeterminate state when a collection of sub-choices have both unselected and selected states. - -![Example of check box states](images/templates-checkbox-states-default.png) - -## Is this the right control? - -Use a **single check box** for a binary yes/no choice, such as with a "Remember me?" login scenario or with a terms of service agreement. - -![A single check box used for an individual choice](images/checkbox1.png) - -For a binary choice, the main difference between a **check box** and a [toggle switch](toggles.md) is that the check box is for status and the toggle switch is for action. You can delay committing a check box interaction (as part of a form submit, for example), while you should immediately commit a toggle switch interaction. Also, only check boxes allow for multi-selection. - -Use **multiple check boxes** for multi-select scenarios in which a user chooses one or more items from a group of choices that are not mutually exclusive. - -Create a group of check boxes when users can select any combination of options. - -![Selecting multiple options with check boxes](images/checkbox2.png) - -When options can be grouped, you can use an indeterminate check box to represent the whole group. Use the check box's indeterminate state when a user selects some, but not all, sub-items in the group. - -![Check boxes used to show a mixed choice](images/checkbox3.png) - -Both **check box** and **radio button** controls let the user select from a list of options. Check boxes let the user select a combination of options. In contrast, radio buttons let the user make a single choice from mutually exclusive options. When there is more than one option but only one can be selected, use a radio button instead. - -## Recommendations - -- Verify that the purpose and current state of the check box is clear. -- Limit check box text content to no more than two lines. -- Word the checkbox label as a statement that the check mark makes true and the absence of a check mark makes false. -- Use the default font unless your brand guidelines tell you to use another. -- If the text content is dynamic, consider how the control will resize and what will happen to visuals around it. -- If there are two or more mutually exclusive options from which to choose, consider using [radio buttons](radio-button.md). -- Don't put two check box groups next to each other. Use group labels to separate the groups. -- Don't use a check box as an on/off control or to perform a command; instead, use a [toggle switch](toggles.md). -- Don't use a check box to display other controls, such as a dialog box. -- Use the indeterminate state to indicate that an option is set for some, but not all, sub-choices. -- When using indeterminate state, use subordinate check boxes to show which options are selected and which are not. Design the UI so that the user can get see the sub-choices. -- Don't use the indeterminate state to represent a third state. The indeterminate state is used to indicate that an option is set for some, but not all, sub-choices. So, don't allow users to set an indeterminate state directly. For an example of what not to do, this check box uses the indeterminate state to indicate medium spiciness: - - ![An indeterminate check box](images/spicyoptions2.png) - - Instead, use a radio button group that has three options. - - ![Radio button group with three options: Not spicy, Spicy, and Extra spicy](images/spicyoptions.png) - -## Create a checkbox - -> [!div class="checklist"] -> -> - **Important APIs**: [CheckBox class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.checkbox), [Checked event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton.checked), [IsChecked property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton.ischecked), [Content property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol.content) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the CheckBox in action](winui3gallery:/item/CheckBox) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -### Create a simple check box - -To assign a label to the checkbox, set the [Content](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol.content) property. The label displays next to the checkbox. - -This XAML creates a single check box that is used to agree to terms of service before a form can be submitted. - -```xaml - -``` - -Here's the same check box created in code. - -```csharp -CheckBox termsOfServiceCheckBox = new CheckBox(); -termsOfServiceCheckBox.Content = "I agree to the terms of service."; -``` - -### Bind to IsChecked - -Use the [IsChecked](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton.ischecked) property to determine whether the check box is checked or cleared. You can bind the value of the IsChecked property to another binary value. -However, because IsChecked is a [nullable](/dotnet/api/system.nullable-1) boolean value, you must either use a cast or a value converter to bind it to a boolean property. This depends on the actual binding type you are using and you will find examples below for each possible type. - -In this example, the **IsChecked** property of the check box to agree to terms of service is bound to the [IsEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.isenabled) property of a Submit button. The Submit button is enabled only if the terms of service are agreed to. - -#### Using x:Bind - -> [!NOTE] -> We only show the relevant code here. For more info about data binding see [Data binding overview](/windows/uwp/data-binding/data-binding-quickstart). Specific {x:Bind} info (such as casting) is detailed in [{x:Bind} markup extension](/windows/uwp/xaml-platform/x-bind-markup-extension). - -```xaml - - - - - - - - - - - - - - - -``` - -Here's the collapsed command bar flyout with an open SplitButton. - -![A command bar flyout with a split button](images/command-bar-flyout-split-button-1-5.png) - -Here's the expanded command bar flyout with custom zoom UI in the menu. - -![A command bar flyout with complex UI](images/command-bar-flyout-custom-ui-1-5.png) - -## Create a context menu with secondary commands only - -You can use a command bar flyout with only secondary commands to create a context menu that achieves the same look and behavior of [menu flyout](menus.md). - -```xaml - - - - - - - - - - - - - - - - -``` - -Here's the command bar flyout as a context menu. - -![A command bar flyout with only secondary commands](images/context-menu-example.png) - -You can also use a CommandBarFlyout with a DropDownButton to create a standard menu. - -```xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -Here's a drop down button menu in a command bar flyout. - -![A command bar flyout with as a drop down button menu](images/command-bar-flyout-dropdown.png) - -## Command bar flyouts for text controls - -The [TextCommandBarFlyout](/uwp/api/microsoft.ui.xaml.controls.textcommandbarflyout) is a specialized command bar flyout that contains commands for editing text. Each text control shows the TextCommandBarFlyout automatically as a context menu (right-click), or when text is selected. The text command bar flyout adapts to the text selection to only show relevant commands. - -Here's a text command bar flyout on text selection. - -![A collapsed text command bar flyout](images/command-bar-flyout-text-selection.png) - -Here's an expanded text command bar flyout that shows the secondary commands. - -![An expanded text command bar flyout](images/command-bar-flyout-text-full.png) - -### Available commands - -This table shows the commands that are included in a TextCommandBarFlyout, and when they are shown. - -| Command | Shown... | -| ------- | -------- | -| Bold | when the text control is not read-only (RichEditBox only). | -| Italic | when the text control is not read-only (RichEditBox only). | -| Underline | when the text control is not read-only (RichEditBox only). | -| Proofing | when IsSpellCheckEnabled is **true** and misspelled text is selected. | -| Cut | when the text control is not read-only and text is selected. | -| Copy | when text is selected. | -| Paste | when the text control is not read-only and the clipboard has content. | -| Undo | when there is an action that can be undone. | -| Select all | when text can be selected. | - -### Custom text command bar flyouts - -TextCommandBarFlyout can't be customized, and is managed automatically by each text control. However, you can replace the default TextCommandBarFlyout with custom commands. - -- To replace the default TextCommandBarFlyout that's shown on text selection, you can create a custom CommandBarFlyout (or other flyout type) and assign it to the **SelectionFlyout** property. If you set SelectionFlyout to **null**, no commands are shown on selection. -- To replace the default TextCommandBarFlyout that's shown as the context menu, assign a custom CommandBarFlyout (or other flyout type) to the **ContextFlyout** property on a text control. If you set ContextFlyout to **null**, the menu flyout shown in previous versions of the text control is shown instead of the TextCommandBarFlyout. - -### Light dismiss - -Light dismiss controls–such as menus, context menus, and other flyouts–trap keyboard and gamepad focus inside the transient UI until dismissed. To provide a visual cue for this behavior, light dismiss controls on Xbox will draw an overlay that dims the visibility of out of scope UI. This behavior can be modified with the [LightDismissOverlayMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.flyoutbase.lightdismissoverlaymode) property. By default, transient UIs will draw the light dismiss overlay on Xbox (**Auto**) but not other device families. You can choose to force the overlay to be always **On** or always **Off**. - -```xaml - > -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The CommandBarFlyout control for UWP apps is included as part of WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in both the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) (UWP) and [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) (WinUI) namespaces. - -> [!div class="checklist"] -> -> - **UWP APIs:** [CommandBarFlyout class](/uwp/api/windows.ui.xaml.controls.commandbarflyout), [TextCommandBarFlyout class](/uwp/api/windows.ui.xaml.controls.textcommandbarflyout), [AppBarButton class](/uwp/api/windows.ui.xaml.controls.appbarbutton), [AppBarToggleButton class](/uwp/api/windows.ui.xaml.controls.appbartogglebutton), [AppBarSeparator class](/uwp/api/windows.ui.xaml.controls.appbarseparator) -> - **WinUI 2 Apis:** [CommandBarFlyout class](/windows/winui/api/microsoft.ui.xaml.controls.commandbarflyout), [TextCommandBarFlyout class](/windows/winui/api/microsoft.ui.xaml.controls.textcommandbarflyout) -> - [Open the WinUI 2 Gallery app and see the CommandBarFlyout in action](winui2gallery:/item/CommandBarFlyout). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related articles - -- [Command design basics for Windows apps](../basics/commanding-basics.md) -- [Contextual commanding for collections and lists](collection-commanding.md). -- [Menus and context menus](menus-and-context-menus.md) -- [Command bar](command-bar.md) -- [CommandBar class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CommandBar) -- [CommandBarFlyout class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbarflyout) diff --git a/hub/apps/design/controls/command-bar.md b/hub/apps/design/controls/command-bar.md deleted file mode 100644 index 9ad1b13838..0000000000 --- a/hub/apps/design/controls/command-bar.md +++ /dev/null @@ -1,312 +0,0 @@ ---- -description: Learn how to use command bar controls to give users easy access to your app's most common commands and tasks. -title: Command bar -label: Command bar -template: detail.hbs -op-migration-status: ready -ms.date: 02/26/2025 -ms.topic: how-to -ms.assetid: 868b4145-319b-4a97-82bd-c98d966144db -doc-status: Published -ms.localizationpriority: medium ---- -# Command bar - -Command bars provide users with easy access to your app's most common tasks. Command bars can provide access to app-level or page-specific commands and can be used with any navigation pattern. - -![Example of a command bar with icons](images/controls-appbar-icons.png) - -## Is this the right control? - -The CommandBar control is a general-purpose, flexible, light-weight control that can display both complex content, such as images or text blocks, as well as simple commands such as [AppBarButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton), [AppBarToggleButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbartogglebutton), and [AppBarSeparator](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarseparator) controls. - -> [!NOTE] -> XAML provides both the [AppBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar) control and the [CommandBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar) control. You should use the AppBar only when you are upgrading a Universal Windows 8 app that uses the AppBar, and need to minimize changes. For new apps in Windows 10, we recommend using the CommandBar control instead. This document assumes you are using the CommandBar control. - -## Anatomy - -By default, the command bar shows a row of icon buttons and an optional "see more" button, which is represented by an ellipsis \[...\]. Here's the command bar created by the example code shown later. It's shown in its closed compact state. - -![Screenshot showing a closed command bar.](images/command-bar-compact.png) - -The command bar can also be shown in a closed minimal state that looks like this. See the [Open and closed states](#open-and-closed-states) section for more info. - -![Screenshot showing a command bar in a closed minimal state.](images/command-bar-minimal.gif) - -Here's the same command bar in its open state. The labels identify the main parts of the control. - -![Screenshot showing a command bar in its open state.](images/commandbar-anatomy-open.png) - -The command bar is divided into 4 main areas: - -- The content area is aligned to the left side of the bar. It is shown if the [Content](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol.content) property is populated. -- The primary command area is aligned to the right side of the bar. It is shown if the [PrimaryCommands](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.primarycommands) property is populated. -- The "see more" \[...\] button is shown on the right of the bar. Pressing the "see more" \[...\] button reveals primary command labels and opens the overflow menu if there are secondary commands. The button will not be visible when no primary command labels or secondary labels are present. To change default behavior, use the [OverflowButtonVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.overflowbuttonvisibility) property. -- The overflow menu is shown only when the command bar is open and the [SecondaryCommands](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.secondarycommands) property is populated. When space is limited, primary commands will move into the SecondaryCommands area. To change default behavior, use the [IsDynamicOverflowEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.isdynamicoverflowenabled) property. - -The layout is reversed when the [FlowDirection](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.flowdirection) is **RightToLeft**. - -## Placement - -Command bars can be placed at the top of the app window, at the bottom of the app window, and inline, by embedding them in a layout control such as ```Grid.row```. - -![Example 1 of app bar placement](images/appbar-guidelines-placement-1.png) - -- For small handheld devices, we recommend positioning command bars at the bottom of the screen for easy reachability. -- For devices with larger screens, placing command bars near the top of the window makes them more noticeable and discoverable. - -Use the [DiagonalSizeInInches](/uwp/api/windows.graphics.display.displayinformation.diagonalsizeininches) API to determine physical screen size. - -Command bars can be placed in the following screen regions on single-view screens (left example) and on multi-view screens (right example). Inline command bars can be placed anywhere in the action space. - -![Example 2 of app bar placement](images/appbar-guidelines-placement-2.png) - ->**Touch devices**: If the command bar must remain visible to a user when the touch keyboard, or Soft Input Panel (SIP), appears then you can assign the command bar to the [BottomAppBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.page.bottomappbar) property of a Page and it will move to remain visible when the SIP is present. Otherwise, you should place the command bar inline and positioned relative to your app content. - -## Create a command bar - -> [!div class="checklist"] -> -> - **Important APIs:** [CommandBar class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar), [AppBarButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton), [AppBarToggleButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbartogglebutton), [AppBarSeparator class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarseparator) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the CommandBar in action](winui3gallery:/item/CommandBar) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] -This example creates the command bar shown previously. - -```xaml - - - - - - - - - - - - - - - - - - -``` - -## Commands and content - -The CommandBar control has 3 properties you can use to add commands and content: [PrimaryCommands](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.primarycommands), [SecondaryCommands](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.secondarycommands), and [Content](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol.content). - -### Commands - -By default, command bar items are added to the **PrimaryCommands** collection. You should add commands in order of their importance so that the most important commands are always visible. When the command bar width changes, such as when users resize their app window, primary commands dynamically move between the command bar and the overflow menu at breakpoints. To change this default behavior, use the [IsDynamicOverflowEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.isdynamicoverflowenabled) property. - -On the smallest screens (320 epx width), a maximum of 4 primary commands fit in the command bar. - -You can also add commands to the **SecondaryCommands** collection, which are shown in the overflow menu. - -![Example of a command bar with "More" area and icons](images/appbar_rs2_overflow_icons.png) - -You can programmatically move commands between the PrimaryCommands and SecondaryCommands as needed. - -- *If there is a command that would appear consistently across pages, it's best to keep that command in a consistent location.* -- *We recommended placing Accept, Yes, and OK commands to the left of Reject, No, and Cancel. Consistency gives users the confidence to move around the system and helps them transfer their knowledge of app navigation from app to app.* - -### App bar buttons - -Both the PrimaryCommands and SecondaryCommands can be populated only with types that implement the [ICommandBarElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.icommandbarelement) interface, which includes [AppBarButton](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.AppBarButton), [AppBarToggleButton](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.AppBarToggleButton), and [AppBarSeparator](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.AppBarSeparator) command elements. - -If you'd like to include a different type of element in your PrimaryCommands or SecondaryCommands, you can use the [AppBarElementContainer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarelementcontainer) class. This will serve as a wrapper for your element and will enable the element to display in a CommandBar. - -The app bar button controls are characterized by an icon and text label. These controls are optimized for use in a command bar, and their appearance changes depending on whether the control is used in the command bar or the overflow menu. - -#### Icons - -The size of the icons when shown in the primary command area is 20x20px; in the overflow menu, icons are displayed at 16x16px. If you use [SymbolIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symbolicon), [FontIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.fonticon), or [PathIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pathicon), the icon will automatically scale to the correct size with no loss of fidelity when the command enters the secondary command area. - -For more information and examples of setting the icon, see the documentation for the [AppBarButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton) class. - -#### Labels - -The AppBarButton [IsCompact](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton.IsCompact) property determines whether the label is shown. In a CommandBar control, the command bar overwrites the button's IsCompact property automatically as the command bar is opened and closed. - -To position app bar button labels, use CommandBar's [DefaultLabelPosition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbar.defaultlabelposition) property. - -```xaml - - - - -``` - -![Command bar with labels on the right](images/app-bar-labels-on-right.png) - -On larger windows, consider moving labels to the right of app bar button icons to improve legibility. Labels on the bottom require users to open the command bar to reveal labels, while labels on the right are visible even when command bar is closed. - -In overflow menus, labels are positioned to the right of icons by default, and **LabelPosition** is ignored. You can adjust the styling by setting the [CommandBarOverflowPresenterStyle](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CommandBar.CommandBarOverflowPresenterStyle) property to a Style that targets the [CommandBarOverflowPresenter](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.commandbaroverflowpresenter). - -Button labels should be short, preferably a single word. Longer labels below an icon will wrap to multiple lines, increasing the overall height of the opened command bar. You can include a soft-hyphen character (0x00AD) in the text for a label to hint at the character boundary where a word break should occur. In XAML, you express this using an escape sequence, like this: - -```xaml - -``` - -When the label wraps at the hinted location, it looks like this. - -![App bar button with wrapping label](images/app-bar-button-label-wrap.png) - -#### SplitButton - -You can display a [SplitButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitbutton) in a CommandBar using the built-in `SplitButtonCommandBarStyle` and the [AppBarElementContainer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarelementcontainer) class. `SplitButtonCommandBarStyle` provides visuals for a SplitButton to look and feel like an AppBarButton, while `AppBarElementContainer` is a wrapper class that provides the functionality that SplitButton needs to act like an AppBarButton. - -When you wrap a SplitButton in an `AppBarElementContainer` and place it in a CommandBar, the `SplitButtonCommandBarStyle` resource is applied automatically. - -This sample code creates and displays a SplitButton inside of a CommandBar: - -```xaml - - - - - - - - - - - - - - - - -``` - -### Menus and flyouts - -Consider logical groupings for the commands, such as placing Reply, Reply All, and Forward in a Respond menu. While typically an app bar button activates a single command, an app bar button can be used to show a [MenuFlyout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.menuflyout) or [Flyout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.flyout) with custom content. - -![Example of a MenuFlyout for sorting options](images/menuflyout-sorting.png) -![Example of flyouts on a command bar](images/appbar-guidelines-flyouts.png) - -### Other content - -You can add any XAML elements to the content area by setting the **Content** property. If you want to add more than one element, you need to place them in a panel container and make the panel the single child of the Content property. - -When dynamic overflow is enabled, content will not clip because primary commands can move into the overflow menu. Otherwise, primary commands take precedence and may cause the content to be clipped. - -When the [ClosedDisplayMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.closeddisplaymode) is **Compact**, the content can be clipped if it is larger than the compact size of the command bar. You should handle the [Opening](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.opening) and [Closed](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.closed) events to show or hide parts of the UI in the content area so that they aren't clipped. See the [Open and closed states](#open-and-closed-states) section for more info. - -## Open and closed states - -The command bar can be open or closed. When it's open, it shows primary command buttons with text labels and it opens the overflow menu (if there are secondary commands). -The command bar opens the overflow menu upwards (above the primary commands) or downwards (below the primary commands). -The default direction is up, but if there's not enough space to open the overflow menu upwards, the command bar opens it downwards. - -A user can switch between these states by pressing the "see more" \[...\] button. You can switch between them programmatically by setting the [IsOpen](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.isopen) property. - -You can use the [Opening](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.opening), [Opened](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.opened), [Closing](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.closing), and [Closed](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.closed) events to respond to the command bar being opened or closed. - -- The Opening and Closing events occur before the transition animation begins. -- The Opened and Closed events occur after the transition completes. - -In this example, the Opening and Closing events are used to change the opacity of the command bar. When the command bar is closed, it's semi-transparent so the app background shows through. When the command bar is opened, the command bar is made opaque so the user can focus on the commands. - -```xaml - - - - - - -``` - -```csharp -private void CommandBar_Opening(object sender, object e) -{ - CommandBar cb = sender as CommandBar; - if (cb != null) cb.Background.Opacity = 1.0; -} - -private void CommandBar_Closing(object sender, object e) -{ - CommandBar cb = sender as CommandBar; - if (cb != null) cb.Background.Opacity = 0.5; -} - -``` - -### IsSticky - -If a user interacts with other parts of an app when a command bar is open, then the command bar will automatically close. This is called *light dismiss*. You can control light dismiss behavior by setting the [IsSticky](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.issticky) property. When `IsSticky="true"`, the bar remains open until the user presses the "see more" \[...\] button or selects an item from the overflow menu. - -We recommend avoiding sticky command bars because they don't conform to users' expectations for [light dismiss and keyboard focus behavior](./menus.md#light-dismiss). - -### Display Mode - -You can control how the command bar is shown in its closed state by setting the [ClosedDisplayMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbar.closeddisplaymode) property. There are 3 closed display modes to choose from: - -- **Compact**: The default mode. Shows content, primary command icons without labels, and the "see more" \[...\] button. -- **Minimal**: Shows only a thin bar that acts as the "see more" \[...\] button. The user can press anywhere on the bar to open it. -- **Hidden**: The command bar is not shown when it's closed. This can be useful for showing contextual commands with an inline command bar. In this case, you must open the command bar programmatically by setting the **IsOpen** property or changing the ClosedDisplayMode to **Minimal** or **Compact**. - -Here, a command bar is used to hold simple formatting commands for a [RichEditBox](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.RichEditBox). When the edit box doesn't have focus, the formatting commands can be distracting, so they're hidden. When the edit box is being used, the command bar's ClosedDisplayMode is changed to Compact so the formatting commands are visible. - -```xaml - - - - - - - - -``` - -```csharp -private void EditStackPanel_GotFocus(object sender, RoutedEventArgs e) -{ - FormattingCommandBar.ClosedDisplayMode = AppBarClosedDisplayMode.Compact; -} - -private void EditStackPanel_LostFocus(object sender, RoutedEventArgs e) -{ - FormattingCommandBar.ClosedDisplayMode = AppBarClosedDisplayMode.Hidden; -} -``` - -> [!NOTE] -> The implementation of the editing commands is beyond the scope of this example. For more info, see the [RichEditBox](rich-edit-box.md) article. - -Although the Minimal and Hidden modes are useful in some situations, keep in mind that hiding all actions could confuse users. - -Changing the ClosedDisplayMode to provide more or less of a hint to the user affects the layout of surrounding elements. In contrast, when the CommandBar transitions between closed and open, it does not affect the layout of other elements. - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -APIs for this control exist in the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) namespace. - -> [!div class="checklist"] -> -> - **UWP APIs:** [CommandBar class](/uwp/api/windows.ui.xaml.controls.commandbar), [AppBarButton class](/uwp/api/windows.ui.xaml.controls.appbarbutton), [AppBarToggleButton class](/uwp/api/windows.ui.xaml.controls.appbartogglebutton), [AppBarSeparator class](/uwp/api/windows.ui.xaml.controls.appbarseparator) -> - [Open the WinUI 2 Gallery app and see the CommandBar in action](winui2gallery:/item/CommandBar). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -[Automatic styling of a SplitButton](#splitbutton) in a CommandBar requires that you use the SplitButton control from WinUI 2.6 or later. - -## Related articles - -- [Command design basics for Windows apps](../basics/commanding-basics.md) -- [Command bar flyout](command-bar-flyout.md) -- [Menu flyout and menu bar](menus.md) -- [MenuFlyout class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.menuflyout) -- [CommandBar class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.CommandBar) diff --git a/hub/apps/design/controls/commanding.md b/hub/apps/design/controls/commanding.md deleted file mode 100644 index 7549cb70b7..0000000000 --- a/hub/apps/design/controls/commanding.md +++ /dev/null @@ -1,1112 +0,0 @@ ---- -title: Commanding in Windows apps -description: How to use the XamlUICommand and StandardUICommand classes (along with the ICommand interface) to share and manage commands across various control types, regardless of the device and input type being used. -ms.topic: overview -ms.date: 05/30/2025 -ms.localizationpriority: medium ---- - -# Commanding in Windows apps using StandardUICommand, XamlUICommand, and ICommand - -In this topic, we describe commanding in Windows applications. Specifically, we discuss how you can use the [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) and [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) classes (along with the ICommand interface) to share and manage commands across various control types, regardless of the device and input type being used. - -![A diagram representing a common usage for a shared command: multiple UI surfaces with a 'favorite' command](images/commanding/generic-commanding.png) - -*Share commands across various controls, regardless of device and input type* - -## Important APIs - -- [Windows.UI.Xaml.Input.ICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.icommand) and [System.Windows.Input.ICommand](/dotnet/api/system.windows.input.icommand) -- [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) -- [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) - -## Overview - - - - - -Commands can be invoked directly through UI interactions like clicking a button or selecting an item from a context menu. They can also be invoked indirectly through an input device such as a keyboard accelerator, gesture, speech recognition, or an automation/accessibility tool. Once invoked, the command can then be handled by a control (text navigation in an edit control), a window (back navigation), or the application (exit). - -Commands can operate on a specific context within your app, such as deleting text or undoing an action, or they can be context-free, such as muting audio or adjusting brightness. - -The following image shows two command interfaces (a [CommandBar](command-bar.md) and a floating contextual [CommandBarFlyout](command-bar-flyout.md)) that share some of the same commands. - -![Expanded Command bar](images/command-bar-flyout-img-expanded.png)
*Command bar* - -![Context menu in the Microsoft Photos gallery](images/context-menu-example.png)
*Context menu in the Microsoft Photos gallery* - -## Command interactions - -Due to the variety of devices, input types, and UI surfaces that can affect how a command is invoked, we recommend exposing your commands through as many commanding surfaces as possible. These can include a combination of [Swipe](swipe.md), [MenuBar](menus.md), [CommandBar](command-bar.md), [CommandBarFlyout](command-bar-flyout.md), and traditional [context menu](menus.md). - -**For critical commands, use input-specific accelerators.** Input accelerators let a user perform actions more quickly depending on the input device they're using. - -Here are some common input accelerators for various input types: - -- **Pointer** - Mouse & Pen hover buttons -- **Keyboard** - Shortcuts (access keys and accelerator keys) -- **Touch** - Swipe -- **Touch** - Pull to refresh data - -You must consider the input type and user experiences to make your application's functionality universally accessible. For example, collections (especially user editable ones) typically include a variety of specific commands that are performed quite differently depending on the input device. - -The following table shows some typical collection commands and ways to expose those commands. - -| Command | Input-agnostic | Mouse accelerator | Keyboard accelerator | Touch accelerator | -| ---------------- | -------------- | ----------------- | -------------------- | ----------------- | -| Delete item | Context menu | Hover button | DEL key | Swipe to delete | -| Flag item | Context menu | Hover button | Ctrl+Shift+G | Swipe to flag | -| Refresh data | Context menu | N/A | F5 key | Pull to refresh | -| Favorite an item | Context menu | Hover button | F, Ctrl+S | Swipe to favorite | - -**Always provide a context menu** We recommend including all relevant contextual commands in a traditional context menu or CommandBarFlyout, as both are supported for all input types. For example, if a command is exposed only during a pointer hover event, it cannot be used on a touch-only device. - -## Commands in Windows applications - -There are a few ways you can share and manage commanding experiences in a Windows application. You can define event handlers for standard interactions, such as Click, in code-behind (this can be quite inefficient, depending on the complexity of your UI), you can bind event listener for standard interactions to a shared handler, or you can bind the control's Command property to an ICommand implementation that describes the command logic. - -To provide rich and comprehensive user experiences across command surfaces efficiently and with minimal code duplication, we recommend using the command binding features described in this topic(for standard event handling, see the individual event topics). - -To bind a control to a shared command resource, you can implement the ICommand interfaces yourself, or you can build your command from either the [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) base class or one of the platform commands defined by the [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) derived class. - -- The ICommand interface ([Windows.UI.Xaml.Input.ICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.icommand) or [System.Windows.Input.ICommand](/dotnet/api/system.windows.input.icommand)) lets you create fully customized, reusable commands across your app. -- [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) also provides this capability but simplifies development by exposing a set of built-in command properties such as the command behavior, keyboard shortcuts (access key and accelerator key), icon, label, and description. -- [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) simplifies things further by letting you choose from a set of standard platform commands with predefined properties. - -> [!Important] -> In UWP applications, commands are implementations of either the [Windows.UI.Xaml.Input.ICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.icommand) (C++) or the [System.Windows.Input.ICommand](/dotnet/api/system.windows.input.icommand) (C#) interface, depending on your chosen language framework. - -## Command experiences using the StandardUICommand class - -Derived from [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) (derived from [Windows.UI.Xaml.Input.ICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.icommand) for C++ or [System.Windows.Input.ICommand](/dotnet/api/system.windows.input.icommand) for C#), the [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) class exposes a set of standard platform commands with pre-defined properties such as icon, keyboard accelerator, and description. - -A [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) provides a quick and consistent way to define common commands such as `Save` or `Delete`. All you have to do is provide the execute and canExecute functions. - -### Example - -![StandardUICommand sample](images/commanding/StandardUICommandSampleOptimized.gif) - -*StandardUICommandSample* - -| Download the code for this example | -| -------------------- | -| [UWP commanding sample (StandardUICommand)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-commanding-standarduicommand.zip) | - -In this example, we show how to enhance a basic [ListView](listview-and-gridview.md) with a Delete item command implemented through the [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) class, while optimizing the user experience for a variety of input types using a [MenuBar](menus.md), [Swipe](swipe.md) control, hover buttons, and [context menu](menus.md). - -> [!NOTE] -> This sample requires the Microsoft.UI.Xaml.Controls NuGet package, a part of [WinUI 2](/windows/uwp/get-started/winui2/). - -**Xaml:** - -The sample UI includes a [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) of five items. The Delete [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) is bound to a [MenuBarItem](/uwp/api/microsoft.ui.xaml.controls.menubaritem), a [SwipeItem](/uwp/api/microsoft.ui.xaml.controls.swipeitem), an [AppBarButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton), and [ContextFlyout menu](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.contextflyout). - -``` xaml - - - - - - - - - - - - - - - - StandardUICommand sample - - - This sample shows how to use the StandardUICommand class to - share a platform command and consistent user experiences - across various controls. - - - Specifically, we define a standard delete command and add it - to a variety of command surfaces, all of which share a common - icon, label, keyboard accelerator, and description. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -**Code-behind** - -1. First, we define a `ListItemData` class that contains a text string and ICommand for each ListViewItem in our ListView. - -```csharp -public class ListItemData -{ - public String Text { get; set; } - public ICommand Command { get; set; } -} -``` - -2. In the MainPage class, we define a collection of `ListItemData` objects for the [DataTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.datatemplate) of the [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) [ItemTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.itemtemplate). We then populate it with an initial collection of five items (with text and associated [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) Delete). - -```csharp -/// -/// ListView item collection. -/// -ObservableCollection collection = - new ObservableCollection(); - -/// -/// Handler for the layout Grid control load event. -/// -/// Source of the control loaded event -/// Event args for the loaded event -private void ControlExample_Loaded(object sender, RoutedEventArgs e) -{ - // Create the standard Delete command. - var deleteCommand = new StandardUICommand(StandardUICommandKind.Delete); - deleteCommand.ExecuteRequested += DeleteCommand_ExecuteRequested; - - DeleteFlyoutItem.Command = deleteCommand; - - for (var i = 0; i < 5; i++) - { - collection.Add( - new ListItemData { - Text = "List item " + i.ToString(), - Command = deleteCommand }); - } -} - -/// -/// Handler for the ListView control load event. -/// -/// Source of the control loaded event -/// Event args for the loaded event -private void ListView_Loaded(object sender, RoutedEventArgs e) -{ - var listView = (ListView)sender; - // Populate the ListView with the item collection. - listView.ItemsSource = collection; -} -``` - -3. Next, we define the ICommand ExecuteRequested handler where we implement the item delete command. - -``` csharp -/// -/// Handler for the Delete command. -/// -/// Source of the command event -/// Event args for the command event -private void DeleteCommand_ExecuteRequested( - XamlUICommand sender, ExecuteRequestedEventArgs args) -{ - // If possible, remove specified item from collection. - if (args.Parameter != null) - { - foreach (var i in collection) - { - if (i.Text == (args.Parameter as string)) - { - collection.Remove(i); - return; - } - } - } - if (ListViewRight.SelectedIndex != -1) - { - collection.RemoveAt(ListViewRight.SelectedIndex); - } -} -``` - -4. Finally, we define handlers for various ListView events, including [PointerEntered](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.pointerentered), [PointerExited](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.pointerexited), and [SelectionChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.selector.selectionchanged) events. The pointer event handlers are used to show or hide the Delete button for each item. - -```csharp -/// -/// Handler for the ListView selection changed event. -/// -/// Source of the selection changed event -/// Event args for the selection changed event -private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) -{ - if (ListViewRight.SelectedIndex != -1) - { - var item = collection[ListViewRight.SelectedIndex]; - } -} - -/// -/// Handler for the pointer entered event. -/// Displays the delete item "hover" buttons. -/// -/// Source of the pointer entered event -/// Event args for the pointer entered event -private void ListViewSwipeContainer_PointerEntered( - object sender, PointerRoutedEventArgs e) -{ - if (e.Pointer.PointerDeviceType == - Windows.Devices.Input.PointerDeviceType.Mouse || - e.Pointer.PointerDeviceType == - Windows.Devices.Input.PointerDeviceType.Pen) - { - VisualStateManager.GoToState( - sender as Control, "HoverButtonsShown", true); - } -} - -/// -/// Handler for the pointer exited event. -/// Hides the delete item "hover" buttons. -/// -/// Source of the pointer exited event -/// Event args for the pointer exited event - -private void ListViewSwipeContainer_PointerExited( - object sender, PointerRoutedEventArgs e) -{ - VisualStateManager.GoToState( - sender as Control, "HoverButtonsHidden", true); -} -``` - -## Command experiences using the XamlUICommand class - -If you need to create a command that isn't defined by the [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) class, or you'd like more control over the command appearance, the [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) class derives from the [ICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.icommand) interface, adding various UI properties (such as an icon, label, description, and keyboard shortcuts), methods, and events to quickly define the UI and behavior of a custom command. - -[XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) lets you specify UI through the control binding, such as an icon, label, description, and keyboard shortcuts (both an access key and a keyboard accelerator), without setting the individual properties. - -### Example - -![XamlUICommand sample](images/commanding/XamlUICommandSampleOptimized.gif) - -*XamlUICommandSample* - -| Download the code for this example | -| -------------------- | -| [UWP commanding sample (XamlUICommand)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-commanding-xamluicommand.zip) | - -This example shares the Delete functionality of the previous [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) example, but shows how the [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) class lets you define a custom delete command with your own font icon, label, keyboard accelerator, and description. Like the [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) example, we enhance a basic [ListView](listview-and-gridview.md) with a Delete item command implemented through the [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) class, while optimizing the user experience for a variety of input types using a [MenuBar](menus.md), [Swipe](swipe.md) control, hover buttons, and [context menu](menus.md). - -Many platform controls use the XamlUICommand properties under the covers, just like our StandardUICommand example in the previous section. - -> [!NOTE] -> This sample requires the Microsoft.UI.Xaml.Controls NuGet package, a part of [WinUI 2](/windows/uwp/get-started/winui2/). - -**Xaml:** - -The sample UI includes a [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) of five items. The custom [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) CustomXamlUICommand is bound to a [MenuBarItem](/uwp/api/microsoft.ui.xaml.controls.menubaritem), a [SwipeItem](/uwp/api/microsoft.ui.xaml.controls.swipeitem), an [AppBarButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton), and [ContextFlyout menu](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.contextflyout). - -``` xaml - - - - - - - - - - - - - - - - - - - - - - - - - - XamlUICommand sample - - - This sample shows how to use the XamlUICommand class to - share a custom command with consistent user experiences - across various controls. - - - Specifically, we define a custom delete command and add it - to a variety of command surfaces, all of which share a common - icon, label, keyboard accelerator, and description. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -**Code-behind** - -1. First, we define a `ListItemData` class that contains a text string and ICommand for each ListViewItem in our ListView. - -```csharp -public class ListItemData -{ - public String Text { get; set; } - public ICommand Command { get; set; } -} -``` - -2. In the MainPage class, we define a collection of `ListItemData` objects for the [DataTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.datatemplate) of the [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) [ItemTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.itemtemplate). We then populate it with an initial collection of five items (with text and associated [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand)). - -```csharp -ObservableCollection collection = new ObservableCollection(); - -private void ControlExample_Loaded(object sender, RoutedEventArgs e) -{ - for (var i = 0; i < 5; i++) - { - collection.Add( - new ListItemData { Text = "List item " + i.ToString(), Command = CustomXamlUICommand }); - } -} - -private void ListView_Loaded(object sender, RoutedEventArgs e) -{ - var listView = (ListView)sender; - listView.ItemsSource = collection; -} -``` - -3. Next, we define the ICommand ExecuteRequested handler where we implement the item delete command. - -``` csharp -private void DeleteCommand_ExecuteRequested( - XamlUICommand sender, ExecuteRequestedEventArgs args) -{ - if (args.Parameter != null) - { - foreach (var i in collection) - { - if (i.Text == (args.Parameter as string)) - { - collection.Remove(i); - return; - } - } - } - if (ListViewRight.SelectedIndex != -1) - { - collection.RemoveAt(ListViewRight.SelectedIndex); - } -} -``` - -4. Finally, we define handlers for various ListView events, including [PointerEntered](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.pointerentered), [PointerExited](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.pointerexited), and [SelectionChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.selector.selectionchanged) events. The pointer event handlers are used to show or hide the Delete button for each item. - -```csharp -private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) -{ - if (ListViewRight.SelectedIndex != -1) - { - var item = collection[ListViewRight.SelectedIndex]; - } -} - -private void ListViewSwipeContainer_PointerEntered(object sender, PointerRoutedEventArgs e) -{ - if (e.Pointer.PointerDeviceType == - Windows.Devices.Input.PointerDeviceType.Mouse || - e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Pen) - { - VisualStateManager.GoToState(sender as Control, "HoverButtonsShown", true); - } -} - -private void ListViewSwipeContainer_PointerExited(object sender, PointerRoutedEventArgs e) -{ - VisualStateManager.GoToState(sender as Control, "HoverButtonsHidden", true); -} -``` - -## Command experiences using the ICommand interface - -Standard UWP controls (button, list, selection, calendar, predictive text) provide the basis for many common command experiences. For a complete list of control types, see [Controls and patterns for Windows apps](index.md). - -The most basic way to support a structured commanding experience is to define an implementation of the ICommand interface ([Windows.UI.Xaml.Input.ICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.icommand) for C++ or [System.Windows.Input.ICommand](/dotnet/api/system.windows.input.icommand) for C#). This ICommand instance can then be bound to controls such as buttons. - -> [!NOTE] -> In some cases, it might be just as efficient to bind a method to the Click event and a property to the IsEnabled property. - -#### Example - -![Command interface example](images/commanding/icommand.gif) - -*ICommand example* - -| Download the code for this example | -| -------------------- | -| [UWP commanding sample (ICommand)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-commanding-icommand.zip) | - -In this basic example, we demonstrate how a single command can be invoked with a button click, a keyboard accelerator, and rotating a mouse wheel. - -We use two [ListViews](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview), one populated with five items and the other empty, and two buttons, one for moving items from the ListView on the left to the ListView on the right, and the other for moving items from the right to the left. Each button is bound to a corresponding command (ViewModel.MoveRightCommand and ViewModel.MoveLeftCommand, respectively), and are enabled and disabled automatically based on the number of items in their associated ListView. - -**The following XAML code defines the UI for our example.** - -```xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -**Here's the code-behind for the preceding UI.** - -In code-behind, we connect to our view model that contains our command code. In addition, we define a handler for input from the mouse wheel, which also connects our command code. - -```csharp -using Windows.UI.Xaml; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Controls; -using UICommand1.ViewModel; -using Windows.System; -using Windows.UI.Core; - -namespace UICommand1.View -{ - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// - public sealed partial class MainPage : Page - { - // Reference to our view model. - public UICommand1ViewModel ViewModel { get; set; } - - // Initialize our view and view model. - public MainPage() - { - this.InitializeComponent(); - ViewModel = new UICommand1ViewModel(); - } - - /// - /// Handle mouse wheel input and assign our - /// commands to appropriate direction of rotation. - /// - /// - /// - private void Page_PointerWheelChanged(object sender, PointerRoutedEventArgs e) - { - var props = e.GetCurrentPoint(sender as UIElement).Properties; - - // Require CTRL key and accept only vertical mouse wheel movement - // to eliminate accidental wheel input. - if ((Window.Current.CoreWindow.GetKeyState(VirtualKey.Control) != - CoreVirtualKeyStates.None) && !props.IsHorizontalMouseWheel) - { - bool delta = props.MouseWheelDelta < 0 ? true : false; - - switch (delta) - { - case true: - ViewModel.MoveRight(); - break; - case false: - ViewModel.MoveLeft(); - break; - default: - break; - } - } - } - } -} -``` - -**Here's the code from our view model** - -Our view model is where we define the execution details for the two commands in our app, populate one ListView, and provide an opacity value converter for hiding or displaying some additional UI based on the item count of each ListView. - -```csharp -using System; -using System.Collections.ObjectModel; -using System.ComponentModel; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Data; - -namespace UICommand1.ViewModel -{ - /// - /// UI properties for our list items. - /// - public class ListItemData - { - /// - /// Gets and sets the list item content string. - /// - public string ListItemText { get; set; } - /// - /// Gets and sets the list item icon. - /// - public Symbol ListItemIcon { get; set; } - } - - /// - /// View Model that sets up a command to handle invoking the move item buttons. - /// - public class UICommand1ViewModel - { - /// - /// The command to invoke when the Move item left button is pressed. - /// - public RelayCommand MoveLeftCommand { get; private set; } - - /// - /// The command to invoke when the Move item right button is pressed. - /// - public RelayCommand MoveRightCommand { get; private set; } - - // Item collections - public ObservableCollection ListItemLeft { get; } = - new ObservableCollection(); - public ObservableCollection ListItemRight { get; } = - new ObservableCollection(); - - public ListItemData listItem; - - /// - /// Sets up a command to handle invoking the move item buttons. - /// - public UICommand1ViewModel() - { - MoveLeftCommand = - new RelayCommand(new Action(MoveLeft), CanExecuteMoveLeftCommand); - MoveRightCommand = - new RelayCommand(new Action(MoveRight), CanExecuteMoveRightCommand); - - LoadItems(); - } - - /// - /// Populate our list of items. - /// - public void LoadItems() - { - for (var x = 0; x <= 4; x++) - { - listItem = new ListItemData(); - listItem.ListItemText = "Item " + (ListItemLeft.Count + 1).ToString(); - listItem.ListItemIcon = Symbol.Emoji; - ListItemLeft.Add(listItem); - } - } - - /// - /// Move left command valid when items present in the list on right. - /// - /// True, if count is greater than 0. - private bool CanExecuteMoveLeftCommand() - { - return ListItemRight.Count > 0; - } - - /// - /// Move right command valid when items present in the list on left. - /// - /// True, if count is greater than 0. - private bool CanExecuteMoveRightCommand() - { - return ListItemLeft.Count > 0; - } - - /// - /// The command implementation to execute when the Move item right button is pressed. - /// - public void MoveRight() - { - if (ListItemLeft.Count > 0) - { - listItem = new ListItemData(); - ListItemRight.Add(listItem); - listItem.ListItemText = "Item " + ListItemRight.Count.ToString(); - listItem.ListItemIcon = Symbol.Emoji; - ListItemLeft.RemoveAt(ListItemLeft.Count - 1); - MoveRightCommand.RaiseCanExecuteChanged(); - MoveLeftCommand.RaiseCanExecuteChanged(); - } - } - - /// - /// The command implementation to execute when the Move item left button is pressed. - /// - public void MoveLeft() - { - if (ListItemRight.Count > 0) - { - listItem = new ListItemData(); - ListItemLeft.Add(listItem); - listItem.ListItemText = "Item " + ListItemLeft.Count.ToString(); - listItem.ListItemIcon = Symbol.Emoji; - ListItemRight.RemoveAt(ListItemRight.Count - 1); - MoveRightCommand.RaiseCanExecuteChanged(); - MoveLeftCommand.RaiseCanExecuteChanged(); - } - } - - /// - /// Views subscribe to this event to get notified of property updates. - /// - public event PropertyChangedEventHandler PropertyChanged; - - /// - /// Notify subscribers of updates to the named property - /// - /// The full, case-sensitive, name of a property. - protected void NotifyPropertyChanged(string propertyName) - { - PropertyChangedEventHandler handler = this.PropertyChanged; - if (handler != null) - { - PropertyChangedEventArgs args = new PropertyChangedEventArgs(propertyName); - handler(this, args); - } - } - } - - /// - /// Convert a collection count to an opacity value of 0.0 or 1.0. - /// - public class OpacityConverter : IValueConverter - { - /// - /// Converts a collection count to an opacity value of 0.0 or 1.0. - /// - /// The count passed in - /// Ignored. - /// Ignored - /// Ignored - /// 1.0 if count > 0, otherwise returns 0.0 - public object Convert(object value, Type targetType, object parameter, string language) - { - return ((int)value > 0 ? 1.0 : 0.0); - } - - /// - /// Not used, converter is not intended for two-way binding. - /// - /// Ignored - /// Ignored - /// Ignored - /// Ignored - /// - public object ConvertBack(object value, Type targetType, object parameter, string language) - { - throw new NotImplementedException(); - } - } -} -``` - -**Finally, here's our implementation of the ICommand interface** - -Here, we define a command that implements the [ICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.icommand) interface and simply relays its functionality to other objects. - -```csharp -using System; -using System.Windows.Input; - -namespace UICommand1 -{ - /// - /// A command whose sole purpose is to relay its functionality - /// to other objects by invoking delegates. - /// The default return value for the CanExecute method is 'true'. - /// needs to be called whenever - /// is expected to return a different value. - /// - public class RelayCommand : ICommand - { - private readonly Action _execute; - private readonly Func _canExecute; - - /// - /// Raised when RaiseCanExecuteChanged is called. - /// - public event EventHandler CanExecuteChanged; - - /// - /// Creates a new command that can always execute. - /// - /// The execution logic. - public RelayCommand(Action execute) - : this(execute, null) - { - } - - /// - /// Creates a new command. - /// - /// The execution logic. - /// The execution status logic. - public RelayCommand(Action execute, Func canExecute) - { - if (execute == null) - throw new ArgumentNullException("execute"); - _execute = execute; - _canExecute = canExecute; - } - - /// - /// Determines whether this can execute in its current state. - /// - /// - /// Data used by the command. If the command does not require - /// data to be passed, this object can be set to null. - /// - /// true if this command can be executed; otherwise, false. - public bool CanExecute(object parameter) - { - return _canExecute == null ? true : _canExecute(); - } - - /// - /// Executes the on the current command target. - /// - /// - /// Data used by the command. If the command does not require - /// data to be passed, this object can be set to null. - /// - public void Execute(object parameter) - { - _execute(); - } - - /// - /// Method used to raise the event - /// to indicate that the return value of the - /// method has changed. - /// - public void RaiseCanExecuteChanged() - { - var handler = CanExecuteChanged; - if (handler != null) - { - handler(this, EventArgs.Empty); - } - } - } -} -``` - -## Summary - -The Universal Windows Platform provides a robust and flexible commanding system that lets you build apps that share and manage commands across control types, devices, and input types. - -Use the following approaches when building commands for your Windows apps: - -- Listen for and handle events in XAML/code-behind -- Bind to an event handling method such as Click -- Define your own ICommand implementation -- Create XamlUICommand objects with your own values for a pre-defined set of properties -- Create StandardUICommand objects with a set of pre-defined platform properties and values - -## Next steps - -For a complete example that demonstrates a [XamlUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand) and [StandardUICommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.standarduicommand) implementation, see the [WinUI 2 Gallery](https://github.com/Microsoft/WinUI-Gallery) sample. - -## See also - -[Controls and patterns for Windows apps](index.md) - -### Samples - -#### Topic samples - -- [UWP commanding sample (StandardUICommand)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-commanding-standarduicommand.zip) -- [UWP commanding sample (XamlUICommand)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-commanding-xamluicommand.zip) -- [UWP commanding sample (ICommand)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-commanding-icommand.zip) - -#### Other samples - -- [Universal Windows Platform samples (C# and C++)](https://github.com/Microsoft/Windows-universal-samples/tree/b78d95134ce2d57c848e0a8dc339fc362748fb9c/Samples/RadialController) -- [WinUI 2 Gallery](https://github.com/Microsoft/WinUI-Gallery) diff --git a/hub/apps/design/controls/contact-card.md b/hub/apps/design/controls/contact-card.md deleted file mode 100644 index 615af88b52..0000000000 --- a/hub/apps/design/controls/contact-card.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -description: Learn how to use contact cards to let users display and edit contact information, such as names, phone numbers, and addresses. -title: Contact card -ms.date: 09/24/2020 -ms.topic: how-to -keywords: windows 10, uwp -pm-contact: kele -design-contact: tbd -dev-contact: tbd -doc-status: not-published -ms.localizationpriority: medium ---- -# Contact card - -The contact card displays contact information, such as the name, phone number, and address, for a [Contact](/uwp/api/Windows.ApplicationModel.Contacts.Contact) (the mechanism Windows uses to represent people and businesses). The contact card also lets the user edit contact info. You can choose to display a compact contact card, or a full contact card that contains additional information. - -> **Important APIs**: [ShowContactCard method](/uwp/api/windows.applicationmodel.contacts.contactmanager.showcontactcard), [ShowFullContactCard method](/uwp/api/windows.applicationmodel.contacts.contactmanager.showfullcontactcard), [IsShowContactCardSupported method](/uwp/api/windows.applicationmodel.contacts.contactmanager.IsShowContactCardSupported), [Contact class](/uwp/api/Windows.ApplicationModel.Contacts.Contact) - -There are two ways to display the contact card: -* As a standard contact card that appears in a flyout that is light-dismissable--the contact card disappears when the user clicks outside of it. -* As a full contact card that takes up more space and is not light-dismissable--the user must click **close** to close it. - - -
- Screenshot showing a standard contact card. -
The standard contact card
-
- -
- Screenshot showing a full contact card. -
The full contact card
-
- - -## Is this the right control? - -Use the contact card when you want to display contact info for a contact. If you only want to display the contact's name and picture, use the [person picture control](person-picture.md). - - - - - - -## Show a standard contact card - -1. Typically, you show a contact card because the user clicked something: a button or perhaps the [person picture control](person-picture.md). We don't want to hide the element. To avoid hiding it, we need to create a [Rect](/uwp/api/windows.foundation.rect) that describes the location and size of the element. - - Let's create a utility function that does that for us--we'll use it later. - ```csharp - // Gets the rectangle of the element - public static Rect GetElementRectHelper(FrameworkElement element) - { - // Passing "null" means set to root element. - GeneralTransform elementTransform = element.TransformToVisual(null); - Rect rect = elementTransform.TransformBounds(new Rect(0, 0, element.ActualWidth, element.ActualHeight)); - return rect; - } - - ``` - -2. Determine whether you can display the contact card by calling the [ContactManager.IsShowContactCardSupported](/uwp/api/windows.applicationmodel.contacts.contactmanager.IsShowContactCardSupported) method. If it's not supported, display an error message. (This example assumes that you'll be showing the contact card in response to a click event .) - ```csharp - // Contact and Contact Managers are existing classes - private void OnUserClickShowContactCard(object sender, RoutedEventArgs e) - { - if (ContactManager.IsShowContactCardSupported()) - { - - ``` - -3. Use the utility function you created in step 1 to get the bounds of the control that fired the event (so we don't cover it up with the contact card). - - ```csharp - Rect selectionRect = GetElementRect((FrameworkElement)sender); - ``` - -4. Get the [Contact](/uwp/api/Windows.ApplicationModel.Contacts.Contact) object you want to display. This example just creates a simple contact, but your code should retrieve an actual contact. - - ```csharp - // Retrieve the contact to display - var contact = new Contact(); - var email = new ContactEmail(); - email.Address = "jsmith@contoso.com"; - contact.Emails.Add(email); - ``` -5. Show the contact card by calling the [ShowContactCard](/uwp/api/windows.applicationmodel.contacts.contactmanager.showcontactcard) method. - - ```csharp - ContactManager.ShowFullContactCard( - contact, selectionRect, Placement.Default); - } - } - ``` - -Here's the complete code example: - -```csharp -// Gets the rectangle of the element -public static Rect GetElementRect(FrameworkElement element) -{ - // Passing "null" means set to root element. - GeneralTransform elementTransform = element.TransformToVisual(null); - Rect rect = elementTransform.TransformBounds(new Rect(0, 0, element.ActualWidth, element.ActualHeight)); - return rect; -} - -// Display a contact in response to an event -private void OnUserClickShowContactCard(object sender, RoutedEventArgs e) -{ - if (ContactManager.IsShowContactCardSupported()) - { - Rect selectionRect = GetElementRect((FrameworkElement)sender); - - // Retrieve the contact to display - var contact = new Contact(); - var email = new ContactEmail(); - email.Address = "jsmith@contoso.com"; - contact.Emails.Add(email); - - ContactManager.ShowContactCard( - contact, selectionRect, Placement.Default); - } -} - -``` - -## Show a full contact card - -To show the full contact card, call the [ShowFullContactCard](/uwp/api/windows.applicationmodel.contacts.contactmanager.showfullcontactcard) method instead of [ShowContactCard](/uwp/api/windows.applicationmodel.contacts.contactmanager.showcontactcard). - -```csharp -private void onUserClickShowContactCard() -{ - - Contact contact = new Contact(); - ContactEmail email = new ContactEmail(); - email.Address = "jsmith@hotmail.com"; - contact.Emails.Add(email); - - - // Setting up contact options. - FullContactCardOptions fullContactCardOptions = new FullContactCardOptions(); - - // Display full contact card on mouse click. - // Launch the People’s App with full contact card - fullContactCardOptions.DesiredRemainingView = ViewSizePreference.UseLess; - - - // Shows the full contact card by launching the People App. - ContactManager.ShowFullContactCard(contact, fullContactCardOptions); -} - -``` - -## Retrieving "real" contacts - -The examples in this article create a simple contact. In a real app, you'd probably want to retrieve an existing contact. For instructions, see the [Contacts and calendar article](/windows/uwp/contacts-and-calendar/index). - - - - -## Related articles -- [Contacts and calendar](/windows/uwp/contacts-and-calendar/index) -- [Contact cards sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ContactCards) -- [People picture control](/windows/uwp/controls-and-patterns/person-picture/) diff --git a/hub/apps/design/controls/content-links.md b/hub/apps/design/controls/content-links.md deleted file mode 100644 index 6e72162066..0000000000 --- a/hub/apps/design/controls/content-links.md +++ /dev/null @@ -1,401 +0,0 @@ ---- -title: Content links in text controls -description: Learn how to use content links to embed rich data in the TextBlock, RichTextBlock, and RichEditBox controls. -label: Content links -template: detail.hbs -ms.date: 05/03/2022 -ms.topic: how-to -keywords: windows 10, uwp -pm-contact: miguelrb -design-contact: -doc-status: Draft -ms.localizationpriority: medium ---- -# Content links in text controls - -Content links provide a way to embed rich data in your text controls, which lets a user find and use more information about a person or place without leaving the context of your app. - -> [!IMPORTANT] -> The Windows features that enable content links are not available in versions of Windows after Windows 10 version 1903. Content links for XAML text controls will not function in versions of Windows later than version 1903. - -When the user prefixes an entry with the at (@) symbol in a RichEditBox, they’re shown a list of people and/or place suggestions that matches the entry. Then, for example, when the user picks a place, a ContentLink for that place is inserted into the text. When the user invokes the content link from the RichEditBox, a flyout is shown with a map and additional info about the place. - -> **Important APIs**: [ContentLink class](/uwp/api/windows.ui.xaml.documents.contentlink), [ContentLinkInfo class](/uwp/api/windows.ui.text.contentlinkinfo), [RichEditTextRange class](/uwp/api/windows.ui.text.richedittextrange) - -> [!NOTE] -> The APIs for content links are spread across the following namespaces: Windows.UI.Xaml.Controls, Windows.UI.Xaml.Documents, and Windows.UI.Text. - - - -## Content links in rich edit vs. text block controls - -There are two distinct ways to use content links: - -1. In a [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox), the user can open a picker to add a content link by prefixing text with an @ symbol. The content link is stored as part the rich text content. -1. In a [TextBlock](/uwp/api/windows.ui.xaml.controls.textblock) or [RichTextBlock](/uwp/api/windows.ui.xaml.controls.richtextblock), the content link is a text element with usage and behavior much like a [Hyperlink](/uwp/api/windows.ui.xaml.documents.hyperlink). - -Here's how content links look by default in a RichEditBox and in a TextBlock. - -![content link in rich edit box](images/content-link-default-richedit.png) -![content link in text block](images/content-link-default-textblock.png) - -Differences in usage, rendering, and behavior are covered in detail in the following sections. This table gives a quick comparison of the main differences between a content link in a RichEditBox and a text block. - -| Feature | RichEditBox | text block | -| --------- | ----------- | ---------- | -| Usage | ContentLinkInfo instance | ContentLink text element | -| Cursor | Determined by type of content link, can't be changed | Determined by Cursor property, **null** by default | -| ToolTip | Not rendered | Shows secondary text | - -## Enable content links in a RichEditBox - -The most common use of a content link is to let a user quickly add information by prefixing a person or place name with an ampersand (@) symbol in their text. When enabled in a [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox), this opens a picker and lets the user insert a person from their contact list, or a nearby place, depending on what you’ve enabled. - -The content link can be saved with the rich text content, and you can extract it to use in other parts of your app. For example, in an email app, you might extract the person info and use it to populate the To box with an email address. - -> [!NOTE] -> The content link picker is an app that’s part of Windows, so it runs in a separate process from your app. - -### Content link providers - -You enable content links in a RichEditBox by adding one or more content link providers to the [RichEditBox.ContentLinkProviders](/uwp/api/windows.ui.xaml.controls.richeditbox.ContentLinkProviders) collection. There are 2 content link providers built into the XAML framework. - -- [ContactContentLinkProvider](/uwp/api/windows.ui.xaml.documents.contactcontentlinkprovider) – looks up contacts using the **People** app. -- [PlaceContentLinkProvider](/uwp/api/windows.ui.xaml.documents.placecontentlinkprovider) – looks up places using the **Maps** app. - -> [!IMPORTANT] -> The default value for the RichEditBox.ContentLinkProviders property is **null**, not an empty collection. You need to explicitly create the [ContentLinkProviderCollection](/uwp/api/windows.ui.xaml.documents.contentlinkprovidercollection) before you add content link providers. - -Here’s how to add the content link providers in XAML. - -```xaml - - - - - - - - -``` - -You can also add content link providers in a Style and apply it to multiple RichEditBoxes like this. - -```xaml - - - - - - -``` - -Here's how to add content link providers in code. - -```csharp -RichEditBox editor = new RichEditBox(); -editor.ContentLinkProviders = new ContentLinkProviderCollection -{ - new ContactContentLinkProvider(), - new PlaceContentLinkProvider() -}; -``` - -### Content link colors - -The appearance of a content link is determined by its foreground, background, and icon. In a RichEditBox, you can set the [ContentLinkForegroundColor](/uwp/api/windows.ui.xaml.controls.richeditbox.ContentLinkForegroundColor) and [ContentLinkBackgroundColor](/uwp/api/windows.ui.xaml.controls.richeditbox.ContentLinkBackgroundColor) properties to change the default colors. - -You can't set the cursor. The cursor is rendered by the RichEditbox based on the type of content link - a [Person](/uwp/api/windows.ui.core.corecursortype) cursor for a person link, or a [Pin](/uwp/api/windows.ui.core.corecursortype) cursor for a place link. - -### The ContentLinkInfo object - -When the user makes a selection from the people or places picker, the system creates a [ContentLinkInfo](/uwp/api/windows.ui.text.contentlinkinfo) object and adds it to the **ContentLinkInfo** property of the current [RichEditTextRange](/uwp/api/windows.ui.text.richedittextrange). - -The ContentLinkInfo object contains the information used to display, invoke, and manage the content link. - -- **DisplayText** – This is the string that is shown when the content link is rendered. In a RichEditBox, the user can edit the text of a content link after it’s created, which alters the value of this property. -- **SecondaryText** – This string is shown in the [tooltip](tooltips.md) of a rendered content link. - - In a Place content link created by the picker, it contains the address of the location, if available. -- **Uri** – The link to more information about the subject of the content link. This Uri can open an installed app or a website. -- **Id** - This is a read-only, per control, counter created by the RichEditBox control. It’s used to track this ContentLinkInfo during actions such as delete or edit. If the ContentLinkInfo is cut and paste back into the control, it will get a new Id. Id values are incremental. -- **LinkContentKind** – A string that describes the type of the content link. The built-in content types are _Places_ and _Contacts_. The value is case sensitive. - -#### Link content kind - -There are several situations where the LinkContentKind is important. - -- When a user copies a content link from a RichEditBox and pastes it into another RichEditBox, both controls must have a ContentLinkProvider for that content type. If not, the link is pasted as text. -- You can use LinkContentKind in a [ContentLinkChanged](/uwp/api/windows.ui.xaml.controls.richeditbox.ContentLinkChanged) event handler to determine what to do with a content link when you use it in other parts of your app. See the Example section for more info. -- The LinkContentKind influences how the system opens the Uri when the link is invoked. We’ll see this in the discussion of Uri launching next. - -#### Uri launching - -The Uri property works much like the NavigateUri property of a Hyperlink. When a user clicks it, it launches the Uri in the default browser, or in the app that's registered for the particular protocol specified in the Uri value. - -The specific behavior for the 2 built in kinds of link content are described here. - -##### Places - -The Places picker creates a ContentLinkInfo with a Uri root of https://maps.windows.com/. This link can be opened in 3 ways: - -- If LinkContentKind = "Places", it opens an info card in a flyout. The flyout is similar to the content link picker flyout. It’s part of Windows, and runs in a separate process from your app. -- If LinkContentKind is not "Places", it attempts to open the **Maps** app to the specified location. For example, this can happen if you’ve modified the LinkContentKind in the ContentLinkChanged event handler. -- If the Uri can’t be opened in the Maps app, the map is opened in the default browser. This typically happens when the user's _Apps for websites_ settings don’t allow opening the Uri with the **Maps** app. - -##### People - -The People picker creates a ContentLinkInfo with a Uri that uses the **ms-people** protocol. - -- If LinkContentKind = "People", it opens an info card in a flyout. The flyout is similar to the content link picker flyout. It’s part of Windows, and runs in a separate process from your app. -- If LinkContentKind is not "People", it opens the **People** app. For example, this can happen if you’ve modified the LinkContentKind in the ContentLinkChanged event handler. - -> [!TIP] -> For more info about opening other apps and websites from your app, see the topics under [Launch an app with a Uri](/windows/uwp/launch-resume/launch-app-with-uri). - -#### Invoked - -When the user invokes a content link, the [ContentLinkInvoked](/uwp/api/windows.ui.xaml.controls.richeditbox.ContentLinkInvoked) event is raised before the default behavior of launching the Uri happens. You can handle this event to override or cancel the default behavior. - -This example shows how you can override the default launching behavior for a Place content link. Instead of opening the map in a Place info card, Maps app, or default web browser, you mark the event as Handled and open the map in an in-app [WebView](/uwp/api/windows.ui.xaml.controls.webview) control. - -```xaml - - - - - - - - - -``` - -```csharp -private void editor_ContentLinkInvoked(RichEditBox sender, ContentLinkInvokedEventArgs args) -{ - if (args.ContentLinkInfo.LinkContentKind == "Places") - { - args.Handled = true; - webView1.Navigate(args.ContentLinkInfo.Uri); - } -} -``` - -#### ContentLinkChanged - -You can use the [ContentLinkChanged](/uwp/api/windows.ui.xaml.controls.richeditbox.ContentLinkChanged) event to be notified when a content link is added, modified, or removed. This lets you extract the content link from the text and use it in other places in your app. This is shown later in the Examples section. - -The properties of the [ContentLinkChangedEventArgs](/uwp/api/windows.ui.xaml.controls.contentlinkchangedeventargs) are: - -- **ChangedKind** - This ContentLinkChangeKind enum is the action within the ContentLink. For example, if the ContentLink is inserted, removed, or edited. -- **Info** - The ContentLinkInfo that was the target of the action. - -This event is raised for each ContentLinkInfo action. For example, if the user copies and pastes several content links into the RichEditBox at once, this event is raised for each added item. Or if the user selects and deletes several content links at the same time, this event is raised for each deleted item. - -This event is raised on the RichEditBox after the **TextChanging** event and before the **TextChanged** event. - -#### Enumerate content links in a RichEditBox - -You can use the RichEditTextRange.ContentLink property to get a content link from a rich edit document. The TextRangeUnit enumeration has the value ContentLink to specify the content link as a unit to use when navigating a text range. - -This example shows how you can enumerate all the content links in a RichEditBox, and extract the people into a list. - -```xaml - - - - - - - - - - - -``` - -```csharp -public MainPage() -{ - this.InitializeComponent(); - - if(!HaveExplainedAutoSave()) - { - AutoSaveTip.IsOpen = true; - SetHaveExplainedAutoSave(); - } -} -``` - -Here's the result when the Page containing the button and teaching tip is shown: - -![A sample app with a teaching tip targeting the save button. The tip title reads "Saving automatically" and the subtitle reads "We save your changes as you go - so you never have to." There is a close button on the top right corner of the teaching tip.](../images/teaching-tip-targeted.png) - -In the example above, the [Title](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.title) and [Subtitle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.subtitle) properties are used to set the teaching tip's title and subtitle. The [Target](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.target) property is set to the "SaveButton" to establish the visual connection between itself and the button. To show the teaching tip, its [IsOpen](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.isopen) property is set to `true`. - -### Non-targeted tips - -Not all tips relate to an element onscreen. For these scenarios, do not set a target and the teaching tip will instead display relative to the edges of the xaml root. However, a teaching tip can have the tail removed while retaining placement relative to a UI element by setting the [TailVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.tailvisibility) property to "Collapsed". The following example is of a non-targeted teaching tip. - -```xaml - -``` - -![A sample app with a "Save" button that is being targeted by a teaching tip underneath its left corner. The tip title reads "Saving automatically" and the subtitle reads "We save your changes as you go - so you never have to." There is a close button on the top right corner of the teaching tip.](../images/teaching-tip-targeted-preferred-placement.png) - -A non-targeted teaching tip with its PreferredPlacement set to "BottomLeft" will appear in the bottom left corner of the xaml root. - -```xaml - -``` - -![A sample app with a teaching tip targeting the save button. The tip title reads "Saving automatically" and the subtitle reads "We save your changes as you go - so you never have to." In the content area of the teaching tip is a CheckBox labeled "Don't show tips at startup" and underneath is text that reads "You can change your tip preferences in Settings if you change your mind" where "Settings" is a link to the app's settings page. There is a close button on the top right corner of the teaching tip.](../images/teaching-tip-content.png) - -### Add buttons - -By default, a standard "X" close button is shown next to the title of a teaching tip. The Close button can be customized with the [CloseButtonContent](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.closebuttoncontent) property, in which case the button is moved to the bottom of the teaching tip. - -**Note: No close button will appear on light-dismiss enabled tips** - -A custom action button can be added by setting [ActionButtonContent](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.actionbuttoncontent) property (and optionally the [ActionButtonCommand](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.actionbuttoncommand) and the [ActionButtonCommandParameter](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.actionbuttoncommandparameter) properties). - -```xaml - -``` - -![A sample app with a teaching tip targeting the save button. The tip title reads "Saving automatically" and the subtitle reads "We save your changes as you go - so you never have to." In the content area of the teaching tip is a CheckBox labeled "Don't show tips at startup" and underneath is text that reads "You can change your tip preferences in Settings if you change your mind" where "Settings" is a link to the app's settings page. At the bottom of the teaching are two buttons, a gray one on the left that reads "Disable" and a blue one on the right that reads "Got it!"](../images/teaching-tip-buttons.png) - -### Hero content - -Edge to edge content can be added to a teaching tip by setting the [HeroContent](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.herocontent) property. The location of hero content can be set to the top or bottom of a teaching tip by setting the [HeroContentPlacement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.herocontentplacement) property. - -```xaml - -``` - -![A sample app with a teaching tip targeting the save button. The tip title reads "Saving automatically" and the subtitle reads "We save your changes as you go - so you never have to." At the bottom of the teaching tip is a border-to-border image of a cartoon man putting files in the cloud. There is a close button on the top right corner of the teaching tip.](../images/teaching-tip-hero-content.png) - -### Add an icon - -An icon can be added beside the title and subtitle using the [IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.iconsource) property. Recommended icon sizes include 16px, 24px, and 32px. - -```xaml - -``` - -![A sample app with a teaching tip targeting the save button. The tip title reads "Saving automatically" and the subtitle reads "We save your changes as you go - so you never have to." To the left of the title and subtitle is a floppy disk icon. There is a close button on the top right corner of the teaching tip.](../images/teaching-tip-icon.png) - -### Enable light-dismiss - -Light-dismiss functionality is disabled by default but it can enabled by setting the [IsLightDismissEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.islightdismissenabled) property so that a teaching tip will dismiss, for example, when a user scrolls or interacts with other elements of the application. Because of this behavior, light-dismiss tips are the best solution when a tip needs to be placed in a scrollable area. - -The close button will be automatically removed from a light-dismiss enabled teaching tip to identify its light-dismiss behavior to users. - -```xaml - -``` - -:::image type="content" source="images/infobadge/button-infobadge.png" alt-text="Button with an icon InfoBadge"::: - -## Managing an InfoBadge - -An InfoBadge typically displays a transient alert, so it's common to show or hide it, and change it's style periodically while your app is running. - -### Showing and hiding an InfoBadge - -You can use either the [Visibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.visibility) property or [Opacity](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.opacity) property to show and hide an InfoBadge based on user actions, program logic, counters, etc. - -As with other UIElements, setting `Visibility.Collapsed` will make the InfoBadge not take space in your layout, so it might cause other elements to move around when it's shown and hidden. - -If elements being repositioned is a concern, you can use the `Opacity` property to show and hide the InfoBadge. `Opacity` is set to `1.0` by default; you can set it to `0` to hide the InfoBadge. When you use the `Opacity` property, InfoBadge will still take up space in the layout even if it is currently hidden. - -### Change the InfoBadge style - -You can change the icon or number displayed in an InfoBadge while it is being shown. Decrementing or incrementing a numeric InfoBadge based on user action can be achieved by changing the value of `InfoBadge.Value`. Changing the icon of an InfoBadge can be achieved by setting `InfoBadge.IconSource` to a new `IconSource` object. When changing icons, ensure that the new icon is the same size as the old icon to avoid a jarring visual effect. - -### Default behavior - -If neither `InfoBadge.Value` nor `InfoBadge.IconSource` are set, the InfoBadge defaults to showing a dot (specifically if `Value` is set to `-1` and `IconSource` is set to `null`, which are the default values). If both the `Value` and `IconSource` properties are set, the InfoBadge will honor the `Value` property and display a number value. - -You can also change the InfoBadge's type while it is being shown. To change the type of InfoBadge, be sure that the current type's corresponding property (`Value` or `IconSource`) is set to its default value (`-1` or `null`), and set the new type's property equal to an appropriate value. To change the type of InfoBadge from numeric or icon to a dot type InfoBadge, make sure that `InfoBadge.Value` is set to `-1` and `InfoBadge.IconSource` is set to `null`. - -Depending on how you've positioned your InfoBadge, be aware that this may cause items to shift as the size and shape of the InfoBadge may change. - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The InfoBadge for UWP apps requires WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in the [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespace. - -> [!div class="checklist"] -> -> - **WinUI 2 Apis:** [InfoBadge class](/windows/winui/api/microsoft.ui.xaml.controls.infobadge), [IconSource property](/windows/winui/api/microsoft.ui.xaml.controls.infobadge.iconsource), [Value property](/windows/winui/api/microsoft.ui.xaml.controls.infobadge.value) -> - [Open the WinUI 2 Gallery app and see InfoBadge in action](winui2gallery:/item/InfoBadge). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related articles - -- [NavigationView](./navigationview.md) diff --git a/hub/apps/design/controls/infobar.md b/hub/apps/design/controls/infobar.md deleted file mode 100644 index 0e8abf54e9..0000000000 --- a/hub/apps/design/controls/infobar.md +++ /dev/null @@ -1,341 +0,0 @@ ---- -description: An InfoBar is an inline notification for essential app-wide messages. -title: InfoBar -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: article -ms.custom: 20H2 -ms.localizationpriority: medium ---- - -# InfoBar - -The InfoBar control is for displaying app-wide status messages to users that are highly visible yet non-intrusive. There are built-in Severity levels to easily indicate the type of message shown as well as the option to include your own call to action or hyperlink button. Since the InfoBar is inline with other UI content the option is there for the control to always be visible or dismissed by the user. - -![A sample of an InfoBar in the default state with a close button and a message](images/infobar-default-title-message.png) - -## Is this the right control? - -Use an InfoBar control when a user should be informed of, acknowledge, or take action on a changed application state. By default the notification will remain in the content area until closed by the user but will not necessarily break user flow. - -An InfoBar will take up space in your layout and behave like any other child elements. It will not cover up other content or float on top of it. - -Do not use an InfoBar control to confirm or respond directly to a user action that doesn't change the state of the app, for time-sensitive alerts, or for non-essential messages. - -### Remarks - -Use an InfoBar that is closed by the user or when the status is resolved for scenarios that **directly** impact app perception or experience. - -Here are some examples: - -- Internet connectivity lost -- Error while saving a document when triggered automatically, not related to specific user action -- No microphone plugged in when attempting to record -- The subscription to the application is expired - -Use an InfoBar that is closed by the user for scenarios that **indirectly** impact app perception or experience - -Here are some examples: - -- A call has begun recording -- Update applied with link to 'Release Notes' -- The terms of service have been updated and require acknowledgement -- An app-wide backup has successfully, asynchronously completed -- The subscription to the application is close to expiring - -### When should a different control be used? - -There are some scenarios where a [ContentDialog](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ContentDialog), [Flyout](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.Flyout), or [TeachingTip](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.TeachingTip) may be more appropriate to use. - -- For scenarios where a persistent notification is not needed, e.g. displaying information in context of a specific UI element, a [Flyout](dialogs-and-flyouts/flyouts.md) -is a better option. -- For scenarios where the application is confirming a user action, showing information the user ***must*** read, use a [ContentDialog](dialogs-and-flyouts/dialogs.md). - - Additionally, if a status change to the app is so severe that it needs to block all further ability for the user to interact with the app, use a ContentDialog. -- For scenarios where a notification is a transient teaching moment, a [TeachingTip](dialogs-and-flyouts/teaching-tip.md) -is a better option. - -For more info about choosing the right notification control, see the [Dialogs and Flyouts](dialogs-and-flyouts/index.md) -article. - -## Recommendations - -### Enter and Exit Usability - -#### Flashing content - -The InfoBar should not appear and disappear from view rapidly to prevent flashing on the screen. Avoid flashing visuals for people with photosensitivities and to improve the usability of your application. - -For InfoBars that automatically enter and exit the view via an app status condition, we recommend you include logic in your application to prevent content from appearing or disappearing rapidly or multiple times in a row. However, in general, this control should be used for long-lived status messages. - -#### Updating the InfoBar - -Once the control is open, any changes made to the various properties like updating the message or Severity will not raise a notification event. If you would like to inform users that use screen readers of the InfoBar's updated content we recommend you close and re-open the control to trigger the event. - -#### Inline messages offsetting content - -For InfoBars that are inline with other UI content, keep in mind how the rest of the page will responsively react to the addition of the element. - -InfoBars with a substantial height could dramatically alter the layout of the other elements on the page. If the InfoBar appears or disappears rapidly, especially in succession, the user may be confused with the changing visual state. - -### Color and Icon - -When customizing the color and icon outside of the preset Severity levels, keep in mind user expectations for the connotations from the set of standard icons and colors. - -Additionally, the preset Severity colors have already been designed for theme changes, high-contrast mode, color confusion accessibility, and contrast with foreground colors. We recommend to use these colors when possible and to include custom logic in your application to adapt to the various color states and accessibility features. - -Please view the UX guidance for [Standard Icons](/windows/win32/uxguide/vis-std-icons) and [Color](/windows/win32/uxguide/vis-color) to ensure your message is communicated clearly and accessible to users. - -#### Severity - - Avoid setting the Severity property for a notification that does not match the information communicated in the Title, Message, or custom content. - - The accompanying information should aim to communicate the following to use that Severity. - -- Error: An error or problem that has occurred. -- Warning: A condition that might cause a problem in the future. -- Success: A long-running and/or background task has completed. -- Default: General information that requires the user's attention. - -Icons and color should not be the only UI components signifying meaning for your notification. Text in the notification's Title and/or Message should be included to display information. - -### Message - -Text in your notification will not be a constant length in all languages. For the Title and Message property this may impact whether your notification will expand to a second line. We recommend you avoid positioning based on message length or other UI elements set to a specific language. - -The notification will follow standard mirroring behavior when localized to/from languages that are right to left (RTL) or left to right (LTR). The icon will only mirror if there is directionality. - -Please view the guidance for [Adjust layout and fonts, and support RTL](../globalizing/adjust-layout-and-fonts--and-support-rtl.md) for more information about text localization in your notification. - -### Create an InfoBar - -> [!div class="checklist"] -> -> - **Important APIs:** [InfoBar class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.infobar) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the InfoBar in action](winui3gallery:/item/InfoBar) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -The XAML below describes an inline InfoBar with the default styling for an informational notification. An info bar can be placed like any other element and will follow base layout behavior. For example, in a vertical StackPanel, the InfoBar will horizontally expand to fill the available width. - -By default, the InfoBar will not be visible. Set the IsOpen property to true in the XAML or code behind to display the InfoBar. - -```xaml - - -``` - -```csharp -public MainPage() -{ - this.InitializeComponent(); - - if(IsUpdateAvailable()) - { - UpdateAvailableNotification.IsOpen = true; - } -} -``` - -![A sample of an InfoBar in the default state with a close button and a message](images/infobar-default-title-message.png) - -### Using pre-defined severity levels - -The type of the info bar can be set via the Severity property to automatically set a consistent status color, icon, and assistive technology settings dependent on the criticality of the notification. If no Severity is set, the default informational styling is applied. - -```xaml - -``` - -![A sample of an InfoBar in a Warning state with a close button and a message](images/infobar-warning-title-message.png) - -### Programmatic close in InfoBar - -An InfoBar can be closed by the user via the close button or programmatically. If the notification is required to be in view until the status is resolved and you would like to remove the ability for the user to close the info bar, you can set the IsClosable property to false. - -The default value of this property is true, in which case the close button is present and takes the form of an 'X'. - -```xaml - -``` - -![A sample of an InfoBar in an Error state with no close button](images/infobar-error-no-close.png) - -### Customization: Background color and icon - -Outside of the pre-defined severity levels, the Background and IconSource properties can be set to customize the icon and background color. The InfoBar will retain the assistive technology settings of the severity defined, or default if none was defined. - -A custom background color can be set via the standard Background property and will override the color set by Severity. Please keep in mind content readability and accessibility when setting your own color. - -A custom icon can be set via the IconSource property. By default, an icon will be visible (assuming the control isn't collapsed). This icon can be removed by setting the IsIconVisible property to false. For custom icons, the recommended icon size is 20px. - -```xaml - - - - - -``` - -![A sample of an InfoBar in the default state with a custom background color, custom icon, and close button](images/infobar-custom-icon-color.png) - -### Add an action button - -An additional action button can be added by defining your own button that inherits [ButtonBase](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.Primitives.ButtonBase) and setting it in the ActionButton property. Custom styling will be applied to action buttons of type [Button](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.Button) and [HyperlinkButton](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.HyperlinkButton) for consistency and accessibility. Aside from the ActionButton property, additional action buttons can be added via custom content and will appear below the message. - -```xaml - - - - - -``` - -```csharp -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; -using Windows.ApplicationModel.Contacts; - -namespace SampleApp -{ - public sealed partial class PersonPictureContactExample : Page, System.ComponentModel.INotifyPropertyChanged - { - public PersonPictureContactExample() - { - this.InitializeComponent(); - } - - private Windows.ApplicationModel.Contacts.Contact _currentContact; - public Windows.ApplicationModel.Contacts.Contact CurrentContact - { - get => _currentContact; - set - { - _currentContact = value; - PropertyChanged?.Invoke(this, - new System.ComponentModel.PropertyChangedEventArgs(nameof(CurrentContact))); - } - - } - public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; - - public static async System.Threading.Tasks.Task CreateContact() - { - - var contact = new Windows.ApplicationModel.Contacts.Contact(); - contact.FirstName = "Betsy"; - contact.LastName = "Sherman"; - - // Get the app folder where the images are stored. - var appInstalledFolder = - Windows.ApplicationModel.Package.Current.InstalledLocation; - var assets = await appInstalledFolder.GetFolderAsync("Assets"); - var imageFile = await assets.GetFileAsync("betsy.png"); - contact.SourceDisplayPicture = imageFile; - - return contact; - } - - private async void LoadContactButton_Click(object sender, RoutedEventArgs e) - { - CurrentContact = await CreateContact(); - } - } -} -``` - -> [!NOTE] -> To keep the code simple, this example creates a new Contact object. In a real app, you'd let the user select a contact or you'd use a [ContactManager](/uwp/api/Windows.ApplicationModel.Contacts.ContactManager) to query for a list of contacts. For info on retrieving and managing contacts, see the [Contacts and calendar articles](/windows/uwp/contacts-and-calendar/index). - -## Determining which info to display - -When you provide a [Contact](/uwp/api/Windows.ApplicationModel.Contacts.Contact) object, the person picture control evaluates it to determine which info it can display. - -If an image is available, the control displays the first image it finds, in this order: - -1. LargeDisplayPicture -1. SmallDisplayPicture -1. Thumbnail - -You can change which image is chosen by setting the PreferSmallImage property to true; this gives the SmallDisplayPicture a higher priority than LargeDisplayPicture. - -If there isn't an image, the control displays the contact's name or initials; if there's isn't any name data, the control displays contact data, such as an email address or phone number. - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The PersonPicture control for UWP apps is included as part of WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in both the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) and [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespaces. - -> [!div class="checklist"] -> -> - **UWP APIs:** [PersonPicture class](/uwp/api/windows.ui.xaml.controls.personpicture), [Contact class](/uwp/api/Windows.ApplicationModel.Contacts.Contact), [ContactManager class](/uwp/api/Windows.ApplicationModel.Contacts.ContactManager) -> - **WinUI 2 Apis:** [PersonPicture class](/windows/winui/api/microsoft.ui.xaml.controls.personpicture) -> - [Open the WinUI 2 Gallery app and see PersonPicture in action](winui2gallery:/item/PersonPicture). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles, templates, and features for all controls. - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related articles - -* [Contacts and calendar](/windows/uwp/contacts-and-calendar/index) -* [Contact cards sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ContactCards) \ No newline at end of file diff --git a/hub/apps/design/controls/pipspager.md b/hub/apps/design/controls/pipspager.md deleted file mode 100644 index dce4d43889..0000000000 --- a/hub/apps/design/controls/pipspager.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -description: A PipsPager is a control to let the user navigate through a paginated collection when the page numbers do not need to be visually known. -title: PipsPager -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: article -ms.custom: 21H1 -ms.localizationpriority: medium ---- - -# PipsPager - -The PipsPager control helps users navigate within linearly paginated content using a configurable collection of glyphs, each of which represents a single "page" within a limitless range. The glyphs highlight the current page, and indicate the availability of both preceding and succeeding pages. The control relies on current context and does not support explicit page numbering or a non-linear organization. - -## What is a pip? - -Pips represent a unit of numerical value, typically rendered as dots. However they can be customized to use other glyphs such as dashes or squares. - -By default, each solid dot in the PipsPager control represents a page in the content layout. A user can select a dot to navigate to that page in the content. - -## Is this the right control? - -Use a PipsPager for content organized in a linear structure, is not explicitly numbered, or where a glyph-based representation of numbered pages is desired. - -This UI is commonly used in apps such as photo viewers and app lists, where display space is limited and the number of potential pages is infinite. - -## Recommendations - -- Common UI patterns for a PipsPager include photo viewers, app lists, carousels, and layouts where display space is limited. -- For experiences optimized for gamepad input, we recommend against placing UI directly to the left or right of a horizontal PipsPager, and above or below a vertically oriented PipsPager. -- For experiences optimized for touch input, we recommend integrating the PipsPager with a view control, such as a [FlipView](flipview.md), to take advantage of on-content pagination with touch (the user can also use touch to select individual pips). - -## Create a PipsPager - -> [!div class="checklist"] -> -> - **Important APIs**: [PipsPager class](/uwp/api/microsoft.ui.xaml.controls.pipspager) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the PipsPager in action](winui3gallery:/item/PipsPager) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -A default PipsPager is comprised of five visible pips that can be oriented horizontally (default) or vertically. - -A PipsPager also supports navigation buttons (previous, next) to move to an incrementally adjacent page. By default, the navigation buttons are collapsed and do not take up layout space. - -Wrapping between the first and last items is not supported. - -:::image type="content" source="images/pipspager-default.png" alt-text="A default PipsPager with five horizontal dots, and the first selected."::: - -```xaml - -``` - -### Horizontal PipsPager with navigation buttons - -The navigation buttons (previous, next) let the user move to an incrementally adjacent page. - -By default, the navigation buttons are collapsed. You can control this behavior through the [PreviousButtonVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.previousbuttonvisibility) and [NextButtonVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.nextbuttonvisibility) properties. - -Possible values for these properties are: - -- [Collapsed](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspagerbuttonvisibility): The button is not visible to the user and **does not** take up layout space. (Default) -- [Visible](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspagerbuttonvisibility): The button is visible and enabled. Each button is automatically hidden when the PipsPager is at the minimum or maximum extent of the content. For example, if the current page is the first page then the previous button is hidden; if the current page is the last page then the next button is hidden. When hidden, the button is not visible but **does** take up layout space. -- [VisibleOnPointerOver](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspagerbuttonvisibility): The behavior is the same as Visible *except* that the button is only displayed when the user hovers the pointer cursor over the PipsPager UI, or the user sets keyboard focus on the PipsPager. - -:::image type="content" source="images/pipspager-visible-buttons.gif" alt-text="A PipsPager with five horizontal dots and navigation buttons visible based on current page."::: - -```xaml - -``` - -### Vertical PipsPager with navigation buttons visible on pointer over - -The PipsPager can be oriented vertically with no change to behavior or interaction experience. - -The top button corresponds to the first button and the bottom button corresponds to the last button in the horizontal view. - -The following example demonstrates the [VisibleOnPointerOver](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspagerbuttonvisibility) setting for the navigation buttons. - -:::image type="content" source="images/pipspager-visible-on-pointer-over.gif" alt-text="A PipsPager with five vertical dots and navigation buttons visibility based on pointer over and current page."::: - -```xaml - -``` - -### Scrolling pips - -If the content consists of a large number of pages ([NumberOfPages](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.numberofpages)), you can use the [MaxVisiblePips](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.maxvisiblepips) property to set the number of visible, interactive pips. - -If the value of NumberOfPages is greater than the value of MaxVisiblePips, the pips automatically scroll in order to center the selected page in the control. If the NumberOfPages is equal to or less than MaxVisiblePips, no scrolling occurs and the number of pips shown is the same as the value of NumberOfPages. - -If the value of MaxVisiblePips is greater than the available layout space, the displayed pips are clipped. The number of pips displayed is the lesser of MaxVisiblePips and NumberOfPages. - -By default, a maximum of five pips are visible. - -:::image type="content" source="images/pipspager-max-visible-pips.gif" alt-text="A PipsPager with horizontally scrolling pips."::: - -```xaml - -``` - -### Integrate PipsPager with a Collection control - -:::image type="content" source="images/pipspager-flipview-example.png" alt-text="A PipsPager with five horizontal dots underneath a FlipView photo album. The third dot is selected, which indicates the third page of content."::: - -A PipsPager is often used in conjunction with collection controls. - -The following example shows how to bind a PipsPager with a [FlipView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.flipview) and provide another way to navigate through content and indicate the current page. - -> [!NOTE] -> To use the PipsPager as a page indicator **only** and disable user interactions, set the control's [IsEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.isenabled) property to false in the control. - -```xaml - - - - - - - - - - - - -``` - -### Pip and navigation button customization - -The navigation buttons and pips can be customized through the [PreviousButtonStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.previousbuttonstyle), [NextButtonStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.nextbuttonstyle), [SelectedPipStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.selectedpipstyle), and [NormalPipStyle](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspager.normalpipstyle) properties. - -If you set visibility through the PreviousButtonStyle or NextButtonStyle properties, these settings take precedence over the PreviousButtonVisibility or NextButtonVisibility properties, respectively (unless they are set to the [PipsPagerButtonVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pipspagerbuttonvisibility) value of Collapsed). - -:::image type="content" source="images/pipspager-custom-buttons.png" alt-text="A PipsPager with five horizontal dots and custom navigation buttons."::: - -```xaml - - - - - - - - - -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The PipsPager for UWP apps requires WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in the [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespace. - -> [!div class="checklist"] -> -> - **WinUI 2 Apis:** [PipsPager class](/uwp/api/microsoft.ui.xaml.controls.pipspager) -> - [Open the WinUI 2 Gallery app and see the PipsPager in action](winui2gallery:/item/PipsPager). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related articles - -- [ScrollViewer](./dialogs-and-flyouts/index.md) -- [FlipView](flipview.md) -- [ItemsRepeater](items-repeater.md) diff --git a/hub/apps/design/controls/pivot.md b/hub/apps/design/controls/pivot.md deleted file mode 100644 index 7e655224c5..0000000000 --- a/hub/apps/design/controls/pivot.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -description: The Pivot control enables touch-swiping between a small set of content sections. -title: Pivot -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium ---- - -# Pivot - -The Pivot control enables touch-swiping between a small set of content sections. - -![Default focus underlines selected header](images/pivot_focus_selectedHeader.png) - -## Is this the right control? - -> [!WARNING] ->The Pivot control is not recommended for [Windows 11 design patterns](../basics/app-silhouette.md). We strongly recommend using one of these alternatives instead: -> -> - **WinUI 3** - Use the [SelectorBar](selector-bar.md) control. -> - **WinUI 2/UWP** - Use a [NavigationView](navigationview.md) or [TabView](tab-view.md) control instead of a Pivot control. See the [Use NavigationView instead of Pivot](#use-navigationview-instead-of-pivot) section for an example. - -To create a Pivot-like UI when using WinUI 3 and the Windows App SDK, use the [SelectorBar](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.selectorbar) control. - -To create a tabbed UI, use a [TabView](tab-view.md) control. - -To achieve common top navigation patterns, we recommend using [NavigationView](navigationview.md), which automatically adapts to different screen sizes and allows for greater customization. - -Some key differences between the NavigationView and Pivot are listed here: - -- Pivot supports touch-swiping to switch between items. -- Overflow items in a Pivot carousel, while NavigationView uses a menu dropdown overflow so that users can see all items. -- Pivot handles navigation between content sections, while NavigationView allows for more control over navigation behavior. - -## Use NavigationView instead of Pivot - -If your app's UI uses the Pivot control, you can convert Pivot to [NavigationView](/windows/winui/api/microsoft.ui.xaml.controls.navigationview) following this example. - -This XAML creates a NavigationView with 3 sections of content, like the example Pivot in [Create a pivot control](#create-a-pivot-control). - -```xaml - - - - - - - - - - - - - - - - - - - - - -``` - -NavigationView provides more control over navigation customization and requires corresponding code-behind. To accompany the above XAML, use the following code-behind: - -```csharp -private void NavView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args) -{ - var navOptions = new FrameNavigationOptions - { - TransitionInfoOverride = args.RecommendedNavigationTransitionInfo, - IsNavigationStackEnabled = false, - }; - - switch (args.InvokedItemContainer.Name) - { - case nameof(Section1Content): - ContentFrame.NavigateToType(typeof(Section1Page), null, navOptions); - break; - - case nameof(Section2Content): - ContentFrame.NavigateToType(typeof(Section2Page), null, navOptions); - break; - - case nameof(Section3Content): - ContentFrame.NavigateToType(typeof(Section3Page), null, navOptions); - break; - } -} -``` - -This code mimics the Pivot control's built-in navigation experience, minus the touch-swiping experience between content sections. However, as you can see, you could also customize several points, including the animated transition, navigation parameters, and stack capabilities. - -## Create a pivot control - -> [!WARNING] ->The Pivot control is not recommended for [Windows 11 design patterns](../basics/app-silhouette.md). We strongly recommend using one of these alternatives instead: -> -> - **WinUI 3** - Use the [SelectorBar](selector-bar.md) control. -> - **WinUI 2/UWP** - Use a [NavigationView](navigationview.md) or [TabView](tab-view.md) control instead of a Pivot control. See the [Use NavigationView instead of Pivot](#use-navigationview-instead-of-pivot) section for an example. - -This XAML creates a basic Pivot control with 3 sections of content. - -```xaml - - - - - - - - - - - - - - -``` - -### Pivot items - -Pivot is an [ItemsControl](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol), so it can contain a collection of items of any type. Any item you add to the Pivot that is not explicitly a [PivotItem](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivotitem) is implicitly wrapped in a PivotItem. Because a Pivot is often used to navigate between pages of content, it's common to populate the [Items](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.items) collection directly with XAML UI elements. Or, you can set the [ItemsSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.itemssource) property to a data source. Items bound in the ItemsSource can be of any type, but if they aren't explicitly PivotItems, you must define an [ItemTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol.itemtemplate) and [HeaderTemplate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivot.headertemplate) to specify how the items are displayed. - -You can use the [SelectedItem](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivot.selecteditem) property to get or set the Pivot's active item. Use the [SelectedIndex](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivot.selectedindex) property to get or set the index of the active item. - -### Pivot headers - -You can use the [LeftHeader](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivot.leftheader) and [RightHeader](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivot.rightheader) properties to add other controls to the Pivot header. - -For example, you can add a [CommandBar](./command-bar.md) in the Pivot's RightHeader. - -```xaml - - - - - - - - - - - - -``` - -### Pivot interaction - -The control features these touch gesture interactions: - -- Tapping on a pivot item header navigates to that header's section content. -- Swiping left or right on a pivot item header navigates to the adjacent section. -- Swiping left or right on section content navigates to the adjacent section. - -The control comes in two modes: - -**Stationary** - -- Pivots are stationary when all pivot headers fit within the allowed space. -- Tapping on a pivot label navigates to the corresponding page, though the pivot itself will not move. The active pivot is highlighted. - -**Carousel** - -- Pivots carousel when all pivot headers don't fit within the allowed space. -- Tapping a pivot label navigates to the corresponding page, and the active pivot label will carousel into the first position. -- Pivot items in a carousel loop from last to first pivot section. - -> [!TIP] -> -> - Avoid using more than 5 headers when using carousel mode, as looping more than 5 can become confusing. -> - Pivot headers should not carousel in a [10ft environment](../devices/designing-for-tv.md). Set the [IsHeaderItemsCarouselEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivot.IsHeaderItemsCarouselEnabled) property to `false` if your app will run on Xbox. - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -APIs for this control exist in the [Windows.UI.Xaml.Controls](/uwp/api/windows.ui.xaml.controls) namespace. - -> [!div class="checklist"] -> -> - **UWP APIs:** [Pivot class](/uwp/api/windows.ui.xaml.controls.pivot) -> - [Open the WinUI 2 Gallery app and see the Pivot in action](winui2gallery:/item/Pivot). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. - -## Related topics - -- [Pivot class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pivot) -- [SelectorBar](selector-bar.md) -- [NavigationView](navigationview.md) -- [TabView](tab-view.md) -- [Navigation design basics](../basics/navigation-basics.md) diff --git a/hub/apps/design/controls/progress-controls.md b/hub/apps/design/controls/progress-controls.md deleted file mode 100644 index 06e9b84bba..0000000000 --- a/hub/apps/design/controls/progress-controls.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -description: A progress control provides feedback to the user that a long-running operation is underway. -title: Guidelines for progress controls -ms.assetid: FD53B716-C43D-408D-8B07-522BC1F3DF9D -label: Progress controls -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium ---- -# Progress controls - -A progress control provides feedback to the user that a long-running operation is underway. It can mean that the user cannot interact with the app when the progress indicator is visible, and can also indicate how long the wait time might be, depending on the indicator used. - -## Types of progress - -There are two controls to show the user that an operation is underway – either through a ProgressBar or through a ProgressRing. Both ProgressBar and ProgressRing have two states that communicate if the user can interact with the application or not. - -- The *determinate* state for both ProgressBar and ProgressRing shows the percentage completed of a task. This should be used during an operation whose duration is known, but its progress should not block the user's interaction with the app. -- The *indeterminate* state for ProgressBar shows that an operation is underway, does not block user interaction with the app, and its completion time is unknown. -- The *indeterminate* state for ProgressRing shows that an operation is underway, blocks user interaction with the app, and its completion time is unknown. - -Additionally, a progress control is read only and not interactive. Meaning that the user cannot invoke or use these controls directly. - -|Control|Display| -|---|---| -| Indeterminate ProgressBar | ![ProgressBar indeterminate](images/progressbar-indeterminate.gif) | -| Determinate ProgressBar | ![ProgressBar determinate](images/progressbar-determinate.png)| -| Indeterminate ProgressRing | ![Indeterminate ProgressRing state](images/progressring-indeterminate.gif)| -| Determinate ProgressRing | ![Determinate ProgressRing state](images/progress-ring.jpg)| - -## Is this the right control? - -It's not always obvious what control or what state (determinate vs indeterminate) to use when trying to show something is happening. Sometimes a task is obvious enough that it doesn't require a progress control at all – and sometimes even if a progress control is used, a line of text is still necessary in order to explain to the user what operation is underway. - -### ProgressBar - -- **Does the control have a defined duration or predictable end?** - - Use a determinate ProgressBar then, and update the percentage or value accordingly. - -- **Can the user continue without having to monitor the operation's progress?** - - When a ProgressBar is in use, interaction is non-modal, typically meaning that the user is not blocked by that operation's completion, and can continue to use the app in other ways until that aspect has completed. - -- **Keywords** - - If your operation falls around these keywords, or if you're showing text that alongside the progress operation that matches these keywords; consider using a ProgressBar: - - - *Loading...* - - *Retrieving* - - *Working...* - -### ProgressRing - -- **Will the operation cause the user to wait to continue?** - - If an operation requires all (or a large portion of) interaction with the app to wait until it has been completed, then the indeterminate ProgressRing is the better choice. - - - **Does the control have a defined duration or predictable end?** - - Use a determinate ProgressRing if you want the visual to be a ring instead of a bar, and update the percentage or value accordingly. - -- **Is the app waiting for the user to complete a task?** - - If so, use an indeterminate ProgressRing, as they're meant to indicate an unknown wait time for the user. - -- **Keywords** - - If your operation falls around these keywords, or if you're showing text alongside the progress operation that matches these keywords; consider using a ProgressRing: - - - *Refreshing* - - *Signing in...* - - *Connecting...* - -### No progress indication necessary - -- **Does the user need to know that something is happening?** - - For example, if the app is downloading something in the background and the user didn't initiate the download, the user doesn't necessarily need to know about it. - -- **Is the operation a background activity that doesn't block user activity and is of minimal (but still some) interest to the user?** - - Use text when your app is performing tasks that don't have to be visible all the time, but you still need to show the status. - -- **Does the user only care about the completion of the operation?** - - Sometimes it's best to show a notice only when the operation is completed, or give a visual that the operation has been completed immediately, and run the finishing touches in the background. - -## Progress controls best practices - -Sometimes it's best to see some visual representations of when and where to use these different progress controls: - -### ProgressBar - Determinate - -![ProgressBar determinate example](images/progress-bar-determinate-example.png) - -The first example is the determinate ProgressBar. When the duration of the operation is known, when installing, downloading, setting up, etc; a determinate ProgressBar is best. - -### ProgressBar - Indeterminate - -![ProgressBar indeterminate example](images/progress-bar-indeterminate-example.png) - -When it is not known how long the operation will take, use an indeterminate ProgressBar. Indeterminate ProgressBars are also good when filling a virtualized list, and creating a smooth visual transition between an indeterminate to determinate ProgressBar. - -- **Is the operation in a virtualized collection?** - - If so, do not put a progress indicator on each list item as they appear. Instead, use a ProgressBar and place it at the top of the collection of items being loaded in, to show that the items are being fetched. - -### ProgressRing - Indeterminate - -![ProgressRing indeterminate example](images/progress-ring-indeterminate-example.gif) - -The indeterminate ProgressRing is used when any further user interaction with the app is halted, or the app is waiting for the user's input to continue. The "signing in…" example above is a perfect scenario for the ProgressRing, the user cannot continue using the app until the sign is has completed. - -### ProgressRing - Determinate - -![ProgressRing determinate example](images/progress-ring-determinate-example.png) - -When the duration of the operation is known and the ring visual is desired, when installing, downloading, setting up, etc; a determinate ProgressRing is best. - -## Create a progress control - -> [!div class="checklist"] -> -> - **Important APIs:** [ProgressBar class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ProgressBar), [IsIndeterminate property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.progressbar.isindeterminate), [ProgressRing class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ProgressRing), [IsActive property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.progressring.isactive) - -> [!div class="nextstepaction"] -> Open the WinUI 3 Gallery app and see the [ProgressBar](winui3gallery:/item/ProgressBar) or [ProgressRing](winui3gallery:/item/ProgressRing). - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -Both progress controls are rather simple; but some visual features of the controls are not obvious to customize. - -### Sizing the ProgressRing - -The ProgressRing can be sized as large as you want, but can only be as small as 20x20epx. In order to resize a ProgressRing, you must set its height and width. If only height or width are set, the control will assume minimum sizing (20x20epx) – conversely if the height and width are set to two different sizes, the smaller of the sizes will be assumed. -To ensure your ProgressRing is correct for your needs, set both the height and the width to the same value: - -```xaml - -``` - -To make your ProgressRing visible, and animate, you must set the IsActive property to true: - -```xaml - -``` - -```csharp -progressRing.IsActive = true; -``` - -### Coloring the progress controls - -By default, the main coloring of the progress controls is set to the accent color of the system. To override this brush simply change the foreground property on either control. - -```xaml - - -``` - -Changing the foreground color for the ProgressRing will change the fill color of the ring. The foreground property for the ProgressBar will change the fill color of the bar – to alter the unfilled portion of the bar, simply override the background property. - -### Showing a wait cursor - -Sometimes it's best to just show a brief wait cursor, when the app or operation needs time to think, and you need to indicate to the user that the app or area where the wait cursor is visible should not be interacted with until the wait cursor has disappeared. - -```csharp -Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Wait, 10); -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The progress controls for UWP apps are included as part of WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in both the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) and [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespaces. - -> [!div class="checklist"] -> -> - **UWP APIs:** [ProgressBar class](/uwp/api/Windows.UI.Xaml.Controls.ProgressBar), [IsIndeterminate property](/uwp/api/windows.ui.xaml.controls.progressbar.isindeterminate), [ProgressRing class](/uwp/api/Windows.UI.Xaml.Controls.ProgressRing), [IsActive property](/uwp/api/windows.ui.xaml.controls.progressring.isactive) -> - **WinUI 2 Apis:** [ProgressBar class](/windows/winui/api/microsoft.UI.Xaml.Controls.ProgressBar), [IsIndeterminate property](/windows/winui/api/microsoft.ui.xaml.controls.progressbar.isindeterminate), [ProgressRing class](/windows/winui/api/microsoft.UI.Xaml.Controls.ProgressRing), [IsActive property](/windows/winui/api/microsoft.ui.xaml.controls.progressring.isactive) -> - Open the WinUI 2 Gallery app and see the [ProgressBar](winui2gallery:/item/ProgressBar) or [ProgressRing](winui2gallery:/item/ProgressRing). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles, templates, and features for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - - -``` - -## Related articles - -- [ProgressBar class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ProgressBar) -- [ProgressRing class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ProgressRing) diff --git a/hub/apps/design/controls/pull-to-refresh.md b/hub/apps/design/controls/pull-to-refresh.md deleted file mode 100644 index 1e988671e9..0000000000 --- a/hub/apps/design/controls/pull-to-refresh.md +++ /dev/null @@ -1,359 +0,0 @@ ---- -title: Pull-to-refresh -description: Learn how to implement a pull-to-refresh control that lets a user pull down on a list of data using touch in order to retrieve more data. -label: Pull-to-refresh -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -ms.assetid: aaeb1e74-b795-4015-bf41-02cb1d6f467e -doc-status: Published -ms.localizationpriority: medium ---- -# Pull to refresh - -Pull-to-refresh lets a user pull down on a list of data using touch in order to retrieve more data. Pull-to-refresh is widely used on devices with a touch screen. You can use the APIs shown here to implement pull-to-refresh in your app. - -![pull-to-refresh gif](images/pull-to-refresh.gif) - -## Is this the right control? - -Use pull-to-refresh when you have a list or grid of data that the user might want to refresh regularly, and your app is likely to be running on touch-first devices. - -You can also use the [RefreshVisualizer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshvisualizer) to create a consistent refresh experience that is invoked in other ways, such as by a refresh button. - -## Refresh controls - -Pull-to-refresh is enabled by 2 controls. - -- **RefreshContainer** - a ContentControl that provides a wrapper for the pull-to-refresh experience. It handles the touch interactions and manages the state of its internal refresh visualizer. -- **RefreshVisualizer** - encapsulates the refresh visualization explained in the next section. - -The main control is the **RefreshContainer**, which you place as a wrapper around the content that the user pulls to trigger a refresh. RefreshContainer works only with touch, so we recommend that you also have a refresh button available for users who don't have a touch interface. You can position the refresh button at a suitable location in the app, either on a command bar or at a location close to the surface being refreshed. - -## Refresh visualization - -The default refresh visualization is a circular progress spinner that is used to communicate when a refresh will happen and the progress of the refresh after it is initiated. The refresh visualizer has 5 states. - - The distance the user needs to pull down on a list to initiate a refresh is called the _threshold_. The visualizer [State](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshvisualizer.State) is determined by the pull state as it relates to this threshold. The possible values are contained in the [RefreshVisualizerState](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshvisualizerstate) enumeration. - -### Idle - -The visualizer's default state is **Idle**. The user is not interacting with the RefreshContainer via touch, and there is not a refresh in progress. - -Visually, there is no evidence of the refresh visualizer. - -### Interacting - -When the user pulls the list in the direction specified by the PullDirection property, and before the threshold is reached, the visualizer is in the **Interacting** state. - -- If the user releases the control while in this state, the control returns to **Idle**. - - ![pull-to-refresh pre-threshold](images/ptr-prethreshold.png) - - Visually, the icon is displayed as disabled (60% opacity). In addition, the icon spins one full rotation with the scroll action. - -- If the user pulls the list past the threshold, the visualizer transitions from **Interacting** to **Pending**. - - ![pull-to-refresh at threshold](images/ptr-atthreshold.png) - - Visually, the icon switches to 100% opacity and pulses in size up to 150% and then back to 100% size during the transition. - -### Pending - -When the user has pulled the list past the threshold, the visualizer is in the **Pending** state. - -- If the user moves the list back above the threshold without releasing it, it returns to the **Interacting** state. -- If the user releases the list, a refresh request is initiated and it transitions to the **Refreshing** state. - -![pull-to-refresh post-threshold](images/ptr-postthreshold.png) - -Visually, the icon is 100% in both size and opacity. In this state, the icon continues to move down with the scroll action but no longer spins. - -### Refreshing - -When the user releases the visualiser past the threshold, it's in the **Refreshing** state. - -When this state is entered, the **RefreshRequested** event is raised. This is the signal to start the app's content refresh. The event args ([RefreshRequestedEventArgs](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshrequestedeventargs)) contain a [Deferral](/uwp/api/windows.foundation.deferral) object, which you should take a handle to in the event handler. Then, you should mark the deferral as completed when your code to perform the refresh has completed. - -When the refresh is complete, the visualizer returns to the **Idle** state. - -Visually, the icon settles back to the threshold location and spins for the duration of the refresh. This spinning is used to show progress of the refresh and is replaced by the animation of the incoming content. - -### Peeking - -When the user pulls in the refresh direction from a start position where a refresh is not allowed, the visualizer enters the **Peeking** state. This typically happens when the ScrollViewer is not at position 0 when the user starts to pull. - -- If the user releases the control while in this state, the control returns to **Idle**. - -## Pull direction - -By default, the user pulls a list from top to bottom to initiate a refresh. If you have a list or grid with a different orientation, you should change the pull direction of the refresh container to match. - -The [PullDirection](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshcontainer.PullDirection) property takes one of these [RefreshPullDirection](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshpulldirection) values: **BottomToTop**, **TopToBottom**, **RightToLeft**, or **LeftToRight**. - -When you change the pull direction, the starting position of the visualizer's progress spinner automatically rotates so the arrow starts in the appropriate position for the pull direction. If needed, you can change the [RefreshVisualizer.Orientation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshvisualizer.Orientation) property to override the automatic behavior. In most cases, we recommend leaving the default value of **Auto**. - -## Implement pull-to-refresh - -> [!div class="checklist"] -> -> - **Important APIs**: [RefreshContainer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshcontainer), [RefreshVisualizer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshvisualizer) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see PullToRefresh in action](winui3gallery:/item/PullToRefresh) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -To add pull-to-refresh functionality to a list requires just a few steps. - -1. Wrap your list in a **RefreshContainer** control. -1. Handle the **RefreshRequested** event to refresh your content. -1. Optionally, initiate a refresh by calling **RequestRefresh** (for example, from a button click). - -> [!NOTE] -> You can instantiate a RefreshVisualizer on its own. However, we recommend that you wrap your content in a RefreshContainer and use the RefreshVisualizer provided by the RefreshContainer.Visualizer property, even for non-touch scenarios. In this article, we assume that the visualizer is always obtained from the refresh container. -> -> In addition, use the refresh container's RequestRefresh and RefreshRequested members for convenience. `refreshContainer.RequestRefresh()` is equivalent to `refreshContainer.Visualizer.RequestRefresh()`, and either will raise both the RefreshContainer.RefreshRequested event and the RefreshVisualizer.RefreshRequested events. - -### Request a refresh - -The refresh container handles touch interactions to let a user refresh content via touch. We recommend that you provide other affordances for non-touch interfaces, like a refresh button or voice control. - -To initiate a refresh, call the [RequestRefresh](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshcontainer.RequestRefresh) method. - -```csharp -// See the Examples section for the full code. -private void RefreshButtonClick(object sender, RoutedEventArgs e) -{ - RefreshContainer.RequestRefresh(); -} -``` - -When you call RequestRefresh, the visualizer state goes directly from **Idle** to **Refreshing**. - -### Handle a refresh request - -To get fresh content when needed, handle the RefreshRequested event. In the event handler, you'll need code specific to your app to get the fresh content. - -The event args ([RefreshRequestedEventArgs](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.refreshrequestedeventargs)) contain a [Deferral](/uwp/api/windows.foundation.deferral) object. Get a handle to the deferral in the event handler. Then, mark the deferral as completed when your code to perform the refresh has completed. - -```csharp -// See the Examples section for the full code. -private async void RefreshContainer_RefreshRequested(RefreshContainer sender, RefreshRequestedEventArgs args) -{ - // Respond to a request by performing a refresh and using the deferral object. - using (var RefreshCompletionDeferral = args.GetDeferral()) - { - // Do some async operation to refresh the content - - await FetchAndInsertItemsAsync(3); - - // The 'using' statement ensures the deferral is marked as complete. - // Otherwise, you'd call - // RefreshCompletionDeferral.Complete(); - // RefreshCompletionDeferral.Dispose(); - } -} -``` - -### Respond to state changes - -You can respond to changes in the visualizer's state, if needed. For example, to prevent multiple refresh requests, you can disable a refresh button while the visualizer is refreshing. - -```csharp -// See the Examples section for the full code. -private void Visualizer_RefreshStateChanged(RefreshVisualizer sender, RefreshStateChangedEventArgs args) -{ - // Respond to visualizer state changes. - // Disable the refresh button if the visualizer is refreshing. - if (args.NewState == RefreshVisualizerState.Refreshing) - { - RefreshButton.IsEnabled = false; - } - else - { - RefreshButton.IsEnabled = true; - } -} -``` - -### Using a ScrollViewer in a RefreshContainer - -> [!NOTE] -> The Content of a RefreshContainer must be a scrollable control, such as ScrollViewer, GridView, ListView, etc. Setting the Content to a control like Grid will result in undefined behavior. - -This example shows how to use pull-to-refresh with a scroll viewer. - -```xaml - - - - - - - -``` - -### Adding pull-to-refresh to a ListView - -This example shows how to use pull-to-refresh with a list view. - -```xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -```csharp -public sealed partial class MainPage : Page -{ - public ObservableCollection Items { get; set; } - = new ObservableCollection(); - - public MainPage() - { - this.InitializeComponent(); - - Loaded += MainPage_Loaded; - ListView1.ItemsSource = Items; - } - - private async void MainPage_Loaded(object sender, RoutedEventArgs e) - { - Loaded -= MainPage_Loaded; - RefreshContainer.RefreshRequested += RefreshContainer_RefreshRequested; - RefreshContainer.Visualizer.RefreshStateChanged += Visualizer_RefreshStateChanged; - - // Add some initial content to the list. - await FetchAndInsertItemsAsync(2); - } - - private void RefreshButtonClick(object sender, RoutedEventArgs e) - { - RefreshContainer.RequestRefresh(); - } - - private async void RefreshContainer_RefreshRequested(RefreshContainer sender, RefreshRequestedEventArgs args) - { - // Respond to a request by performing a refresh and using the deferral object. - using (var RefreshCompletionDeferral = args.GetDeferral()) - { - // Do some async operation to refresh the content - - await FetchAndInsertItemsAsync(3); - - // The 'using' statement ensures the deferral is marked as complete. - // Otherwise, you'd call - // RefreshCompletionDeferral.Complete(); - // RefreshCompletionDeferral.Dispose(); - } - } - - private void Visualizer_RefreshStateChanged(RefreshVisualizer sender, RefreshStateChangedEventArgs args) - { - // Respond to visualizer state changes. - // Disable the refresh button if the visualizer is refreshing. - if (args.NewState == RefreshVisualizerState.Refreshing) - { - RefreshButton.IsEnabled = false; - } - else - { - RefreshButton.IsEnabled = true; - } - } - - // App specific code to get fresh data. - private async Task FetchAndInsertItemsAsync(int updateCount) - { - for (int i = 0; i < updateCount; ++i) - { - // Simulate delay while we go fetch new items. - await Task.Delay(1000); - Items.Insert(0, GetNextItem()); - } - } - - private ListItemData GetNextItem() - { - return new ListItemData() - { - Header = "Header " + DateTime.Now.Second.ToString(), - Date = DateTime.Now.ToLongDateString(), - Body = DateTime.Now.ToLongTimeString() - }; - } -} - -public class ListItemData -{ - public string Header { get; set; } - public string Date { get; set; } - public string Body { get; set; } -} -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The refresh controls for UWP apps are included as part of WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in both the [Windows.UI.Xaml.Controls](/uwp/api/windows.UI.Xaml.Controls) (UWP) and [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) (WinUI) namespaces. - -> [!div class="checklist"] -> -> - **UWP APIs:** [RefreshContainer](/uwp/api/windows.ui.xaml.controls.refreshcontainer), [RefreshVisualizer](/uwp/api/windows.ui.xaml.controls.refreshvisualizer) -> - **WinUI 2 Apis:** [RefreshContainer](/windows/winui/api/microsoft.ui.xaml.controls.refreshcontainer), [RefreshVisualizer](/windows/winui/api/microsoft.ui.xaml.controls.refreshvisualizer) -> - [Open the WinUI 2 Gallery app and see PullToRefresh in action](winui2gallery:/item/PullToRefresh). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles, templates, and features for all controls. - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related articles - -- [Touch interactions](../input/touch-interactions.md) -- [List view and grid view](listview-and-gridview.md) -- [Item containers and templates](item-containers-templates.md) -- [Expression animations](/windows/uwp/composition/composition-animation) diff --git a/hub/apps/design/controls/radio-button.md b/hub/apps/design/controls/radio-button.md deleted file mode 100644 index c7f58de891..0000000000 --- a/hub/apps/design/controls/radio-button.md +++ /dev/null @@ -1,588 +0,0 @@ ---- -description: Learn how to use radio buttons to let users select one option from a collection of two or more mutually exclusive, but related, options. -title: Guidelines for radio buttons -ms.assetid: 41E3F928-AA55-42A2-9281-EC3907C4F898 -label: Radio buttons -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium ---- - -# Radio buttons - -Radio buttons, also called option buttons, let users select one option from a collection of two or more mutually exclusive, but related, options. Radio buttons are always used in groups, and each option is represented by one radio button in the group. - -In the default state, no radio button in a RadioButtons group is selected. That is, all radio buttons are cleared. However, once a user has selected a radio button, the user can't deselect the button to restore the group to its initial cleared state. - -The singular behavior of a RadioButtons group distinguishes it from [check boxes](checkbox.md), which support multi-selection and deselection, or clearing. - -:::image type="content" source="images/controls/radio-button.png" alt-text="Example of a RadioButtons group, with one radio button selected" border="false"::: - -## Is this the right control? - -Use radio buttons to let users select from two or more mutually exclusive options. - -:::image type="content" source="images/radiobutton_basic.png" alt-text="A RadioButtons group, with one radio button selected" border="false"::: - -Use radio buttons when users need to see all options before they make a selection. Radio buttons emphasize all options equally, which means that some options might draw more attention than is necessary or desired. - -Unless all options deserve equal attention, consider using other controls. For example, to recommend a single best option for most users and in most situations, use a [combo box](combo-box.md) to display that best option as the default option. - -:::image type="content" source="images/combo-box-collapsed.png" alt-text="A combo box, displaying a default option" border="false"::: - -If there are only two possible options that can be expressed clearly as a single binary choice, such as on/off or yes/no, combine them into a single [check box](checkbox.md) or [toggle switch](toggles.md) control. For example, use a single check box for "I agree" instead of two radio buttons for "I agree" and "I don't agree." - -Don't use two radio buttons for a single binary choice: - -:::image type="content" source="images/radiobutton-vs-checkbox-rb.png" alt-text="Two radio buttons presenting a binary choice" border="false"::: - -Use a check box instead: - -:::image type="content" source="images/radiobutton-vs-checkbox-cb.png" alt-text="A check box is a good alternative for presenting a binary choice" border="false"::: - -When users can select multiple options, use [check boxes](checkbox.md). - -:::image type="content" source="images/checkbox2.png" alt-text="Check boxes support multiselection" border="false"::: - -When users' options lie within a range of values (for example, *10, 20, 30, ... 100*), use a [slider](slider.md) control. - -:::image type="content" source="images/controls/slider.png" alt-text="A slider control, displaying one value in a range of values" border="false"::: - -If there are more than eight options, use a [combo box](combo-box.md). - -:::image type="content" source="images/combo-box-scroll.png" alt-text="A list box, displaying multiple options" border="false"::: - -If the available options are based on an app's current context, or they can otherwise vary dynamically, use a list control. - -## Recommendations - -- Make sure that the purpose and current state of a set of radio buttons is explicit. -- Limit the radio button's text label to a single line. -- If the text label is dynamic, consider how the button will automatically resize and what will happen to any visuals around it. -- Use the default font unless your brand guidelines tell you otherwise. -- Don't put two RadioButtons groups side by side. When two RadioButtons groups are right next to each other, it can be difficult for users to determine which buttons belong to which group. - -## RadioButtons overview - -### RadioButtons vs RadioButton - -There are two ways to create radio button groups: RadioButtons and RadioButton. - -- We recommend the **[RadioButtons](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons)** control. This control simplifies layout, handles keyboard navigation and accessibility, and supports binding to a data source. -- You can use groups of individual **[RadioButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton)** controls. - -Keyboard access and navigation behavior have been optimized in the [RadioButtons](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons) control. These improvements help both accessibility and keyboard power users move through the list of options more quickly and easily. - -In addition to these improvements, the default visual layout of individual radio buttons in a RadioButtons group has been optimized through automated orientation, spacing, and margin settings. This optimization eliminates the requirement to specify these properties, as you might have to do when you use a more primitive grouping control, such as [StackPanel](../layout/layout-panels.md#stackpanel) or [Grid](../layout/layout-panels.md#grid). - -### Navigating a RadioButtons group - -The `RadioButtons` control has special navigation behavior that helps keyboard users navigate the list more quickly and more easily. - -#### Keyboard focus - -The `RadioButtons` control supports two states: - -- No radio button is selected -- One radio button is selected - -The next sections describe the focus behavior of the control in each state. - -##### No radio button is selected - -When no radio button is selected, the first radio button in the list gets focus. - -> [!NOTE] -> The item that receives tab focus from the initial tab navigation is not selected. - -:::row::: - :::column span=""::: - **_List without tab focus, no selection_** - - ![List without tab focus and no selected item](images/radiobutton-no-selected-item-no-tab-focus.png) - :::column-end::: - :::column span=""::: - **_List with initial tab focus, no selection_** - - ![List with initial tab focus and no selected item](images/radiobutton-no-selected-item-tab-focus.png) - :::column-end::: -:::row-end::: - -##### One radio button is selected - -When a user tabs into the list where a radio button is already selected, the selected radio button gets focus. - -:::row::: - :::column span=""::: - **_List without tab focus_** - - ![List without tab focus and a selected item](images/radiobutton-selected-item-no-tab-focus.png) - :::column-end::: - :::column span=""::: - **_List with initial tab focus_** - - ![List with initial tab focus and a selected item](images/radiobutton-selected-item-tab-focus.png) - :::column-end::: -:::row-end::: - -#### Keyboard navigation - -For more information about general keyboard navigation behaviors, see [Keyboard interactions - Navigation](../input/keyboard-interactions.md#navigation). - -When an item in a `RadioButtons` group already has focus, the user can use arrow keys for "inner navigation" between the items within the group. The Up and Down arrow keys move to the "next" or "previous" logical item, as defined in your XAML markup. The Left and Right arrow keys move spatially. - -##### Navigation within single-column or single-row layouts - -In a single-column or single-row layout, keyboard navigation results in the following behavior: - -:::row::: - :::column span=""::: - **_Single column_** - - ![Example of keyboard navigation in a single-column RadioButtons group](images/radiobutton-keyboard-navigation-single-column.png) - - The Up arrow and Down arrow keys move between items.
The Left arrow and Right arrow keys do nothing. - :::column-end::: - :::column span=""::: - **_Single row_** - - ![Example of keyboard navigation in a single-row RadioButtons group](images/radiobutton-keyboard-navigation-single-row.png) - - The Left and Up arrow keys move to the previous item, and the Right and Down arrow keys move to the next item. - :::column-end::: -:::row-end::: - -##### Navigation within multi-column, multi-row layouts - -In a multi-column, multi-row grid layout, keyboard navigation results in this behavior: - -**_Left/Right arrow keys_** - -:::row::: - :::column span=""::: - ![Example of horizontal keyboard navigation in a multi-column/row RadioButtons group](images/radiobutton-keyboard-navigation-multi-column-row-1.png) - - - - The Left and Right arrow keys move focus horizontally between items in a row. - :::column-end::: - :::column span=""::: - ![Example of horizontal keyboard navigation with focus on last item in a column](images/radiobutton-keyboard-navigation-multi-column-row-3.png) - - When focus is on the last item in a column and the Right or Left arrow key is pressed, focus moves to the last item in the next or previous column (if any). - :::column-end::: -:::row-end::: - -**_Up/Down arrow keys_** - -:::row::: - :::column span=""::: - ![Example of vertical keyboard navigation in a multi-column/row RadioButtons group](images/radiobutton-keyboard-navigation-multi-column-row-2.png) - - The Up and Down arrow keys move focus vertically between items in a column. - :::column-end::: - :::column span=""::: - ![Example of vertical keyboard navigation with focus on the last item in a column](images/radiobutton-keyboard-navigation-multi-column-row-4.png) - - When focus is on the last item in a column and the Down arrow key is pressed, focus moves to the first item in the next column (if any). When focus is on the first item in a column and the Up arrow key is pressed, focus moves to the last item in the previous column (if any) - :::column-end::: -:::row-end::: - -For more information, see [Keyboard interactions](../input/keyboard-interactions.md#wrapping-homogeneous-list-and-grid-view-items). - -###### Wrapping - -The RadioButtons group doesn't wrap focus from the first row or column to the last, or from the last row or column to the first. This is because, when users use a screen reader, a sense of boundary and a clear indication of beginning and end is lost, which makes it difficult for users with visual impairment to navigate the list. - -The `RadioButtons` control also doesn't support enumeration, because the control is intended to contain a reasonable number of items (see [Is this the right control?](#is-this-the-right-control)). - -### Selection follows focus - -When you use the keyboard to navigate between items in a `RadioButtons` group, as focus moves from one item to the next, the newly focused item gets selected and the previously focused item is cleared. - -:::row::: - :::column span=""::: - **_Before keyboard navigation_** - - ![Example of focus and selection before keyboard navigation](images/radiobutton-two-selected-before-keyboard-navigation.png) - - Focus and selection before keyboard navigation. - :::column-end::: - :::column span=""::: - **_After keyboard navigation_** - - ![Example of focus and selection after keyboard navigation](images/radiobutton-three-selected-after-keyboard-navigation.png) - - Focus and selection after keyboard navigation, where the Down arrow key moves focus to radio button 3, selects it, and clears radio button 2. - :::column-end::: -:::row-end::: - -You can move focus without changing selection by using Ctrl+arrow keys to navigate. After focus is moved, you can use the Spacebar to select the item that currently has focus. - -#### Navigating with game pad and remote control - -If you use a game pad or remote control to move between radio buttons, the "selection follows focus" behavior is disabled, and the user must press the "A" button to select the radio button that currently has focus. - -## Accessibility behavior - -The following table describes how Narrator handles a `RadioButtons` group and what is announced. This behavior depends on how a user has set the Narrator detail preferences. - -| Action | Narrator announcement | -|:--|:--| -| Focus moves to a selected item | "_name_, RadioButton, selected, _x_ of _N_" | -|Focus moves to an unselected item
*(If navigating with Ctrl-arrow keys or Xbox gamepad,
which indicates selection is not following focus.)* | "_name_, RadioButton, non-selected, _x_ of _N_" | - -> [!NOTE] -> The _**name**_ that Narrator announces for each item is the value of the [AutomationProperties.Name](/uwp/api/windows.ui.xaml.automation.automationproperties.nameproperty) attached property if it is available for the item; otherwise, it is the value returned by the item's [ToString](/dotnet/api/system.object.tostring?view=dotnet-uwp-10.0&preserve-view=true) method. -> -> _**x**_ is the number of the current item. _**N**_ is the total number of items in the group. - -## Create a WinUI RadioButtons group - -> [!div class="checklist"] -> -> - **Important APIs**: [RadioButtons class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons), [SelectedItem property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selecteditem), [SelectedIndex property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectedindex), [SelectionChanged event](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectionchanged), [RadioButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton), [IsChecked property](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.Primitives.ToggleButton.IsChecked), [Checked event](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.Primitives.ToggleButton.Checked) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the RadioButton in action](winui3gallery:/item/RadioButton) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -The `RadioButtons` control uses a content model similar to an [ItemsControl](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemscontrol). This means that you can: - -- Populate it by adding items directly to the [Items](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.items) collection or by binding data to its [ItemsSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.itemssource) property. -- Use the [SelectedIndex](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectedindex) or [SelectedItem](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selecteditem) properties to get and set which option is selected. -- Handle the [SelectionChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectionchanged) event to take action when an option is chosen. - -Here, you declare a simple `RadioButtons` control with three options. The [Header](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.header) property is set to give the group a label, and the `SelectedIndex` property is set to provide a default option. - -```xaml - - Red - Green - Blue - -``` - -The result looks like this: - -:::image type="content" source="images/radiobuttons-default-group.png" alt-text="A group of three radio buttons" border="false"::: - -To take an action when the user selects an option, handle the [SelectionChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectionchanged) event. Here, you change the background color of a [Border](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border) element named "ExampleBorder" (``). - -```csharp -private void BackgroundColor_SelectionChanged(object sender, SelectionChangedEventArgs e) -{ - if (ExampleBorder != null && sender is RadioButtons rb) - { - string colorName = rb.SelectedItem as string; - switch (colorName) - { - case "Red": - ExampleBorder.Background = new SolidColorBrush(Colors.Red); - break; - case "Green": - ExampleBorder.Background = new SolidColorBrush(Colors.Green); - break; - case "Blue": - ExampleBorder.Background = new SolidColorBrush(Colors.Blue); - break; - } - } -} -``` - -> [!TIP] -> You can also get the selected item from the [SelectionChangedEventArgs.AddedItems](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.selectionchangedeventargs.addeditems) property. There will only be one selected item, at index 0, so you could get the selected item like this: `string colorName = e.AddedItems[0] as string;`. - -### Selection states - -A radio button has two states: selected or cleared. When an option is selected in a `RadioButtons` group, you can get its value from the [SelectedItem](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selecteditem) property, and its location in the collection from the [SelectedIndex](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectedindex) property. A radio button can be cleared if a user selects another radio button in the same group, but it can't be cleared if the user selects it again. However, you can clear a radio button group programmatically by setting it `SelectedItem = null`, or `SelectedIndex = -1`. (Setting `SelectedIndex` to any value outside the range of the `Items` collection results in no selection.) - -### RadioButtons content - -In the previous example, you populated the `RadioButtons` control with simple strings. The control provided the radio buttons, and used the strings as the label for each one. - -However, you can populate the `RadioButtons` control with any object. Typically, you want the object to provide a string representation that can be used as a text label. In some cases, an image might be appropriate in place of text. - -Here, [SymbolIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symbolicon) elements are used to populate the control. - -```xaml - - - - - - -``` - -:::image type="content" source="images/radiobuttons-symbolicon.png" alt-text="A group radio buttons with symbol icons" border="false"::: - -You can also use individual [RadioButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton) controls to populate the `RadioButtons` items. This is a special case that we discuss later. See [RadioButton controls in a RadioButtons group](#radiobutton-controls-in-a-radiobuttons-group). - -A benefit of being able to use any object is that you can bind the `RadioButtons` control to a custom type in your data model. The next section demonstrates this. - -### Data binding - -The `RadioButtons` control supports data binding to its [ItemsSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.itemssource) property. This example shows how you can bind the control to a custom data source. The appearance and functionality of this example is the same as the previous background color example, but here, the color brushes are stored in the data model instead of being created in the `SelectionChanged` event handler. - -```xaml - -``` - -```csharp -public sealed partial class MainPage : Page -{ - // Custom data item. - public class ColorOptionDataModel - { - public string Label { get; set; } - public SolidColorBrush ColorBrush { get; set; } - - public override string ToString() - { - return Label; - } - } - - List colorOptionItems; - - public MainPage1() - { - this.InitializeComponent(); - - colorOptionItems = new List(); - colorOptionItems.Add(new ColorOptionDataModel() - { Label = "Red", ColorBrush = new SolidColorBrush(Colors.Red) }); - colorOptionItems.Add(new ColorOptionDataModel() - { Label = "Green", ColorBrush = new SolidColorBrush(Colors.Green) }); - colorOptionItems.Add(new ColorOptionDataModel() - { Label = "Blue", ColorBrush = new SolidColorBrush(Colors.Blue) }); - } - - private void BackgroundColor_SelectionChanged(object sender, SelectionChangedEventArgs e) - { - var option = e.AddedItems[0] as ColorOptionDataModel; - ExampleBorder.Background = option?.ColorBrush; - } -} -``` - -### RadioButton controls in a RadioButtons group - -You can use individual [RadioButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton) controls to populate the `RadioButtons` items. You might do this to get access to certain properties, like `AutomationProperties.Name`; or you might have existing `RadioButton` code, but want to take advantage of the layout and navigation of `RadioButtons`. - -```xaml - - - - - -``` - -When you use `RadioButton` controls in a `RadioButtons` group, the `RadioButtons` control knows how to present the `RadioButton`, so you won't end up with two selection circles. - -However, there are some behaviors you should be aware of. We recommend that you handle state and events on the individual controls or on `RadioButtons`, but not both, to avoid conflicts. - -This table shows the related events and properties on both controls. - -|RadioButton |RadioButtons | -|---------|---------| -|[Checked](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton.checked), [Unchecked](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton.unchecked), [Click](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.buttonbase.click) | [SelectionChanged](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectionchanged) | -|[IsChecked](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton.ischecked) | [SelectedItem](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selecteditem), [SelectedIndex](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.selectedindex) | - -If you handle events on an individual `RadioButton`, such as `Checked` or `Unchecked`, and also handle the `RadioButtons.SelectionChanged` event, both events will fire. The `RadioButton` event occurs first, and then the `RadioButtons.SelectionChanged` event occurs, which could result in conflicts. - -The `IsChecked`, `SelectedItem`, and `SelectedIndex` properties stay synchronized. A change to one property updates the other two. - -The [RadioButton.GroupName](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton.groupname) property is ignored. The group is created by the `RadioButtons` control. - -### Defining multiple columns - -By default, the `RadioButtons` control arranges its radio buttons vertically in a single column. You can set the [MaxColumns](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons.maxcolumns) property to make the control arrange the radio buttons in multiple columns. (When you do this, they are laid out in column-major order, where items fill in from top to bottom, then left to right.) - -```xaml - - Item 1 - Item 2 - Item 3 - Item 4 - Item 5 - Item 6 - -``` - -:::image type="content" source="images/radiobuttons-multi-column.png" alt-text="Radio buttons in two three-column groups" border="false"::: - -> [!TIP] -> To have items arranged in a single horizontal row, set `MaxColumns` equal to the number of items in the group. - -## Create your own RadioButton group - -> [!IMPORTANT] -> We recommend using the `RadioButtons` control to group `RadioButton` elements. - -Radio buttons work in groups. You can group individual [RadioButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton) controls in either of two ways: - -- Put them inside the same parent container. -- Set the [GroupName](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton.GroupName) property on each radio button to the same value. - -In this example, the first group of radio buttons is implicitly grouped by being in the same stack panel. The second group is divided between two stack panels, so `GroupName` is used to explicitly group them into a single group. - -```xaml - - - - - - - - - - - - - - - - - - - - - - - - -``` - -```csharp -private void BGRadioButton_Checked(object sender, RoutedEventArgs e) -{ - RadioButton rb = sender as RadioButton; - - if (rb != null && ExampleBorder != null) - { - string colorName = rb.Tag.ToString(); - switch (colorName) - { - case "yellow": - ExampleBorder.Background = new SolidColorBrush(Colors.Yellow); - break; - case "green": - ExampleBorder.Background = new SolidColorBrush(Colors.Green); - break; - case "white": - ExampleBorder.Background = new SolidColorBrush(Colors.White); - break; - } - } -} - -private void BorderRadioButton_Checked(object sender, RoutedEventArgs e) -{ - RadioButton rb = sender as RadioButton; - - if (rb != null && ExampleBorder != null) - { - string colorName = rb.Tag.ToString(); - switch (colorName) - { - case "yellow": - ExampleBorder.BorderBrush = new SolidColorBrush(Colors.Gold); - break; - case "green": - ExampleBorder.BorderBrush = new SolidColorBrush(Colors.DarkGreen); - break; - case "white": - ExampleBorder.BorderBrush = new SolidColorBrush(Colors.White); - break; - } - } -} -``` - -These two groups of `RadioButton` controls look like this: - -:::image type="content" source="images/radio-button-groups.png" alt-text="Radio buttons in two groups" border="false"::: - -### Radio button states - -A radio button has two states: selected or cleared. When a radio button is selected, its [IsChecked](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.togglebutton.ischecked) property is `true`. When a radio button is cleared, its `IsChecked` property is `false`. A radio button can be cleared if a user selects another radio button in the same group, but it can't be cleared if the user selects it again. However, you can clear a radio button programmatically by setting its `IsChecked` property to `false`. - -### Visuals to consider - -The default spacing of individual `RadioButton` controls is different than the spacing provided by a `RadioButtons` group. To apply the `RadioButtons` spacing to individual `RadioButton` controls, use a `Margin` value of `0,0,7,3`, as shown here. - -```xaml - - - - - - - - - -``` - -The following images show the preferred spacing of radio buttons in a group. - -:::image type="content" source="images/radiobutton-layout.png" alt-text="Image showing a set of radio buttons, arranged vertically" border="false"::: - -:::image type="content" source="images/radiobutton-redline.png" alt-text="Image showing spacing guidelines for radio buttons"::: - -> [!NOTE] -> If you're using a WinUI RadioButtons control, the spacing, margins, and orientation are already optimized. - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The RadioButtons control for UWP apps is included as part of WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for these controls exist in both the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) and [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespaces. - -> [!div class="checklist"] -> -> - **UWP APIs**: [RadioButton class](/uwp/api/windows.ui.xaml.controls.radiobutton), [IsChecked property](/uwp/api/Windows.UI.Xaml.Controls.Primitives.ToggleButton.IsChecked), [Checked event](/uwp/api/Windows.UI.Xaml.Controls.Primitives.ToggleButton.Checked) -> - **WinUI 2 Apis**: [RadioButtons class](/windows/winui/api/microsoft.ui.xaml.controls.radiobuttons), [SelectedItem property](/windows/winui/api/microsoft.ui.xaml.controls.radiobuttons.selecteditem), [SelectedIndex property](/windows/winui/api/microsoft.ui.xaml.controls.radiobuttons.selectedindex), [SelectionChanged event](/windows/winui/api/microsoft.ui.xaml.controls.radiobuttons.selectionchanged) -> - [Open the WinUI 2 Gallery app and see the RadioButton in action](winui2gallery:/item/RadioButton). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -There are two ways to create radio button groups. - -- Starting with WinUI 2.3, we recommend the **[RadioButtons](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons)** control. This control simplifies layout, handles keyboard navigation and accessibility, and supports binding to a data source. -- You can use groups of individual **[RadioButton](/uwp/api/windows.ui.xaml.controls.radiobutton)** controls. If your app does not use WinUI 2.3 or later, this is the only option. - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` - -## Related topics - -- [Buttons](buttons.md) -- [Toggle switches](toggles.md) -- [Check boxes](checkbox.md) -- [Lists and combo boxes](lists.md) -- [Sliders](slider.md) -- [RadioButtons class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobuttons) -- [RadioButton class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.radiobutton) diff --git a/hub/apps/design/controls/rating.md b/hub/apps/design/controls/rating.md deleted file mode 100644 index 5385077ff8..0000000000 --- a/hub/apps/design/controls/rating.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -description: Enables users to view and set ratings that reflect satisfaction with content and services. -title: Rating Control -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: concept-article -doc-status: Published -ms.localizationpriority: medium ---- -# Rating control - -The rating control allows users to view and set ratings that reflect degrees of satisfaction with content and services. Users can interact with the rating control with touch, pen, mouse, gamepad, or keyboard. The follow guidance shows how to use the rating control's features to provide flexibility and customization. - -![Example of Rating Control](images/rating_rs2_doc_ratings_intro.png) - -## Overview - -The rating control can be used to enter a rating, or made read-only to display a rating. - -### Editable rating with placeholder value - -Perhaps the most common way to use the rating control is to display an average rating while still allowing the user to enter their own rating value. In this scenario, the rating control is initially set to reflect the average satisfaction rating of all users of a particular service or type of content (such as a music, videos, books, etc.). It remains in this state until a user interacts with the control with the goal of individually rating an item. This interaction changes the state of the ratings control to reflect the user's personal satisfaction rating. - -#### Initial average rating state - -![Initial Average Rating State](images/rating_rs2_doc_movie_aggregate.png) - -#### Representation of user rating once set - -![Representation of User Rating Once Set](images/rating_rs2_doc_movie_user.png) - -### Read-only rating mode - -Sometimes you need to show ratings of secondary content, such as that displayed in recommended content or when displaying a list of comments and their corresponding ratings. In this case, the user shouldn't be able to edit the rating, so you can make the control read-only. -The read only mode is also the recommended way of using the rating control when it is used in very large virtualized lists of content, for both UI design and performance reasons. - -![Read-Only Long List](images/rating_rs2_doc_reviews.png) - -## Create a rating control - -> [!div class="checklist"] -> -> - **Important APIs**: [RatingControl class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.ratingcontrol) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see RatingControl in action](winui3gallery:/item/RatingControl) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -### Editable rating control - -This code shows how to create an editable rating control with a placeholder value. - -```xaml - -``` - -```csharp -private void RatingChanged(RatingControl sender, object args) -{ - if (sender.Value == null) - { - MyRating.Caption = "(" + SomeWebService.HowManyPreviousRatings() + ")"; - } - else - { - MyRating.Caption = "Your rating"; - } -} -``` - -### Read-only rating control - -This code shows how to create a read-only rating control. - -```xaml - -``` - -## Additional functionality - -The rating control has many additional features which can be used. Details for using these features can be found in our reference documentation. Here is a non-comprehensive list of additional functionality: - -- Great long list performance -- Compact sizing for tight UI scenarios -- Continuous value fill and rating -- Spacing customization -- Disable growth animations -- Customization of the number of stars - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -The RatingControl for UWP apps is included as part of WinUI 2. For more info, including installation instructions, see [WinUI 2](/windows/uwp/get-started/winui2/). APIs for this control exist in both the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) and [Microsoft.UI.Xaml.Controls](/windows/winui/api/microsoft.ui.xaml.controls) namespaces. - -> [!div class="checklist"] -> -> - **UWP APIs:** [RatingControl class](/uwp/api/windows.ui.xaml.controls.ratingcontrol) -> - **WinUI 2 Apis:** [RatingControl class](/uwp/api/windows.ui.xaml.controls.ratingcontrol) -> - [Open the WinUI 2 Gallery app and see RatingControl in action](winui2gallery:/item/RatingControl). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles, templates, and features for all controls. - -[!INCLUDE [muxc-alias-note](../../../includes/muxc-alias-note.md)] - -```xaml -xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - - -``` diff --git a/hub/apps/design/controls/rich-edit-box.md b/hub/apps/design/controls/rich-edit-box.md deleted file mode 100644 index e61350230c..0000000000 --- a/hub/apps/design/controls/rich-edit-box.md +++ /dev/null @@ -1,240 +0,0 @@ ---- -description: You can use a RichEditBox control to enter and edit rich text documents that contain formatted text, hyperlinks, images, and math equations. You can make a RichEditBox read-only by setting its IsReadOnly property to true. -title: RichEditBox -ms.assetid: 4AFC0DFA-3B89-434D-9F86-4309CCFF7839 -label: Rich edit box -template: detail.hbs -ms.date: 04/17/2025 -ms.topic: article -doc-status: Published -ms.localizationpriority: medium ---- - -# Rich edit box - -You can use a **RichEditBox** control to enter and edit rich text documents that contain formatted text, hyperlinks, images, math equations, and other rich content. You can make a RichEditBox read-only by setting its IsReadOnly property to **true**. - -## Is this the right control? - -Use a RichEditBox to display and edit text files. You don't use a RichEditBox to get user input into you app the way you use other standard text input boxes. Rather, you use it to work with text files that are separate from your app. You typically save text entered into a RichEditBox to a .rtf file. - -- If the primary purpose of the multi-line text box is for creating read-only documents (such as blog entries or the contents of an email message), and those documents require rich text, use a [rich text block](./rich-text-block.md) instead. -- When capturing text that will only be consumed and not redisplayed to users, use a plain text input control. -- For all other scenarios, use a plain text input control. - -For more info about choosing the right text control, see the [Text controls](text-controls.md) article. - -## Recommendations - -- When you create a rich text box, provide styling buttons and implement their actions. -- Use a font that's consistent with the style of your app. -- Make the height of the text control tall enough to accommodate typical entries. -- Don't let your text input controls grow in height while users type. -- Don't use a multi-line text box when users only need a single line. -- Don't use a rich text control if a plain text control is adequate. - -## Examples - -This rich edit box has a rich text document open in it. The formatting and file buttons aren't part of the rich edit box, but you should provide at least a minimal set of styling buttons and implement their actions. - -![A rich text box with an open document](images/rich-edit-box.png) - -### Create a rich edit box - -> [!div class="checklist"] -> -> - **Important APIs:** [RichEditBox class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.RichEditBox), [Document property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richeditbox.document), [IsReadOnly property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richeditbox.isreadonly), [IsSpellCheckEnabled property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richeditbox.isspellcheckenabled) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the RichEditBox in action](winui3gallery:/item/RichEditBox) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -By default, the RichEditBox supports spell checking. To disable the spell checker, set the [IsSpellCheckEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richeditbox.isspellcheckenabled) property to **false**. For more info, see the [Guidelines for spell checking](text-controls.md) article. - -You use the [Document](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richeditbox.document) property of the RichEditBox to get its content. The content of a RichEditBox is an [ITextDocument](/windows/desktop/api/tom/nn-tom-itextdocument) object, unlike the RichTextBlock control, which uses [Block](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.Block) objects as its content. The ITextDocument interface provides a way to load and save the document to a stream, retrieve text ranges, get the active selection, undo and redo changes, set default formatting attributes, and so on. - -This example shows how to edit, load, and save a Rich Text Format (.rtf) file in a RichEditBox. - -```xaml - - - - - - - - - - - - - -``` - -```csharp -private async void OpenButton_Click(object sender, RoutedEventArgs e) -{ - // Open a text file. - Windows.Storage.Pickers.FileOpenPicker open = - new Windows.Storage.Pickers.FileOpenPicker(); - open.SuggestedStartLocation = - Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary; - open.FileTypeFilter.Add(".rtf"); - - Windows.Storage.StorageFile file = await open.PickSingleFileAsync(); - - if (file != null) - { - try - { - Windows.Storage.Streams.IRandomAccessStream randAccStream = - await file.OpenAsync(Windows.Storage.FileAccessMode.Read); - - // Load the file into the Document property of the RichEditBox. - editor.Document.LoadFromStream(Windows.UI.Text.TextSetOptions.FormatRtf, randAccStream); - } - catch (Exception) - { - ContentDialog errorDialog = new ContentDialog() - { - Title = "File open error", - Content = "Sorry, I couldn't open the file.", - PrimaryButtonText = "Ok" - }; - - await errorDialog.ShowAsync(); - } - } -} - -private async void SaveButton_Click(object sender, RoutedEventArgs e) -{ - Windows.Storage.Pickers.FileSavePicker savePicker = new Windows.Storage.Pickers.FileSavePicker(); - savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary; - - // Dropdown of file types the user can save the file as - savePicker.FileTypeChoices.Add("Rich Text", new List() { ".rtf" }); - - // Default file name if the user does not type one in or select a file to replace - savePicker.SuggestedFileName = "New Document"; - - Windows.Storage.StorageFile file = await savePicker.PickSaveFileAsync(); - if (file != null) - { - // Prevent updates to the remote version of the file until we - // finish making changes and call CompleteUpdatesAsync. - Windows.Storage.CachedFileManager.DeferUpdates(file); - // write to file - Windows.Storage.Streams.IRandomAccessStream randAccStream = - await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite); - - editor.Document.SaveToStream(Windows.UI.Text.TextGetOptions.FormatRtf, randAccStream); - - // Let Windows know that we're finished changing the file so the - // other app can update the remote version of the file. - Windows.Storage.Provider.FileUpdateStatus status = await Windows.Storage.CachedFileManager.CompleteUpdatesAsync(file); - if (status != Windows.Storage.Provider.FileUpdateStatus.Complete) - { - Windows.UI.Popups.MessageDialog errorBox = - new Windows.UI.Popups.MessageDialog("File " + file.Name + " couldn't be saved."); - await errorBox.ShowAsync(); - } - } -} - -private void BoldButton_Click(object sender, RoutedEventArgs e) -{ - Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection; - if (selectedText != null) - { - Windows.UI.Text.ITextCharacterFormat charFormatting = selectedText.CharacterFormat; - charFormatting.Bold = Windows.UI.Text.FormatEffect.Toggle; - selectedText.CharacterFormat = charFormatting; - } -} - -private void ItalicButton_Click(object sender, RoutedEventArgs e) -{ - Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection; - if (selectedText != null) - { - Windows.UI.Text.ITextCharacterFormat charFormatting = selectedText.CharacterFormat; - charFormatting.Italic = Windows.UI.Text.FormatEffect.Toggle; - selectedText.CharacterFormat = charFormatting; - } -} - -private void UnderlineButton_Click(object sender, RoutedEventArgs e) -{ - Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection; - if (selectedText != null) - { - Windows.UI.Text.ITextCharacterFormat charFormatting = selectedText.CharacterFormat; - if (charFormatting.Underline == Windows.UI.Text.UnderlineType.None) - { - charFormatting.Underline = Windows.UI.Text.UnderlineType.Single; - } - else { - charFormatting.Underline = Windows.UI.Text.UnderlineType.None; - } - selectedText.CharacterFormat = charFormatting; - } -} -``` - -### Use a rich edit box for math equations - -The RichEditBox can display and edit math equations using [UnicodeMath](https://www.unicode.org/notes/tn28/UTN28-PlainTextMath-v3.1.pdf). The equations are stored and retrieved in [MathML 3.0](https://www.w3.org/Math/) format. - -By default, the RichEditBox control does not interpret input as math. To enable math mode, call [SetMathMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.text.richedittextdocument.setmathmode) on the [TextDocument](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richeditbox.textdocument) property, passing the value [RichEditMathMode.MathOnly](/windows/windows-app-sdk/api/winrt/microsoft.ui.text.richeditmathmode) (to disable math mode, call [SetMathMode](/windows/windows-app-sdk/api/winrt/microsoft.ui.text.richedittextdocument.setmathmode) but pass in the value [NoMath](/windows/windows-app-sdk/api/winrt/microsoft.ui.text.richeditmathmode)). - -```csharp -richEditBox.TextDocument.SetMathMode(Microsoft.UI.Text.RichEditMathMode.MathOnly); -``` - -This enables UnicodeMath input to be automatically recognized and converted to MathML in real time. For example, entering 4^2 converts to 42, and 1/2 converts to ½. See the [WinUI 3 Gallery app](https://apps.microsoft.com/detail/9p3jfpwwdzrc) for more examples. - -To save the math content of a rich edit box as a MathML string, call [GetMathML](/windows/windows-app-sdk/api/winrt/microsoft.ui.text.richedittextdocument.getmathml). - -``` csharp -richEditBox.TextDocument.GetMathML(out String mathML); -``` - -To set the math content of a rich edit box, call [SetMathML](/windows/windows-app-sdk/api/winrt/microsoft.ui.text.richedittextdocument.setmathml), passing in a MathML string. - -## Choose the right keyboard for your text control - -To help users to enter data using the touch keyboard, or Soft Input Panel (SIP), you can set the input scope of the text control to match the kind of data the user is expected to enter. The default keyboard layout is usually appropriate for working with rich text documents. - -For more info about how to use input scopes, see [Use input scope to change the touch keyboard](../input/use-input-scope-to-change-the-touch-keyboard.md). - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -APIs for this control exist in the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) namespace. - -> [!div class="checklist"] -> -> - **UWP APIs:** [RichEditBox class](/uwp/api/Windows.UI.Xaml.Controls.RichEditBox), [Document property](/uwp/api/windows.ui.xaml.controls.richeditbox.document), [IsReadOnly property](/uwp/api/windows.ui.xaml.controls.richeditbox.isreadonly), [IsSpellCheckEnabled property](/uwp/api/windows.ui.xaml.controls.richeditbox.isspellcheckenabled) -> - [Open the WinUI 2 Gallery app and see the RichEditBox in action](winui2gallery:/item/RichEditBox). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -## Related articles - -- [Text controls](text-controls.md) -- [Guidelines for spell checking](text-controls.md) -- [Guidelines for text input](text-controls.md) -- [TextBox class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.TextBox) -- [PasswordBox class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.PasswordBox) \ No newline at end of file diff --git a/hub/apps/design/controls/rich-text-block.md b/hub/apps/design/controls/rich-text-block.md deleted file mode 100644 index 1af3842e86..0000000000 --- a/hub/apps/design/controls/rich-text-block.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -description: Use a RichTextBlock with RichTextBlockOverflow elements to create advanced text layouts. -title: RichTextBlock -ms.assetid: E4BE4B1B-418E-4075-88F1-22C09DDF8E45 -label: Rich text block -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: article -doc-status: Published -ms.localizationpriority: medium ---- -# Rich text block - -Rich text blocks provide several features for advanced text layout that you can use when you need support for paragraphs, inline UI elements, or complex text layouts. - -## Is this the right control? - -Use a **RichTextBlock** when you need support for multiple paragraphs, multi-column or other complex text layouts, or inline UI elements like images. - -Use a **TextBlock** to display most read-only text in your app. You can use it to display single-line or multi-line text, inline hyperlinks, and text with formatting like bold, italic, or underlined. TextBlock provides a simpler content model, so it's typically easier to use, and it can provide better text rendering performance than RichTextBlock. It's preferred for most app UI text. Although you can put line breaks in the text, TextBlock is designed to display a single paragraph and doesn't support text indentation. - -For more info about choosing the right text control, see the [Text controls](text-controls.md) article. - -## Recommendations - -See Typography and Guidelines for fonts. - -## Create a rich text block - -> [!div class="checklist"] -> -> - **Important APIs:** [RichTextBlock class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.RichTextBlock), [RichTextBlockOverflow class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.RichTextBlockOverflow), [Paragraph class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.Paragraph), [Typography class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.Typography) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the RichTextBlock in action](winui3gallery:/item/RichTextBlock) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -The content property of RichTextBlock is the [Blocks](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richtextblock.blocks) property, which supports paragraph based text via the [Paragraph](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.Paragraph) element. It doesn't have a **Text** property that you can use to easily access the control's text content in your app. However, RichTextBlock provides several unique features that TextBlock doesn't provide. - -RichTextBlock supports: -- Multiple paragraphs. Set the indentation for paragraphs by setting the [TextIndent](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richtextblock.textindent) property. -- Inline UI elements. Use an [InlineUIContainer](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.InlineUIContainer) to display UI elements, such as images, inline with your text. -- Overflow containers. Use [RichTextBlockOverflow](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.RichTextBlockOverflow) elements to create multi-column text layouts. - -### Paragraphs - -You use [Paragraph](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.Paragraph) elements to define the blocks of text to display within a RichTextBlock control. Every RichTextBlock should include at least one Paragraph. - -You can set the indent amount for all paragraphs in a RichTextBlock by setting the [RichTextBlock.TextIndent](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richtextblock.textindent) property. You can override this setting for specific paragraphs in a RichTextBlock by setting the [Paragraph.TextIndent](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.documents.paragraph.textindent) property to a different value. - -```xaml - - First paragraph. - Second paragraph. - Third paragraph. With an inline. - -``` - -### Inline UI elements - -The [InlineUIContainer](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.InlineUIContainer) class lets you embed any UIElement inline with your text. A common scenario is to place an Image inline with your text, but you can also use interactive elements, like a Button or CheckBox. - -If you want to embed more than one element inline in the same position, consider using a panel as the single InlineUIContainer child, and then place the multiple elements within that panel. - -This example shows how to use an InlineUIContainer to insert an image into a RichTextBlock. - -```xaml - - - This is an inline image. - - - - Mauris auctor tincidunt auctor. - - -``` - -## Overflow containers - -You can use a RichTextBlock with [RichTextBlockOverflow](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.RichTextBlockOverflow) elements to create multi-column or other advanced page layouts. The content for a RichTextBlockOverflow element always comes from a RichTextBlock element. You link RichTextBlockOverflow elements by setting them as the OverflowContentTarget of a RichTextBlock or another RichTextBlockOverflow. - -Here's a simple example that creates a two column layout. See the Examples section for a more complex example. - -```xaml - - - - - - - - Proin ac metus at quam luctus ultricies. - - - - -``` - -## Formatting text - -Although the RichTextBlock stores plain text, you can apply various formatting options to customize how the text is rendered in your app. You can set standard control properties like FontFamily, FontSize, FontStyle, Foreground, and CharacterSpacing to change the look of the text. You can also use inline text elements and Typography attached properties to format your text. These options affect only how the RichTextBlock displays the text locally, so if you copy and paste the text into a rich text control, for example, no formatting is applied. - -### Inline elements - -The [Microsoft.UI.Xaml.Documents](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents) namespace provides a variety of inline text elements that you can use to format your text, such as Bold, Italic, Run, Span, and LineBreak. A typical way to apply formatting to sections of text is to place the text in a Run or Span element, and then set properties on that element. - -Here's a Paragraph with the first phrase shown in bold, blue, 16pt text. - -```xaml - - Lorem ipsum dolor sit amet - , consectetur adipiscing elit. - -``` - -### Typography - -The attached properties of the [Typography](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Documents.Typography) class provide access to a set of Microsoft OpenType typography properties. You can set these attached properties either on the RichTextBlock, or on individual inline text elements, as shown here. - -```xaml - - - Lorem ipsum dolor sit amet - , consectetur adipiscing elit. - - -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -APIs for this control exist in the [Windows.UI.Xaml.Controls](/uwp/api/Windows.UI.Xaml.Controls) namespace. - -> [!div class="checklist"] -> -> - **UWP APIs:** [RichTextBlock class](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock), [RichTextBlockOverflow class](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlockOverflow), [Paragraph class](/uwp/api/Windows.UI.Xaml.Documents.Paragraph), [Typography class](/uwp/api/Windows.UI.Xaml.Documents.Typography) -> - [Open the WinUI 2 Gallery app and see the RichTextBox in action](winui2gallery:/item/RichTextBox). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -We recommend using the latest [WinUI 2](/windows/uwp/get-started/winui2/) to get the most current styles and templates for all controls. WinUI 2.2 or later includes a new template for this control that uses rounded corners. For more info, see [Corner radius](../style/rounded-corner.md). - -## Related articles - -[Text controls](text-controls.md) - -**For designers** -- [Guidelines for spell checking](text-controls.md) -- [Adding search](/previous-versions/windows/apps/hh465231(v=win.10)) -- [Guidelines for text input](text-controls.md) - -**For developers (XAML)** -- [TextBox class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.TextBox) -- [PasswordBox class](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.PasswordBox) - -**For developers (other)** -- [String.Length property](/dotnet/api/system.string.length) \ No newline at end of file diff --git a/hub/apps/design/controls/scroll-controls.md b/hub/apps/design/controls/scroll-controls.md deleted file mode 100644 index 2aa7034870..0000000000 --- a/hub/apps/design/controls/scroll-controls.md +++ /dev/null @@ -1,549 +0,0 @@ ---- -description: Panning and scrolling allows users to reach content that extends beyond the bounds of the screen. -title: Scroll viewer controls -ms.assetid: 1BFF0E81-BF9C-43F7-95F6-EFC6BDD5EC31 -label: Scrollbars -template: detail.hbs -ms.date: 02/26/2025 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium ---- -# Scroll viewer controls - -When there is more UI content to show than you can fit in an area, use a scroll viewer control. - -Scroll viewers enable content to extend beyond the bounds of the viewport (visible area). Users reach this content by manipulating the scroll viewer surface through touch, mousewheel, keyboard, or a gamepad, or by using the mouse or pen cursor to interact with the scroll viewer's scrollbar. - -Depending on the situation, the scroll viewer's scrollbar uses two different visualizations, shown in the following illustration: the panning indicator (left) and the traditional scrollbar thumb (right). - -:::row::: - :::column span=""::: - :::image type="content" source="images/scrollbar-panning-1.png" alt-text="A screenshot that illustrates a panning scrollbar, a 2 pixel wide vertical line at the right edge of the content."::: - :::column-end::: - :::column span=""::: - :::image type="content" source="images/scrollBar-standard-1.png" alt-text="A screenshot that illustrates the standard scrollbar, a 6 pixel wide vertical line with an up arrow button at the top, and a down arrow at the bottom."::: - :::column-end::: -:::row-end::: - -> [!IMPORTANT] -> WinUI 3 has two different scroll viewer controls available: [ScrollViewer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollviewer) and [ScrollView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview). Whenever we speak generically about _scroll viewer_ controls, the information applies to both controls. - -## Scrolling, panning, and zooming - -Use a scroll viewer control to allow _scrolling_, _panning_, and _zooming_ of your content. - -- _Scrolling_: Moving the content vertically or horizontally by dragging the scrollbar thumb or using the scroll wheel on a mouse. -- _Panning_: Moving content vertically or horizontally using touch or pen input. - - For more info about scrolling and panning, see [Guidelines for panning](../input/guidelines-for-panning.md). -- _Zooming_: Optically increasing or decreasing the scale of the content. - - For more info about zooming, see [Optical zoom and resizing](../input/guidelines-for-optical-zoom.md). - -The scrollbar is conscious of the user's input method and uses it to determine which visualization to display. - -* When the region is scrolled without manipulating the scrollbar directly, for example, by touch, the panning indicator appears, displaying the current scroll position. -* When the mouse or pen cursor moves over the panning indicator, it morphs into the traditional scrollbar. Dragging the scrollbar thumb manipulates the scrolling region. - -:::image type="content" source="images/conscious-scroll.gif" alt-text="An animation that shows the scroll bar transform from the narrow panning indicator to the traditional thumb when the cursor moves over it."::: - -> [!NOTE] -> When the scrollbar is visible it is overlaid as 16px on top of the content inside your ScrollViewer. In order to ensure good UX design you will want to ensure that no interactive content is obscured by this overlay. Additionally if you would prefer not to have UX overlap, leave 16px of padding on the edge of the viewport to allow for the scrollbar. - -### Viewport and extent - -A scroll viewer is composed of two main regions that are important to understanding its functionality. The area that includes all of the scrollable content, both hidden and visible, is the _extent_. The visible area of the control where the content is shown is the _viewport_. - -:::image type="content" source="images/scrolling/extent-viewport.png" alt-text="A block of text that extends beyond the viewport, or visible area of the control."::: - -Various APIs are available that let you get the height and width of these regions, as well as the _scrollable_ height and width, which is the difference between the extent size and the viewport size. - -## Recommendations - -- Whenever possible, design for vertical scrolling rather than horizontal. -- Use one-axis panning for content regions that extend beyond one viewport boundary (vertical or horizontal). Use two-axis panning for content regions that extend beyond both viewport boundaries (vertical and horizontal). -- Use the built-in scroll functionality in the items view, list view, grid view, combo box, list box, text input box, and hub controls. With those controls, if there are too many items to show all at once, the user is able to scroll either horizontally or vertically over the list of items. -- If you want the user to pan in both directions around a larger area, and possibly to zoom, too, for example, if you want to allow the user to pan and zoom over a full-sized image (rather than an image sized to fit the screen) then place the image inside a scroll viewer. -- If the user will scroll through a long passage of text, configure the scroll viewer to scroll vertically only. -- Use a scroll viewer to contain one object only. Note that the one object can be a layout panel, in turn containing any number of objects of its own. -- If you need to handle pointer events for a [UIElement](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.UIElement) in a scrollable view (such as a ScrollViewer or ListView), you must explicitly disable support for manipulation events on the element in the view by calling [UIElement.CancelDirectManipulation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.canceldirectmanipulations). To re-enable manipulation events in the view, call [UIElement.TryStartDirectManipulation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.trystartdirectmanipulation). - -## Create a scroll viewer - -> [!div class="checklist"] -> -> - **Important APIs:** [ScrollView class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview), [ScrollViewer class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollviewer), [ScrollBar class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.scrollbar) - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see the ScrollView in action](winui3gallery:/item/ScrollView) -> -> [Open the WinUI 3 Gallery app and see the ScrollViewer in action](winui3gallery:/item/ScrollViewer) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -A scroll viewer control can be used to make content scrollable by explicitly wrapping the content in the scroll viewer, or by placing a scroll viewer in the control template of a content control. - -### Scroll viewer in a control template - -It's typical for a scroll viewer control to exist as a composite part of other controls. A scroll viewer part will display a viewport along with scrollbars only when the host control's layout space is being constrained smaller than the expanded content size. - -[ItemsView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemsview) includes a `ScrollView` control in its template. You can access the `ScrollView` though the [ItemsView.ScrollView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemsview.scrollview) property. - -[ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) and [GridView](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.GridView) templates always include a `ScrollViewer`. [TextBox](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.TextBox) and [RichEditBox](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.RichEditBox) also include a `ScrollViewer` in their templates. To influence some of the behavior and properties of the built in `ScrollViewer` part, `ScrollViewer` defines a number of XAML attached properties that can be set in styles and used in template bindings. For more info about attached properties, see [Attached properties overview](/windows/uwp/xaml-platform/attached-properties-overview). - -### Set scrollable content - -Content inside of a scroll viewer becomes scrollable when it's larger than the scroll viewer's viewport - -This example sets a `Rectangle` as the content of the `ScrollView` control. The user only sees a 500x400 portion of that rectangle and can scroll to see the rest of it. - -### [ScrollView](#tab/scrollview) - -```xaml - - - - - - - - - - - - -``` - -### [ScrollViewer](#tab/scrollviewer) - -```xaml - - - - - - - - - - - - -``` - ---- - - -## Layout - -In the previous example, the size of the rectangle is explicitly set to be larger than the scroll viewer. In cases were the scroll viewer content is allowed to grow naturally, like in a list or text block, you can configure the scroll viewer to let its content (the _extent_) expand vertically, horizontally, both, or neither. - -For example, this text block will grow horizontally until its parent container constrains it, then wrap the text and grow vertically. - -```xaml - -``` - -When the text block is wrapped in a scroll viewer, the scroll viewer constrains its horizontal and vertical growth. - -:::row::: - :::column span=""::: - _Vertical_ means that the content is constrained horizontally, but can grow vertically beyond the viewport bounds, and the user can scroll the content up and down. - :::column-end::: - :::column span=""::: - :::image type="content" source="images/scrolling/scrollview-orientation-vertical.png" alt-text="A block of text that extends vertically beyond the viewport, or visible area of the control, with a vertical scroll bar shown."::: - :::column-end::: -:::row-end::: -:::row::: - :::column span=""::: - _Horizontal_ means that the content is constrained vertically, but can grow horizontally beyond the viewport bounds, and the user can scroll the content left and right. - :::column-end::: - :::column span=""::: - :::image type="content" source="images/scrolling/scrollview-orientation-horizontal.png" alt-text="A block of text that extends horizontally beyond the viewport, or visible area of the control, with a horizontal scroll bar shown."::: - :::column-end::: -:::row-end::: - -### Scrollbar visibility - -The [ScrollViewer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollviewer) and [ScrollView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview) controls use slightly different means to configure the horizontal and vertical scrolling of content. - -- In the [ScrollViewer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollviewer) control, the [VerticalScrollBarVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollviewer.verticalscrollbarvisibility) and [HorizontalScrollBarVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollviewer.horizontalscrollbarvisibility) properties control both the visibility of the scrollbars and whether scrolling in a particular direction is allowed. When a property is set to `Disabled`, content can't be scrolled in that direction by user interaction. - - The defaults are: `VerticalScrollBarVisibility="Auto"`, `HorizontalScrollBarVisibility="Disabled"` -- In the [ScrollView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview) control, the [VerticalScrollBarVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview.verticalscrollbarvisibility) and [HorizontalScrollBarVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview.horizontalscrollbarvisibility) properties control only the visibility of the scrollbars. - - The defaults are: `VerticalScrollBarVisibility="Auto"`, `HorizontalScrollBarVisibility="Auto"` - -This table describes the visibility options for these properties. - -| Value | Description | -|--|--| -| Auto | A scrollbar appears only when the viewport cannot display all of the content. | -| Disabled (ScrollViewer only) | A scrollbar does not appear even when the viewport cannot display all of the content. Scrolling by user interaction is disabled. (Programmatic scrolling is still possible.) | -| Hidden | A scrollbar does not appear even when the viewport cannot display all of the content. Scrolling is still enabled, and can occur through touch, keyboard, or mouse wheel interaction. | -| Visible | A scrollbar always appears. (In current UX designs, the scrollbar appears only when the mouse cursor is over it unless the viewport cannot display all of the content. ) | - -(ScrollViewer uses the [ScrollBarVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollbarvisibility) enum; ScrollView uses the [ScrollingScrollBarVisibility](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollingscrollbarvisibility) enum.) - -### Orientation - -The ScrollView control has a [ContentOrientation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview.contentorientation) property that let's you control the layout of content. This property determines how content can grow when it's not explicitly constrained. If `Height` and `Width` are explicitly set on the content, `ContentOrientation` has no effect. - -This table shows the `ContentOrientation` options for [ScrollView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollview) and the equivalent settings for [ScrollViewer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.scrollviewer). - -| Orientation | ScrollView | ScrollViewer | -|--|--|--| -| Vertical | `ContentOrientation="Vertical"` | `VerticalScrollBarVisibility="[Auto][Visible][Hidden]"`
`HorizontalScrollBarVisibility="Disabled"` | -| Horizontal | `ContentOrientation="Horizontal"` | `VerticalScrollBarVisibility="Disabled"`
`HorizontalScrollBarVisibility="[Auto][Visible][Hidden]"` | -| Both | `ContentOrientation="Both"` | `VerticalScrollBarVisibility="[Auto][Visible][Hidden]"`
`HorizontalScrollBarVisibility="[Auto][Visible][Hidden]"` | -| None | `ContentOrientation="None"`
| `VerticalScrollBarVisibility="Disabled"`
`HorizontalScrollBarVisibility="Disabled"` | - -### Vertical layout - -By default, a scroll viewer's content layout (orientation) is vertical. - -In this example, an [ItemsRepeater](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemsrepeater) is used as the ScrollView's `Content`. The [UniformGridLayout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.uniformgridlayout) for the ItemsRepeater positions the items horizontally in a row until it runs out of space (500px in this example), then positions the next item on the next row. The ItemsRepeater may be taller than the 400px that the user can see, but the user can then scroll the content vertically. - -### [ScrollView](#tab/scrollview) - -The default `ContentOrientation` value is `Vertical`, so no changes are needed on the ScrollView. - -```xaml - - - - - - - -``` - -### [ScrollViewer](#tab/scrollviewer) - -The default scrolling configuration is vertical, so no changes are needed on the ScrollViewer. - -```xaml - - - - - - - -``` - ---- - -### Horizontal layout - -In this example the content is a `StackPanel` that is laying out its items horizontally. The scroll viewer configuration is changed to support horizontal scrolling and disable vertical scrolling. - -### [ScrollView](#tab/scrollview) - -The `ScrollView`'s `ContentOrientation` property is set to `Horizontal` to allow the content to grow horizontally as much as needed. - -```xaml - - - - - diff --git a/hub/apps/design/input/code/share_data/cs/MainPage.xaml.cs b/hub/apps/design/input/code/share_data/cs/MainPage.xaml.cs deleted file mode 100644 index ffbd4b7101..0000000000 --- a/hub/apps/design/input/code/share_data/cs/MainPage.xaml.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; -using Windows.ApplicationModel.DataTransfer; - - -// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 - -namespace ShareData -{ - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// - public sealed partial class MainPage : Page - { - // - public MainPage() - { - this.InitializeComponent(); - } - - private void Share_Click(object s, RoutedEventArgs e) - { - // - DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView(); - dataTransferManager.DataRequested += DataTransferManager_DataRequested; - // - - - // - DataTransferManager.ShowShareUI(); - // - } - - void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args) - { - // - DataRequest request = args.Request; - // - - // - request.Data.SetText("Hello world!"); - // - - // - request.Data.Properties.Title = "Share Example"; - request.Data.Properties.Description = "A demonstration on how to share"; - // - } - } -} diff --git a/hub/apps/design/input/code/share_data/cs/Package.appxmanifest b/hub/apps/design/input/code/share_data/cs/Package.appxmanifest deleted file mode 100644 index d0fb7b043b..0000000000 --- a/hub/apps/design/input/code/share_data/cs/Package.appxmanifest +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - ShareData - alkoren - Assets\StoreLogo.png - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/hub/apps/design/input/code/share_data/cs/Properties/AssemblyInfo.cs b/hub/apps/design/input/code/share_data/cs/Properties/AssemblyInfo.cs deleted file mode 100644 index 838f5020ec..0000000000 --- a/hub/apps/design/input/code/share_data/cs/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ShareData")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ShareData")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: ComVisible(false)] \ No newline at end of file diff --git a/hub/apps/design/input/code/share_data/cs/Properties/Default.rd.xml b/hub/apps/design/input/code/share_data/cs/Properties/Default.rd.xml deleted file mode 100644 index 80a960ce32..0000000000 --- a/hub/apps/design/input/code/share_data/cs/Properties/Default.rd.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/hub/apps/design/input/code/share_data/cs/Service References/Application Insights/ConnectedService.json b/hub/apps/design/input/code/share_data/cs/Service References/Application Insights/ConnectedService.json deleted file mode 100644 index 58edd125e0..0000000000 --- a/hub/apps/design/input/code/share_data/cs/Service References/Application Insights/ConnectedService.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider", - "Version": "3.3.0.0", - "GettingStartedDocument": { - "Uri": "http://go.microsoft.com/fwlink/?LinkID=613412" - } -} \ No newline at end of file diff --git a/hub/apps/design/input/code/share_data/cs/ShareData.csproj b/hub/apps/design/input/code/share_data/cs/ShareData.csproj deleted file mode 100644 index 935dc53aa4..0000000000 --- a/hub/apps/design/input/code/share_data/cs/ShareData.csproj +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Debug - x86 - {05AF1DE7-427A-43C6-A28A-C8AA8459184F} - AppContainerExe - Properties - ShareData - ShareData - en-US - UAP - 10.0.10240.0 - 10.0.10240.0 - 14 - true - 512 - {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - ShareData_TemporaryKey.pfx - - - - true - bin\ARM\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP - ;2008 - full - ARM - false - prompt - true - - - bin\ARM\Release\ - TRACE;NETFX_CORE;WINDOWS_UAP - true - ;2008 - pdbonly - ARM - false - prompt - true - true - - - true - bin\x64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP - ;2008 - full - x64 - false - prompt - true - - - bin\x64\Release\ - TRACE;NETFX_CORE;WINDOWS_UAP - true - ;2008 - pdbonly - x64 - false - prompt - true - true - - - true - bin\x86\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP - ;2008 - full - x86 - false - prompt - true - - - bin\x86\Release\ - TRACE;NETFX_CORE;WINDOWS_UAP - true - ;2008 - pdbonly - x86 - false - prompt - true - true - - - - - - - - App.xaml - - - MainPage.xaml - - - - - - Designer - - - - - - - - - - - - - - - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - - - - - 14.0 - - - - \ No newline at end of file diff --git a/hub/apps/design/input/code/share_data/cs/share_data.csproj b/hub/apps/design/input/code/share_data/cs/share_data.csproj deleted file mode 100644 index 935dc53aa4..0000000000 --- a/hub/apps/design/input/code/share_data/cs/share_data.csproj +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Debug - x86 - {05AF1DE7-427A-43C6-A28A-C8AA8459184F} - AppContainerExe - Properties - ShareData - ShareData - en-US - UAP - 10.0.10240.0 - 10.0.10240.0 - 14 - true - 512 - {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - ShareData_TemporaryKey.pfx - - - - true - bin\ARM\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP - ;2008 - full - ARM - false - prompt - true - - - bin\ARM\Release\ - TRACE;NETFX_CORE;WINDOWS_UAP - true - ;2008 - pdbonly - ARM - false - prompt - true - true - - - true - bin\x64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP - ;2008 - full - x64 - false - prompt - true - - - bin\x64\Release\ - TRACE;NETFX_CORE;WINDOWS_UAP - true - ;2008 - pdbonly - x64 - false - prompt - true - true - - - true - bin\x86\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP - ;2008 - full - x86 - false - prompt - true - - - bin\x86\Release\ - TRACE;NETFX_CORE;WINDOWS_UAP - true - ;2008 - pdbonly - x86 - false - prompt - true - true - - - - - - - - App.xaml - - - MainPage.xaml - - - - - - Designer - - - - - - - - - - - - - - - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - - - - - 14.0 - - - - \ No newline at end of file diff --git a/hub/apps/design/input/convert-ink-to-text.md b/hub/apps/design/input/convert-ink-to-text.md deleted file mode 100644 index f454864505..0000000000 --- a/hub/apps/design/input/convert-ink-to-text.md +++ /dev/null @@ -1,880 +0,0 @@ ---- -description: Use handwriting recognition and ink analysis to recognize Windows Ink strokes as text and shapes. -title: Recognize Windows Ink strokes as text and shapes -ms.assetid: C2F3F3CE-737F-4652-98B7-5278A462F9D3 -label: Recognize Windows Ink strokes as text -template: detail.hbs -keywords: Windows Ink, Windows Inking, DirectInk, InkPresenter, InkCanvas, handwriting recognition, user interaction, input -ms.date: 09/24/2020 -ms.topic: how-to -ms.localizationpriority: medium ---- -# Recognize Windows Ink strokes as text and shapes - -Convert ink strokes to text and shapes using the recognition capabilities built into Windows Ink. - -> **Important APIs**: [**InkCanvas**](/uwp/api/Windows.UI.Xaml.Controls.InkCanvas), [**Windows.UI.Input.Inking**](/uwp/api/Windows.UI.Input.Inking) - -## Free-form recognition with ink analysis - -Here, we demonstrate how to use the Windows Ink analysis engine ([Windows.UI.Input.Inking.Analysis](/uwp/api/windows.ui.input.inking.analysis)) to classify, analyze, and recognize a set of free-form strokes on an [**InkCanvas**](/uwp/api/Windows.UI.Xaml.Controls.InkCanvas) as either text or shapes. (In addition to text and shape recognition, ink analysis can also be used to recognize document structure, bullet lists, and generic drawings.) - -> [!NOTE] -> For basic, single-line, plain text scenarios such as form input, see [Constrained handwriting recognition](#constrained-handwriting-recognition) later in this topic. - -In this example, recognition is initiated when the user clicks a button to indicate they are finished drawing. - -**Download this sample from [Ink analysis sample (basic)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-ink-analysis-basic.zip)** - -1. First, we set up the UI (MainPage.xaml). - - The UI includes a "Recognize" button, an [**InkCanvas**](/uwp/api/Windows.UI.Xaml.Controls.InkCanvas), and a standard [**Canvas**](/uwp/api/windows.ui.xaml.controls.canvas). When the "Recognize" button is pressed, all ink strokes on the ink canvas are analyzed and (if recognized) corresponding shapes and text are drawn on the standard canvas. The original ink strokes are then deleted from the ink canvas. - - ```xaml - - - - - - - - - - - - - - -``` - -### Listen for pointer events - -In most cases, we recommend that you get pointer info through the [**PointerRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.PointerRoutedEventArgs) of the event handler. - -If the event argument doesn't expose the pointer details required, you can get access to extended [**PointerPoint**](/uwp/api/Windows.UI.Input.PointerPoint) info exposed through the [**GetCurrentPoint**](/uwp/api/windows.ui.xaml.input.pointerroutedeventargs.getcurrentpoint) and [**GetIntermediatePoints**](/uwp/api/windows.ui.xaml.input.pointerroutedeventargs.getintermediatepoints) methods of [**PointerRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.PointerRoutedEventArgs). - -The following code sets up the global dictionary object for tracking each active pointer, and identifies the various pointer event listeners for the target object. - -```CSharp -// Dictionary to maintain information about each active pointer. -// An entry is added during PointerPressed/PointerEntered events and removed -// during PointerReleased/PointerCaptureLost/PointerCanceled/PointerExited events. -Dictionary pointers; - -public MainPage() -{ - this.InitializeComponent(); - - // Initialize the dictionary. - pointers = new Dictionary(); - - // Declare the pointer event handlers. - Target.PointerPressed += - new PointerEventHandler(Target_PointerPressed); - Target.PointerEntered += - new PointerEventHandler(Target_PointerEntered); - Target.PointerReleased += - new PointerEventHandler(Target_PointerReleased); - Target.PointerExited += - new PointerEventHandler(Target_PointerExited); - Target.PointerCanceled += - new PointerEventHandler(Target_PointerCanceled); - Target.PointerCaptureLost += - new PointerEventHandler(Target_PointerCaptureLost); - Target.PointerMoved += - new PointerEventHandler(Target_PointerMoved); - Target.PointerWheelChanged += - new PointerEventHandler(Target_PointerWheelChanged); - - buttonClear.Click += - new RoutedEventHandler(ButtonClear_Click); -} -``` - -### Handle pointer events - -Next, we use UI feedback to demonstrate basic pointer event handlers. - -- This handler manages the [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) event. We add the event to the event log, add the pointer to the active pointer dictionary, and display the pointer details. - - > [!NOTE] - > [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) and [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased) events do not always occur in pairs. Your app should listen for and handle any event that might conclude a pointer down (such as [**PointerExited**](/uwp/api/windows.ui.xaml.uielement.pointerexited), [**PointerCanceled**](/uwp/api/windows.ui.xaml.uielement.pointercanceled), and [**PointerCaptureLost**](/uwp/api/windows.ui.xaml.uielement.pointercapturelost)). -   - -```csharp -/// -/// The pointer pressed event handler. -/// PointerPressed and PointerReleased don't always occur in pairs. -/// Your app should listen for and handle any event that can conclude -/// a pointer down (PointerExited, PointerCanceled, PointerCaptureLost). -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -void Target_PointerPressed(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Update event log. - UpdateEventLog("Down: " + ptrPt.PointerId); - - // Lock the pointer to the target. - Target.CapturePointer(e.Pointer); - - // Update event log. - UpdateEventLog("Pointer captured: " + ptrPt.PointerId); - - // Check if pointer exists in dictionary (ie, enter occurred prior to press). - if (!pointers.ContainsKey(ptrPt.PointerId)) - { - // Add contact to dictionary. - pointers[ptrPt.PointerId] = e.Pointer; - } - - // Change background color of target when pointer contact detected. - Target.Fill = new SolidColorBrush(Windows.UI.Colors.Green); - - // Display pointer details. - CreateInfoPop(ptrPt); -} -``` - -- This handler manages the [**PointerEntered**](/uwp/api/windows.ui.xaml.uielement.pointerentered) event. We add the event to the event log, add the pointer to the pointer collection, and display the pointer details. - -```csharp -/// -/// The pointer entered event handler. -/// We do not capture the pointer on this event. -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -private void Target_PointerEntered(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Update event log. - UpdateEventLog("Entered: " + ptrPt.PointerId); - - // Check if pointer already exists (if enter occurred prior to down). - if (!pointers.ContainsKey(ptrPt.PointerId)) - { - // Add contact to dictionary. - pointers[ptrPt.PointerId] = e.Pointer; - } - - if (pointers.Count == 0) - { - // Change background color of target when pointer contact detected. - Target.Fill = new SolidColorBrush(Windows.UI.Colors.Blue); - } - - // Display pointer details. - CreateInfoPop(ptrPt); -} -``` - -- This handler manages the [**PointerMoved**](/uwp/api/windows.ui.xaml.uielement.pointermoved) event. We add the event to the event log and update the pointer details. - - > [!Important] - > Mouse input is associated with a single pointer assigned when mouse input is first detected. Clicking a mouse button (left, wheel, or right) creates a secondary association between the pointer and that button through the [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) event. The [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased) event is fired only when that same mouse button is released (no other button can be associated with the pointer until this event is complete). Because of this exclusive association, other mouse button clicks are routed through the [**PointerMoved**](/uwp/api/windows.ui.xaml.uielement.pointermoved) event.   - -```csharp -/// -/// The pointer moved event handler. -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -private void Target_PointerMoved(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Multiple, simultaneous mouse button inputs are processed here. - // Mouse input is associated with a single pointer assigned when - // mouse input is first detected. - // Clicking additional mouse buttons (left, wheel, or right) during - // the interaction creates secondary associations between those buttons - // and the pointer through the pointer pressed event. - // The pointer released event is fired only when the last mouse button - // associated with the interaction (not necessarily the initial button) - // is released. - // Because of this exclusive association, other mouse button clicks are - // routed through the pointer move event. - if (ptrPt.PointerDevice.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse) - { - if (ptrPt.Properties.IsLeftButtonPressed) - { - UpdateEventLog("Left button: " + ptrPt.PointerId); - } - if (ptrPt.Properties.IsMiddleButtonPressed) - { - UpdateEventLog("Wheel button: " + ptrPt.PointerId); - } - if (ptrPt.Properties.IsRightButtonPressed) - { - UpdateEventLog("Right button: " + ptrPt.PointerId); - } - } - - // Display pointer details. - UpdateInfoPop(ptrPt); -} -``` - -- This handler manages the [**PointerWheelChanged**](/uwp/api/windows.ui.xaml.uielement.pointerwheelchanged) event. We add the event to the event log, add the pointer to the pointer array (if necessary), and display the pointer details. - -```csharp -/// -/// The pointer wheel event handler. -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -private void Target_PointerWheelChanged(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Update event log. - UpdateEventLog("Mouse wheel: " + ptrPt.PointerId); - - // Check if pointer already exists (for example, enter occurred prior to wheel). - if (!pointers.ContainsKey(ptrPt.PointerId)) - { - // Add contact to dictionary. - pointers[ptrPt.PointerId] = e.Pointer; - } - - // Display pointer details. - CreateInfoPop(ptrPt); -} -``` - -- This handler manages the [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased) event where contact with the digitizer is terminated. We add the event to the event log, remove the pointer from the pointer collection, and update the pointer details. - -```csharp -/// -/// The pointer released event handler. -/// PointerPressed and PointerReleased don't always occur in pairs. -/// Your app should listen for and handle any event that can conclude -/// a pointer down (PointerExited, PointerCanceled, PointerCaptureLost). -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -void Target_PointerReleased(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Update event log. - UpdateEventLog("Up: " + ptrPt.PointerId); - - // If event source is mouse or touchpad and the pointer is still - // over the target, retain pointer and pointer details. - // Return without removing pointer from pointers dictionary. - // For this example, we assume a maximum of one mouse pointer. - if (ptrPt.PointerDevice.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Mouse) - { - // Update target UI. - Target.Fill = new SolidColorBrush(Windows.UI.Colors.Red); - - DestroyInfoPop(ptrPt); - - // Remove contact from dictionary. - if (pointers.ContainsKey(ptrPt.PointerId)) - { - pointers[ptrPt.PointerId] = null; - pointers.Remove(ptrPt.PointerId); - } - - // Release the pointer from the target. - Target.ReleasePointerCapture(e.Pointer); - - // Update event log. - UpdateEventLog("Pointer released: " + ptrPt.PointerId); - } - else - { - Target.Fill = new SolidColorBrush(Windows.UI.Colors.Blue); - } -} -``` - -- This handler manages the [**PointerExited**](/uwp/api/windows.ui.xaml.uielement.pointerexited) event (when contact with the digitizer is maintained). We add the event to the event log, remove the pointer from the pointer array, and update the pointer details. - -```csharp -/// -/// The pointer exited event handler. -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -private void Target_PointerExited(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Update event log. - UpdateEventLog("Pointer exited: " + ptrPt.PointerId); - - // Remove contact from dictionary. - if (pointers.ContainsKey(ptrPt.PointerId)) - { - pointers[ptrPt.PointerId] = null; - pointers.Remove(ptrPt.PointerId); - } - - if (pointers.Count == 0) - { - Target.Fill = new SolidColorBrush(Windows.UI.Colors.Red); - } - - // Update the UI and pointer details. - DestroyInfoPop(ptrPt); -} -``` - -- This handler manages the [**PointerCanceled**](/uwp/api/windows.ui.xaml.uielement.pointercanceled) event. We add the event to the event log, remove the pointer from the pointer array, and update the pointer details. - -```csharp -/// -/// The pointer canceled event handler. -/// Fires for various reasons, including: -/// - Touch contact canceled by pen coming into range of the surface. -/// - The device doesn't report an active contact for more than 100ms. -/// - The desktop is locked or the user logged off. -/// - The number of simultaneous contacts exceeded the number supported by the device. -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -private void Target_PointerCanceled(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Update event log. - UpdateEventLog("Pointer canceled: " + ptrPt.PointerId); - - // Remove contact from dictionary. - if (pointers.ContainsKey(ptrPt.PointerId)) - { - pointers[ptrPt.PointerId] = null; - pointers.Remove(ptrPt.PointerId); - } - - if (pointers.Count == 0) - { - Target.Fill = new SolidColorBrush(Windows.UI.Colors.Black); - } - - DestroyInfoPop(ptrPt); -} -``` - -- This handler manages the [**PointerCaptureLost**](/uwp/api/windows.ui.xaml.uielement.pointercapturelost) event. We add the event to the event log, remove the pointer from the pointer array, and update the pointer details. - - > [!NOTE] - > [**PointerCaptureLost**](/uwp/api/windows.ui.xaml.uielement.pointercapturelost) can occur instead of [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased). Pointer capture can be lost for various reasons including user interaction, programmatic capture of another pointer, calling [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased).   - -```csharp -/// -/// The pointer capture lost event handler. -/// Fires for various reasons, including: -/// - User interactions -/// - Programmatic capture of another pointer -/// - Captured pointer was deliberately released -// PointerCaptureLost can fire instead of PointerReleased. -/// -/// Source of the pointer event. -/// Event args for the pointer routed event. -private void Target_PointerCaptureLost(object sender, PointerRoutedEventArgs e) -{ - // Prevent most handlers along the event route from handling the same event again. - e.Handled = true; - - PointerPoint ptrPt = e.GetCurrentPoint(Target); - - // Update event log. - UpdateEventLog("Pointer capture lost: " + ptrPt.PointerId); - - if (pointers.Count == 0) - { - Target.Fill = new SolidColorBrush(Windows.UI.Colors.Black); - } - - // Remove contact from dictionary. - if (pointers.ContainsKey(ptrPt.PointerId)) - { - pointers[ptrPt.PointerId] = null; - pointers.Remove(ptrPt.PointerId); - } - - DestroyInfoPop(ptrPt); -} -``` - -### Get pointer properties - -As stated earlier, you must get most extended pointer info from a [**Windows.UI.Input.PointerPoint**](/uwp/api/Windows.UI.Input.PointerPoint) object obtained through the [**GetCurrentPoint**](/uwp/api/windows.ui.xaml.input.pointerroutedeventargs.getcurrentpoint) and [**GetIntermediatePoints**](/uwp/api/windows.ui.xaml.input.pointerroutedeventargs.getintermediatepoints) methods of [**PointerRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.PointerRoutedEventArgs). The following code snippets show how. - -- First, we create a new [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) for each pointer. - -```csharp -/// -/// Create the pointer info popup. -/// -/// Reference to the input pointer. -void CreateInfoPop(PointerPoint ptrPt) -{ - TextBlock pointerDetails = new TextBlock(); - pointerDetails.Name = ptrPt.PointerId.ToString(); - pointerDetails.Foreground = new SolidColorBrush(Windows.UI.Colors.White); - pointerDetails.Text = QueryPointer(ptrPt); - - TranslateTransform x = new TranslateTransform(); - x.X = ptrPt.Position.X + 20; - x.Y = ptrPt.Position.Y + 20; - pointerDetails.RenderTransform = x; - - Container.Children.Add(pointerDetails); -} -``` - -- Then we provide a way to update the pointer info in an existing [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) associated with that pointer. - -```csharp -/// -/// Update the pointer info popup. -/// -/// Reference to the input pointer. -void UpdateInfoPop(PointerPoint ptrPt) -{ - foreach (var pointerDetails in Container.Children) - { - if (pointerDetails.GetType().ToString() == "Windows.UI.Xaml.Controls.TextBlock") - { - TextBlock textBlock = (TextBlock)pointerDetails; - if (textBlock.Name == ptrPt.PointerId.ToString()) - { - // To get pointer location details, we need extended pointer info. - // We get the pointer info through the getCurrentPoint method - // of the event argument. - TranslateTransform x = new TranslateTransform(); - x.X = ptrPt.Position.X + 20; - x.Y = ptrPt.Position.Y + 20; - pointerDetails.RenderTransform = x; - textBlock.Text = QueryPointer(ptrPt); - } - } - } -} -``` - -- Finally, we query various pointer properties. - -```csharp -/// -/// Get pointer details. -/// -/// Reference to the input pointer. -/// A string composed of pointer details. -String QueryPointer(PointerPoint ptrPt) -{ - String details = ""; - - switch (ptrPt.PointerDevice.PointerDeviceType) - { - case Windows.Devices.Input.PointerDeviceType.Mouse: - details += "\nPointer type: mouse"; - break; - case Windows.Devices.Input.PointerDeviceType.Pen: - details += "\nPointer type: pen"; - if (ptrPt.IsInContact) - { - details += "\nPressure: " + ptrPt.Properties.Pressure; - details += "\nrotation: " + ptrPt.Properties.Orientation; - details += "\nTilt X: " + ptrPt.Properties.XTilt; - details += "\nTilt Y: " + ptrPt.Properties.YTilt; - details += "\nBarrel button pressed: " + ptrPt.Properties.IsBarrelButtonPressed; - } - break; - case Windows.Devices.Input.PointerDeviceType.Touch: - details += "\nPointer type: touch"; - details += "\nrotation: " + ptrPt.Properties.Orientation; - details += "\nTilt X: " + ptrPt.Properties.XTilt; - details += "\nTilt Y: " + ptrPt.Properties.YTilt; - break; - default: - details += "\nPointer type: n/a"; - break; - } - - GeneralTransform gt = Target.TransformToVisual(this); - Point screenPoint; - - screenPoint = gt.TransformPoint(new Point(ptrPt.Position.X, ptrPt.Position.Y)); - details += "\nPointer Id: " + ptrPt.PointerId.ToString() + - "\nPointer location (target): " + Math.Round(ptrPt.Position.X) + ", " + Math.Round(ptrPt.Position.Y) + - "\nPointer location (container): " + Math.Round(screenPoint.X) + ", " + Math.Round(screenPoint.Y); - - return details; -} -``` - -## Primary pointer -Some input devices, such as a touch digitizer or touchpad, support more than the typical single pointer of a mouse or a pen (in most cases as the Surface Hub supports two pen inputs). - -Use the read-only **[IsPrimary](/uwp/api/windows.ui.input.pointerpointproperties.IsPrimary)** property of the **[PointerPointerProperties](/uwp/api/windows.ui.input.pointerpointproperties)** class to identify and differentiate a single primary pointer (the primary pointer is always the first pointer detected during an input sequence). - -By identifying the primary pointer, you can use it to emulate mouse or pen input, customize interactions, or provide some other specific functionality or UI. - -> [!NOTE] -> If the primary pointer is released, canceled, or lost during an input sequence, a primary input pointer is not created until a new input sequence is initiated (an input sequence ends when all pointers have been released, canceled, or lost). - -## Primary pointer animation example - -These code snippets show how you can provide special visual feedback to help a user differentiate between pointer inputs in your application. - -This particular app uses both color and animation to highlight the primary pointer. - -![Pointer application with animated visual feedback](images/pointers/pointers-usercontrol-animation.gif) - -**Download this sample from [Pointer input sample (UserControl with animation)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-pointers-animation.zip)** - -### Visual feedback - -We define a **[UserControl](/uwp/api/windows.ui.xaml.controls.usercontrol)**, based on a XAML **[Ellipse](/uwp/api/windows.ui.xaml.shapes.ellipse)** object, that highlights where each pointer is on the canvas and uses a **[Storyboard](/uwp/api/windows.ui.xaml.media.animation.storyboard)** to animate the ellipse that corresponds to the primary pointer. - -**Here's the XAML:** - -```xaml - - - - - - - - - - - - - - - - - - - - - - - -``` - -And here's the code-behind: -```csharp -using Windows.Foundation; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Media; - -// The User Control item template is documented at -// https://go.microsoft.com/fwlink/?LinkId=234236 - -namespace UWP_Pointers -{ - /// - /// Pointer feedback object. - /// - public sealed partial class PointerEllipse : UserControl - { - // Reference to the application canvas. - Canvas canvas; - - /// - /// Ellipse UI for pointer feedback. - /// - /// The drawing canvas. - public PointerEllipse(Canvas c) - { - this.InitializeComponent(); - canvas = c; - } - - /// - /// Gets or sets the pointer Id to associate with the PointerEllipse object. - /// - public uint PointerId - { - get { return (uint)GetValue(PointerIdProperty); } - set { SetValue(PointerIdProperty, value); } - } - // Using a DependencyProperty as the backing store for PointerId. - // This enables animation, styling, binding, etc... - public static readonly DependencyProperty PointerIdProperty = - DependencyProperty.Register("PointerId", typeof(uint), - typeof(PointerEllipse), new PropertyMetadata(null)); - - - /// - /// Gets or sets whether the associated pointer is Primary. - /// - public bool PrimaryPointer - { - get { return (bool)GetValue(PrimaryPointerProperty); } - set - { - SetValue(PrimaryPointerProperty, value); - } - } - // Using a DependencyProperty as the backing store for PrimaryPointer. - // This enables animation, styling, binding, etc... - public static readonly DependencyProperty PrimaryPointerProperty = - DependencyProperty.Register("PrimaryPointer", typeof(bool), - typeof(PointerEllipse), new PropertyMetadata(false)); - - - /// - /// Gets or sets the ellipse style based on whether the pointer is Primary. - /// - public bool PrimaryEllipse - { - get { return (bool)GetValue(PrimaryEllipseProperty); } - set - { - SetValue(PrimaryEllipseProperty, value); - if (value) - { - SolidColorBrush fillBrush = - (SolidColorBrush)Application.Current.Resources["PrimaryFillBrush"]; - SolidColorBrush strokeBrush = - (SolidColorBrush)Application.Current.Resources["PrimaryStrokeBrush"]; - - ellipse.Fill = fillBrush; - ellipse.Stroke = strokeBrush; - ellipse.RenderTransform = new CompositeTransform(); - ellipse.RenderTransformOrigin = new Point(.5, .5); - myStoryboard.Begin(); - } - else - { - SolidColorBrush fillBrush = - (SolidColorBrush)Application.Current.Resources["SecondaryFillBrush"]; - SolidColorBrush strokeBrush = - (SolidColorBrush)Application.Current.Resources["SecondaryStrokeBrush"]; - ellipse.Fill = fillBrush; - ellipse.Stroke = strokeBrush; - } - } - } - // Using a DependencyProperty as the backing store for PrimaryEllipse. - // This enables animation, styling, binding, etc... - public static readonly DependencyProperty PrimaryEllipseProperty = - DependencyProperty.Register("PrimaryEllipse", - typeof(bool), typeof(PointerEllipse), new PropertyMetadata(false)); - - - /// - /// Gets or sets the diameter of the PointerEllipse object. - /// - public int Diameter - { - get { return (int)GetValue(DiameterProperty); } - set { SetValue(DiameterProperty, value); } - } - // Using a DependencyProperty as the backing store for Diameter. This enables animation, styling, binding, etc... - public static readonly DependencyProperty DiameterProperty = - DependencyProperty.Register("Diameter", typeof(int), - typeof(PointerEllipse), new PropertyMetadata(120)); - } -} -``` - -### Create the UI -The UI in this example is limited to the input **[Canvas](/uwp/api/windows.ui.xaml.controls.canvas)** where we track any pointers and render the pointer indicators and primary pointer animation (if applicable), along with a header bar containing a pointer counter and a primary pointer identifier. - -Here's the MainPage.xaml: - -```xaml - - - - - - - - - - - - - - - - - - - - - - - -``` - -### Handle pointer events - -Finally, we define our basic pointer event handlers in the MainPage.xaml.cs code-behind. We won't reproduce the code here as the basics were covered in the previous example, but you can download the working sample from [Pointer input sample (UserControl with animation)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-pointers-animation.zip). - -## Related articles - -### Topic samples - -- [Pointer input sample (basic)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-pointers.zip) -- [Pointer input sample (UserControl with animation)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-pointers-animation.zip) - -### Other samples - -- [Basic input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BasicInput) -- [Low latency input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/LowLatencyInput) -- [User interaction mode sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/UserInteractionMode) -- [Focus visuals sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlFocusVisuals) - -### Archive samples - -- [Input: XAML user input events sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Input%20XAML%20user%20input%20events%20sample) -- [Input: Device capabilities sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BC%23%5D-Windows%208%20app%20samples/C%23/Windows%208%20app%20samples/Input%20Device%20capabilities%20sample%20(Windows%208)) -- [Input: Manipulations and gestures sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Input%20Gestures%20and%20manipulations%20with%20GestureRecognizer) -- [Input: Touch hit testing sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20desktop%20samples/%5BC%2B%2B%5D-Windows%208%20desktop%20samples/C%2B%2B/Windows%208%20desktop%20samples/Input%20Touch%20hit%20testing%20sample) -- [XAML scrolling, panning, and zooming sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Universal%20Windows%20app%20samples/111487-Universal%20Windows%20app%20samples/XAML%20scrolling%2C%20panning%2C%20and%20zooming%20sample) -- [Input: Simplified ink sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Input%20Simplified%20ink%20sample) diff --git a/hub/apps/design/input/identify-input-devices.md b/hub/apps/design/input/identify-input-devices.md deleted file mode 100644 index 575cab7c5a..0000000000 --- a/hub/apps/design/input/identify-input-devices.md +++ /dev/null @@ -1,183 +0,0 @@ ---- -description: Identify the input devices connected to a Windows app device and identify their capabilities and attributes. -title: Identify input devices -ms.assetid: B2E93FBF-C508-44D9-BA46-ECFDAA8746F4 -label: Identify input devices -template: detail.hbs -keywords: device, digitizer, input, interaction -ms.date: 09/24/2020 -ms.topic: how-to - - -ms.localizationpriority: medium ---- -# Identify input devices - - -Identify the input devices connected to a Windows app device and identify their capabilities and attributes. - -> **Important APIs**: [**Windows.Devices.Input**](/uwp/api/Windows.Devices.Input), [**Windows.UI.Input**](/uwp/api/Windows.UI.Core), [**Windows.UI.Xaml.Input**](/uwp/api/Windows.UI.Input) - -## Retrieve mouse properties - - -The [**Windows.Devices.Input**](/uwp/api/Windows.Devices.Input) namespace contains the [**MouseCapabilities**](/uwp/api/Windows.Devices.Input.MouseCapabilities) class used to retrieve the properties exposed by one or more connected mice. Just create a new **MouseCapabilities** object and get the properties you're interested in. - -**Note**  The values returned by the properties discussed here are based on all detected mice: Boolean properties return non-zero if at least one mouse supports a specific capability, and numeric properties return the maximum value exposed by any one mouse. - -  - -The following code uses a series of [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) elements to display the individual mouse properties and values. - -```CSharp -private void GetMouseProperties() -{ - MouseCapabilities mouseCapabilities = new Windows.Devices.Input.MouseCapabilities(); - MousePresent.Text = mouseCapabilities.MousePresent != 0 ? "Yes" : "No"; - VertWheel.Text = mouseCapabilities.VerticalWheelPresent != 0 ? "Yes" : "No"; - HorzWheel.Text = mouseCapabilities.HorizontalWheelPresent != 0 ? "Yes" : "No"; - SwappedButtons.Text = mouseCapabilities.SwapButtons != 0 ? "Yes" : "No"; - NumButtons.Text = mouseCapabilities.NumberOfButtons.ToString(); -} -``` - -## Retrieve keyboard properties - - -The [**Windows.Devices.Input**](/uwp/api/Windows.Devices.Input) namespace contains the [**KeyboardCapabilities**](/uwp/api/Windows.Devices.Input.KeyboardCapabilities) class used to retrieve whether a keyboard is connected. Just create a new **KeyboardCapabilities** object and get the [**KeyboardPresent**](/uwp/api/windows.devices.input.keyboardcapabilities.keyboardpresent) property. - -The following code uses a [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) element to display the keyboard property and value. - -```CSharp -private void GetKeyboardProperties() -{ - KeyboardCapabilities keyboardCapabilities = new Windows.Devices.Input.KeyboardCapabilities(); - KeyboardPresent.Text = keyboardCapabilities.KeyboardPresent != 0 ? "Yes" : "No"; -} -``` - -## Retrieve touch properties - - -The [**Windows.Devices.Input**](/uwp/api/Windows.Devices.Input) namespace contains the [**TouchCapabilities**](/uwp/api/Windows.Devices.Input.TouchCapabilities) class used to retrieve whether any touch digitizers are connected. Just create a new **TouchCapabilities** object and get the properties you're interested in. - -**Note**  The values returned by the properties discussed here are based on all detected touch digitizers: Boolean properties return non-zero if at least one digitizer supports a specific capability, and numeric properties return the maximum value exposed by any one digitizer. - -  - -The following code uses a series of [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) elements to display the touch properties and values. - -```CSharp -private void GetTouchProperties() -{ - TouchCapabilities touchCapabilities = new Windows.Devices.Input.TouchCapabilities(); - TouchPresent.Text = touchCapabilities.TouchPresent != 0 ? "Yes" : "No"; - Contacts.Text = touchCapabilities.Contacts.ToString(); -} -``` - -## Retrieve pointer properties - - -The [**Windows.Devices.Input**](/uwp/api/Windows.Devices.Input) namespace contains the [**PointerDevice**](/uwp/api/Windows.Devices.Input.PointerDevice) class used to retrieve whether any detected devices support pointer input (touch, touchpad, mouse, or pen). Just create a new **PointerDevice** object and get the properties you're interested in. - -**Note**  The values returned by the properties discussed here are based on all detected pointer devices: Boolean properties return non-zero if at least one device supports a specific capability, and numeric properties return the maximum value exposed by any one pointer device. - -The following code uses a table to display the properties and values for each pointer device. - -```CSharp -private void GetPointerDevices() -{ - IReadOnlyList pointerDevices = Windows.Devices.Input.PointerDevice.GetPointerDevices(); - int gridRow = 0; - int gridColumn = 0; - - for (int i = 0; i < pointerDevices.Count; i++) - { - // Pointer device type. - TextBlock textBlock1 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock1); - textBlock1.Text = (i + 1).ToString() + " Pointer Device Type:"; - Grid.SetRow(textBlock1, gridRow); - Grid.SetColumn(textBlock1, gridColumn); - - TextBlock textBlock2 = new TextBlock(); - textBlock2.Text = pointerDevices[i].PointerDeviceType.ToString(); - Grid_PointerProps.Children.Add(textBlock2); - Grid.SetRow(textBlock2, gridRow++); - Grid.SetColumn(textBlock2, gridColumn + 1); - - // Is external? - TextBlock textBlock3 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock3); - textBlock3.Text = (i + 1).ToString() + " Is External?"; - Grid.SetRow(textBlock3, gridRow); - Grid.SetColumn(textBlock3, gridColumn); - - TextBlock textBlock4 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock4); - textBlock4.Text = pointerDevices[i].IsIntegrated.ToString(); - Grid.SetRow(textBlock4, gridRow++); - Grid.SetColumn(textBlock4, gridColumn + 1); - - // Maximum contacts. - TextBlock textBlock5 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock5); - textBlock5.Text = (i + 1).ToString() + " Max Contacts:"; - Grid.SetRow(textBlock5, gridRow); - Grid.SetColumn(textBlock5, gridColumn); - - TextBlock textBlock6 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock6); - textBlock6.Text = pointerDevices[i].MaxContacts.ToString(); - Grid.SetRow(textBlock6, gridRow++); - Grid.SetColumn(textBlock6, gridColumn + 1); - - // Physical device rectangle. - TextBlock textBlock7 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock7); - textBlock7.Text = (i + 1).ToString() + " Physical Device Rect:"; - Grid.SetRow(textBlock7, gridRow); - Grid.SetColumn(textBlock7, gridColumn); - - TextBlock textBlock8 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock8); - textBlock8.Text = pointerDevices[i].PhysicalDeviceRect.X.ToString() + "," + - pointerDevices[i].PhysicalDeviceRect.Y.ToString() + "," + - pointerDevices[i].PhysicalDeviceRect.Width.ToString() + "," + - pointerDevices[i].PhysicalDeviceRect.Height.ToString(); - Grid.SetRow(textBlock8, gridRow++); - Grid.SetColumn(textBlock8, gridColumn + 1); - - // Screen rectangle. - TextBlock textBlock9 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock9); - textBlock9.Text = (i + 1).ToString() + " Screen Rect:"; - Grid.SetRow(textBlock9, gridRow); - Grid.SetColumn(textBlock9, gridColumn); - - TextBlock textBlock10 = new TextBlock(); - Grid_PointerProps.Children.Add(textBlock10); - textBlock10.Text = pointerDevices[i].ScreenRect.X.ToString() + "," + - pointerDevices[i].ScreenRect.Y.ToString() + "," + - pointerDevices[i].ScreenRect.Width.ToString() + "," + - pointerDevices[i].ScreenRect.Height.ToString(); - Grid.SetRow(textBlock10, gridRow++); - Grid.SetColumn(textBlock10, gridColumn + 1); - - gridColumn += 2; - gridRow = 0; - } -``` - -## Related articles - -### Samples - -- [Basic input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BasicInput) -- [Low latency input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/LowLatencyInput) -- [User interaction mode sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/UserInteractionMode) - -### Archive samples - -- [Input: Device capabilities sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BC%23%5D-Windows%208%20app%20samples/C%23/Windows%208%20app%20samples/Input%20Device%20capabilities%20sample%20(Windows%208)) diff --git a/hub/apps/design/input/images/IMEs/ime-brand-icon-traditional-chinese-new.png b/hub/apps/design/input/images/IMEs/ime-brand-icon-traditional-chinese-new.png deleted file mode 100644 index 7f526cf77a..0000000000 Binary files a/hub/apps/design/input/images/IMEs/ime-brand-icon-traditional-chinese-new.png and /dev/null differ diff --git a/hub/apps/design/input/images/IMEs/ime-brand-icon-traditional-chinese.png b/hub/apps/design/input/images/IMEs/ime-brand-icon-traditional-chinese.png deleted file mode 100644 index bb971920cd..0000000000 Binary files a/hub/apps/design/input/images/IMEs/ime-brand-icon-traditional-chinese.png and /dev/null differ diff --git a/hub/apps/design/input/images/IMEs/ime-mode-icon-chinese.png b/hub/apps/design/input/images/IMEs/ime-mode-icon-chinese.png deleted file mode 100644 index 70eafeab61..0000000000 Binary files a/hub/apps/design/input/images/IMEs/ime-mode-icon-chinese.png and /dev/null differ diff --git a/hub/apps/design/input/images/IMEs/ime-preferred-languages-keyboard.png b/hub/apps/design/input/images/IMEs/ime-preferred-languages-keyboard.png deleted file mode 100644 index 9c35b384d8..0000000000 Binary files a/hub/apps/design/input/images/IMEs/ime-preferred-languages-keyboard.png and /dev/null differ diff --git a/hub/apps/design/input/images/IMEs/ime-preferred-languages.png b/hub/apps/design/input/images/IMEs/ime-preferred-languages.png deleted file mode 100644 index 25afa95cd2..0000000000 Binary files a/hub/apps/design/input/images/IMEs/ime-preferred-languages.png and /dev/null differ diff --git a/hub/apps/design/input/images/IMEs/ime-search-pane.png b/hub/apps/design/input/images/IMEs/ime-search-pane.png deleted file mode 100644 index 86f2e55a0c..0000000000 Binary files a/hub/apps/design/input/images/IMEs/ime-search-pane.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators-appbar-menuflyoutitem-small.png b/hub/apps/design/input/images/accelerators/accelerators-appbar-menuflyoutitem-small.png deleted file mode 100644 index 32a9961683..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators-appbar-menuflyoutitem-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators-appbarbutton-small.png b/hub/apps/design/input/images/accelerators/accelerators-appbarbutton-small.png deleted file mode 100644 index c76602bcfb..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators-appbarbutton-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators-button-small.png b/hub/apps/design/input/images/accelerators/accelerators-button-small.png deleted file mode 100644 index be652a6fce..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators-button-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators_hero2.png b/hub/apps/design/input/images/accelerators/accelerators_hero2.png deleted file mode 100644 index 345ad5def4..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators_hero2.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators_keyevents.png b/hub/apps/design/input/images/accelerators/accelerators_keyevents.png deleted file mode 100644 index e87cac280c..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators_keyevents.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators_localization.png b/hub/apps/design/input/images/accelerators/accelerators_localization.png deleted file mode 100644 index 1fa72bde12..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators_localization.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators_menuitemlabel.png b/hub/apps/design/input/images/accelerators/accelerators_menuitemlabel.png deleted file mode 100644 index 9fd04dfa15..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators_menuitemlabel.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators_tooltip.png b/hub/apps/design/input/images/accelerators/accelerators_tooltip.png deleted file mode 100644 index 7298d7252b..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators_tooltip.png and /dev/null differ diff --git a/hub/apps/design/input/images/accelerators/accelerators_tooltip_savebutton_small.png b/hub/apps/design/input/images/accelerators/accelerators_tooltip_savebutton_small.png deleted file mode 100644 index d54f024bd8..0000000000 Binary files a/hub/apps/design/input/images/accelerators/accelerators_tooltip_savebutton_small.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/auto-keytip-position.png b/hub/apps/design/input/images/accesskeys/auto-keytip-position.png deleted file mode 100644 index f254cda872..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/auto-keytip-position.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/keytip-badges-word.png b/hub/apps/design/input/images/accesskeys/keytip-badges-word.png deleted file mode 100644 index ca9c47537c..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/keytip-badges-word.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/keytip-customization.png b/hub/apps/design/input/images/accesskeys/keytip-customization.png deleted file mode 100644 index a1f2402566..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/keytip-customization.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/keytip-offsets.png b/hub/apps/design/input/images/accesskeys/keytip-offsets.png deleted file mode 100644 index b7c44f89f5..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/keytip-offsets.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/keytip-postion-modes.png b/hub/apps/design/input/images/accesskeys/keytip-postion-modes.png deleted file mode 100644 index c84112baeb..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/keytip-postion-modes.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/keytips-screen-edge.png b/hub/apps/design/input/images/accesskeys/keytips-screen-edge.png deleted file mode 100644 index 82594b48ed..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/keytips-screen-edge.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/primary-access-keys-commandbar.png b/hub/apps/design/input/images/accesskeys/primary-access-keys-commandbar.png deleted file mode 100644 index 0ea3babb03..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/primary-access-keys-commandbar.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/primary-access-keys-word.png b/hub/apps/design/input/images/accesskeys/primary-access-keys-word.png deleted file mode 100644 index ca9c47537c..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/primary-access-keys-word.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/resource-resw-file.png b/hub/apps/design/input/images/accesskeys/resource-resw-file.png deleted file mode 100644 index 5e16fef433..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/resource-resw-file.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/resource-string-folders.png b/hub/apps/design/input/images/accesskeys/resource-string-folders.png deleted file mode 100644 index 5962588f3a..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/resource-string-folders.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/secondary-access-keys-commandbar.png b/hub/apps/design/input/images/accesskeys/secondary-access-keys-commandbar.png deleted file mode 100644 index 12e4992779..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/secondary-access-keys-commandbar.png and /dev/null differ diff --git a/hub/apps/design/input/images/accesskeys/secondary-access-keys-word.png b/hub/apps/design/input/images/accesskeys/secondary-access-keys-word.png deleted file mode 100644 index 08a4e17ad0..0000000000 Binary files a/hub/apps/design/input/images/accesskeys/secondary-access-keys-word.png and /dev/null differ diff --git a/hub/apps/design/input/images/adjust-selection.png b/hub/apps/design/input/images/adjust-selection.png deleted file mode 100644 index d56cf1a749..0000000000 Binary files a/hub/apps/design/input/images/adjust-selection.png and /dev/null differ diff --git a/hub/apps/design/input/images/areazoom.png b/hub/apps/design/input/images/areazoom.png deleted file mode 100644 index 7acebef3f0..0000000000 Binary files a/hub/apps/design/input/images/areazoom.png and /dev/null differ diff --git a/hub/apps/design/input/images/challenge-icon.png b/hub/apps/design/input/images/challenge-icon.png deleted file mode 100644 index 59d42736c1..0000000000 Binary files a/hub/apps/design/input/images/challenge-icon.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/architecture.png b/hub/apps/design/input/images/coretext/architecture.png deleted file mode 100644 index b0eb5e247f..0000000000 Binary files a/hub/apps/design/input/images/coretext/architecture.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-1.png b/hub/apps/design/input/images/coretext/stream-1.png deleted file mode 100644 index df09355a7e..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-1.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-2.png b/hub/apps/design/input/images/coretext/stream-2.png deleted file mode 100644 index 4b9f4883ac..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-2.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-3.png b/hub/apps/design/input/images/coretext/stream-3.png deleted file mode 100644 index 898324c5a6..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-3.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-4.png b/hub/apps/design/input/images/coretext/stream-4.png deleted file mode 100644 index ffb109c07b..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-4.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-5.png b/hub/apps/design/input/images/coretext/stream-5.png deleted file mode 100644 index 08cd3f3624..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-5.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-6.png b/hub/apps/design/input/images/coretext/stream-6.png deleted file mode 100644 index d052afb8d4..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-6.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-7.png b/hub/apps/design/input/images/coretext/stream-7.png deleted file mode 100644 index 9c3ba36814..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-7.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/stream-8.png b/hub/apps/design/input/images/coretext/stream-8.png deleted file mode 100644 index 0bb74f0640..0000000000 Binary files a/hub/apps/design/input/images/coretext/stream-8.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/text-scaling-clipping-small.png b/hub/apps/design/input/images/coretext/text-scaling-clipping-small.png deleted file mode 100644 index a0b13cdf52..0000000000 Binary files a/hub/apps/design/input/images/coretext/text-scaling-clipping-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/text-scaling-news-hero-small.png b/hub/apps/design/input/images/coretext/text-scaling-news-hero-small.png deleted file mode 100644 index 4983d292fa..0000000000 Binary files a/hub/apps/design/input/images/coretext/text-scaling-news-hero-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/text-scaling-settings-100-small.png b/hub/apps/design/input/images/coretext/text-scaling-settings-100-small.png deleted file mode 100644 index e7a68850b2..0000000000 Binary files a/hub/apps/design/input/images/coretext/text-scaling-settings-100-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/text-scaling-textwrap.gif b/hub/apps/design/input/images/coretext/text-scaling-textwrap.gif deleted file mode 100644 index 0e0c55c75c..0000000000 Binary files a/hub/apps/design/input/images/coretext/text-scaling-textwrap.gif and /dev/null differ diff --git a/hub/apps/design/input/images/coretext/text-scaling.gif b/hub/apps/design/input/images/coretext/text-scaling.gif deleted file mode 100644 index b1d7b4ad2e..0000000000 Binary files a/hub/apps/design/input/images/coretext/text-scaling.gif and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-backgroundapp-progress-result.png b/hub/apps/design/input/images/cortana/cortana-backgroundapp-progress-result.png deleted file mode 100644 index ae81fd6baa..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-backgroundapp-progress-result.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-backgroundapp-result.png b/hub/apps/design/input/images/cortana/cortana-backgroundapp-result.png deleted file mode 100644 index ec76ebf1b7..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-backgroundapp-result.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-completion-screen-upcomingtrip-small.png b/hub/apps/design/input/images/cortana/cortana-completion-screen-upcomingtrip-small.png deleted file mode 100644 index 7b5348897a..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-completion-screen-upcomingtrip-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-completion-screen.png b/hub/apps/design/input/images/cortana/cortana-completion-screen.png deleted file mode 100644 index ab6cdb05e4..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-completion-screen.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-confirmation-screen.png b/hub/apps/design/input/images/cortana/cortana-confirmation-screen.png deleted file mode 100644 index ce3373ddb0..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-confirmation-screen.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-disambiguation-screen.png b/hub/apps/design/input/images/cortana/cortana-disambiguation-screen.png deleted file mode 100644 index 047e584b94..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-disambiguation-screen.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-foreground-with-adventureworks.png b/hub/apps/design/input/images/cortana/cortana-foreground-with-adventureworks.png deleted file mode 100644 index 46e3c371b6..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-foreground-with-adventureworks.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-overview.png b/hub/apps/design/input/images/cortana/cortana-overview.png deleted file mode 100644 index 3f29db56c7..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-overview.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/cortana-progress-screen.png b/hub/apps/design/input/images/cortana/cortana-progress-screen.png deleted file mode 100644 index 098dcaee9a..0000000000 Binary files a/hub/apps/design/input/images/cortana/cortana-progress-screen.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-completion.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-completion.png deleted file mode 100644 index 5be938ea4d..0000000000 Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-completion.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-confirmation.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-confirmation.png deleted file mode 100644 index ce3373ddb0..0000000000 Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-confirmation.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-error.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-error.png deleted file mode 100644 index 95714f51dc..0000000000 Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-error.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-progress.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-progress.png deleted file mode 100644 index 098dcaee9a..0000000000 Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-progress.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip.png b/hub/apps/design/input/images/cortana/e2e-canceltrip.png deleted file mode 100644 index 6f22edb5ca..0000000000 Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titleonly-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titleonly-small.png deleted file mode 100644 index f145d4f0bf..0000000000 Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titleonly-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith280x140iconandtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith280x140iconandtext-small.png deleted file mode 100644 index 3d98429aba..0000000000 Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith280x140iconandtext-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x68iconandtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x68iconandtext-small.png deleted file mode 100644 index a01928a663..0000000000 Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x68iconandtext-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x92iconandtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x92iconandtext-small.png deleted file mode 100644 index 59e36040fd..0000000000 Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x92iconandtext-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewithtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewithtext-small.png deleted file mode 100644 index 8d3ecda744..0000000000 Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewithtext-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/crossslide-mechanism.png b/hub/apps/design/input/images/crossslide-mechanism.png deleted file mode 100644 index 134e3b9cf7..0000000000 Binary files a/hub/apps/design/input/images/crossslide-mechanism.png and /dev/null differ diff --git a/hub/apps/design/input/images/crossslide-selection.png b/hub/apps/design/input/images/crossslide-selection.png deleted file mode 100644 index cf4d000fbc..0000000000 Binary files a/hub/apps/design/input/images/crossslide-selection.png and /dev/null differ diff --git a/hub/apps/design/input/images/crossslide-selfreveal1.png b/hub/apps/design/input/images/crossslide-selfreveal1.png deleted file mode 100644 index 1c6eefa957..0000000000 Binary files a/hub/apps/design/input/images/crossslide-selfreveal1.png and /dev/null differ diff --git a/hub/apps/design/input/images/crossslide-selfreveal2.png b/hub/apps/design/input/images/crossslide-selfreveal2.png deleted file mode 100644 index 3aa26cb41f..0000000000 Binary files a/hub/apps/design/input/images/crossslide-selfreveal2.png and /dev/null differ diff --git a/hub/apps/design/input/images/crossslide-selfreveal3.png b/hub/apps/design/input/images/crossslide-selfreveal3.png deleted file mode 100644 index 4b2f46a3e0..0000000000 Binary files a/hub/apps/design/input/images/crossslide-selfreveal3.png and /dev/null differ diff --git a/hub/apps/design/input/images/crossslide-threshold.png b/hub/apps/design/input/images/crossslide-threshold.png deleted file mode 100644 index 2337e00aed..0000000000 Binary files a/hub/apps/design/input/images/crossslide-threshold.png and /dev/null differ diff --git a/hub/apps/design/input/images/crossslide-threshold2.png b/hub/apps/design/input/images/crossslide-threshold2.png deleted file mode 100644 index d19a907e7e..0000000000 Binary files a/hub/apps/design/input/images/crossslide-threshold2.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-arrow.png b/hub/apps/design/input/images/cursor-arrow.png deleted file mode 100644 index 6507a5daba..0000000000 Binary files a/hub/apps/design/input/images/cursor-arrow.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-diagonal1.png b/hub/apps/design/input/images/cursor-diagonal1.png deleted file mode 100644 index 3b4723b6b5..0000000000 Binary files a/hub/apps/design/input/images/cursor-diagonal1.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-diagonal2.png b/hub/apps/design/input/images/cursor-diagonal2.png deleted file mode 100644 index 10a2501584..0000000000 Binary files a/hub/apps/design/input/images/cursor-diagonal2.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-horizontal.png b/hub/apps/design/input/images/cursor-horizontal.png deleted file mode 100644 index b3c4cd42dd..0000000000 Binary files a/hub/apps/design/input/images/cursor-horizontal.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-move.png b/hub/apps/design/input/images/cursor-move.png deleted file mode 100644 index c14d3a6656..0000000000 Binary files a/hub/apps/design/input/images/cursor-move.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-pan1.png b/hub/apps/design/input/images/cursor-pan1.png deleted file mode 100644 index 5b8396cc30..0000000000 Binary files a/hub/apps/design/input/images/cursor-pan1.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-pan2.png b/hub/apps/design/input/images/cursor-pan2.png deleted file mode 100644 index b78021de34..0000000000 Binary files a/hub/apps/design/input/images/cursor-pan2.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-pointinghand.png b/hub/apps/design/input/images/cursor-pointinghand.png deleted file mode 100644 index 43afe04935..0000000000 Binary files a/hub/apps/design/input/images/cursor-pointinghand.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-text.png b/hub/apps/design/input/images/cursor-text.png deleted file mode 100644 index ff2f4394f7..0000000000 Binary files a/hub/apps/design/input/images/cursor-text.png and /dev/null differ diff --git a/hub/apps/design/input/images/cursor-vertical.png b/hub/apps/design/input/images/cursor-vertical.png deleted file mode 100644 index ca667621de..0000000000 Binary files a/hub/apps/design/input/images/cursor-vertical.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/10ft_infographics_mouse-mode.png b/hub/apps/design/input/images/designing-for-tv/10ft_infographics_mouse-mode.png deleted file mode 100644 index 421de78d49..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/10ft_infographics_mouse-mode.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-engagement.png b/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-engagement.png deleted file mode 100644 index d55516d6c7..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-engagement.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-real-estate-app-list.png b/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-real-estate-app-list.png deleted file mode 100644 index 040a85b118..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-real-estate-app-list.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-real-estate-app.png b/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-real-estate-app.png deleted file mode 100644 index 312494e8f7..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-real-estate-app.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-scrollviewer.png b/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-scrollviewer.png deleted file mode 100644 index 326efd49fc..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-scrollviewer.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-ui-rearrange.png b/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-ui-rearrange.png deleted file mode 100644 index de748f9efc..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-focus-navigation-and-interaction-ui-rearrange.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-commandbar-and-contextflyout.png b/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-commandbar-and-contextflyout.png deleted file mode 100644 index db131ab5f9..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-commandbar-and-contextflyout.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-provide-path-with-least-clicks-2.png b/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-provide-path-with-least-clicks-2.png deleted file mode 100644 index 714740c580..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-provide-path-with-least-clicks-2.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-provide-path-with-least-clicks.png b/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-provide-path-with-least-clicks.png deleted file mode 100644 index ee546014bf..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-provide-path-with-least-clicks.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-ui-layout-to-avoid.png b/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-ui-layout-to-avoid.png deleted file mode 100644 index 9c59253b0f..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/2d-navigation-best-practices-ui-layout-to-avoid.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/focus-engagement-focus-trapping-2.png b/hub/apps/design/input/images/designing-for-tv/focus-engagement-focus-trapping-2.png deleted file mode 100644 index f164969502..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/focus-engagement-focus-trapping-2.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/focus-engagement-focus-trapping.png b/hub/apps/design/input/images/designing-for-tv/focus-engagement-focus-trapping.png deleted file mode 100644 index fee7fdf48e..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/focus-engagement-focus-trapping.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/focus-engagement-list-and-grid-controls-2.png b/hub/apps/design/input/images/designing-for-tv/focus-engagement-list-and-grid-controls-2.png deleted file mode 100644 index 5df62221f0..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/focus-engagement-list-and-grid-controls-2.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/focus-engagement-list-and-grid-controls.png b/hub/apps/design/input/images/designing-for-tv/focus-engagement-list-and-grid-controls.png deleted file mode 100644 index b7843e695c..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/focus-engagement-list-and-grid-controls.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/focus-engagement-slider.png b/hub/apps/design/input/images/designing-for-tv/focus-engagement-slider.png deleted file mode 100644 index ca3808b033..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/focus-engagement-slider.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/hardware-buttons-gamepad-remote.png b/hub/apps/design/input/images/designing-for-tv/hardware-buttons-gamepad-remote.png deleted file mode 100644 index f28e9b7a08..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/hardware-buttons-gamepad-remote.png and /dev/null differ diff --git a/hub/apps/design/input/images/designing-for-tv/map-mouse-mode.png b/hub/apps/design/input/images/designing-for-tv/map-mouse-mode.png deleted file mode 100644 index 3df5f8d401..0000000000 Binary files a/hub/apps/design/input/images/designing-for-tv/map-mouse-mode.png and /dev/null differ diff --git a/hub/apps/design/input/images/dpad-remote/dpad-remote-keyboard.png b/hub/apps/design/input/images/dpad-remote/dpad-remote-keyboard.png deleted file mode 100644 index 42b4fc8ee8..0000000000 Binary files a/hub/apps/design/input/images/dpad-remote/dpad-remote-keyboard.png and /dev/null differ diff --git a/hub/apps/design/input/images/focus-margin.png b/hub/apps/design/input/images/focus-margin.png deleted file mode 100644 index 64e03d8def..0000000000 Binary files a/hub/apps/design/input/images/focus-margin.png and /dev/null differ diff --git a/hub/apps/design/input/images/focus-plus-minus-margin.png b/hub/apps/design/input/images/focus-plus-minus-margin.png deleted file mode 100644 index 72e0750bbe..0000000000 Binary files a/hub/apps/design/input/images/focus-plus-minus-margin.png and /dev/null differ diff --git a/hub/apps/design/input/images/focus-rect-color-changes.png b/hub/apps/design/input/images/focus-rect-color-changes.png deleted file mode 100644 index 1ba2a64e4d..0000000000 Binary files a/hub/apps/design/input/images/focus-rect-color-changes.png and /dev/null differ diff --git a/hub/apps/design/input/images/focus-rect-redlines.png b/hub/apps/design/input/images/focus-rect-redlines.png deleted file mode 100644 index 4f30e7a031..0000000000 Binary files a/hub/apps/design/input/images/focus-rect-redlines.png and /dev/null differ diff --git a/hub/apps/design/input/images/focus-thickness-side.png b/hub/apps/design/input/images/focus-thickness-side.png deleted file mode 100644 index 676b2a0053..0000000000 Binary files a/hub/apps/design/input/images/focus-thickness-side.png and /dev/null differ diff --git a/hub/apps/design/input/images/gaze/eyecontrolbanner1.png b/hub/apps/design/input/images/gaze/eyecontrolbanner1.png deleted file mode 100644 index ae4e83ea03..0000000000 Binary files a/hub/apps/design/input/images/gaze/eyecontrolbanner1.png and /dev/null differ diff --git a/hub/apps/design/input/images/gaze/gaze-input-timed2.gif b/hub/apps/design/input/images/gaze/gaze-input-timed2.gif deleted file mode 100644 index 68d189f5a5..0000000000 Binary files a/hub/apps/design/input/images/gaze/gaze-input-timed2.gif and /dev/null differ diff --git a/hub/apps/design/input/images/gripper-imagemanip.png b/hub/apps/design/input/images/gripper-imagemanip.png deleted file mode 100644 index f9bad6ea57..0000000000 Binary files a/hub/apps/design/input/images/gripper-imagemanip.png and /dev/null differ diff --git a/hub/apps/design/input/images/gripper-mediaplayer.png b/hub/apps/design/input/images/gripper-mediaplayer.png deleted file mode 100644 index eb8c906145..0000000000 Binary files a/hub/apps/design/input/images/gripper-mediaplayer.png and /dev/null differ diff --git a/hub/apps/design/input/images/groupedlistview1.png b/hub/apps/design/input/images/groupedlistview1.png deleted file mode 100644 index cbed802a37..0000000000 Binary files a/hub/apps/design/input/images/groupedlistview1.png and /dev/null differ diff --git a/hub/apps/design/input/images/injection/touch-input-injection.gif b/hub/apps/design/input/images/injection/touch-input-injection.gif deleted file mode 100644 index 9596725bb0..0000000000 Binary files a/hub/apps/design/input/images/injection/touch-input-injection.gif and /dev/null differ diff --git a/hub/apps/design/input/images/ink-basic-custom-1-small.png b/hub/apps/design/input/images/ink-basic-custom-1-small.png deleted file mode 100644 index 9f005dabb2..0000000000 Binary files a/hub/apps/design/input/images/ink-basic-custom-1-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink-basic-custom-2-small.png b/hub/apps/design/input/images/ink-basic-custom-2-small.png deleted file mode 100644 index fc8950d5ec..0000000000 Binary files a/hub/apps/design/input/images/ink-basic-custom-2-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink-unprocessed-1-small.png b/hub/apps/design/input/images/ink-unprocessed-1-small.png deleted file mode 100644 index 68e6a2ff06..0000000000 Binary files a/hub/apps/design/input/images/ink-unprocessed-1-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink-unprocessed-2-small.png b/hub/apps/design/input/images/ink-unprocessed-2-small.png deleted file mode 100644 index c51d0d81de..0000000000 Binary files a/hub/apps/design/input/images/ink-unprocessed-2-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink-unprocessed-3-small.png b/hub/apps/design/input/images/ink-unprocessed-3-small.png deleted file mode 100644 index 4b05ba6e77..0000000000 Binary files a/hub/apps/design/input/images/ink-unprocessed-3-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink-unprocessed-4-small.png b/hub/apps/design/input/images/ink-unprocessed-4-small.png deleted file mode 100644 index 3f355c0d15..0000000000 Binary files a/hub/apps/design/input/images/ink-unprocessed-4-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/hero-small.png b/hub/apps/design/input/images/ink/hero-small.png deleted file mode 100644 index 571cee5fa0..0000000000 Binary files a/hub/apps/design/input/images/ink/hero-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-analysis-analyzed2-small.png b/hub/apps/design/input/images/ink/ink-analysis-analyzed2-small.png deleted file mode 100644 index c91f6db89b..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-analysis-analyzed2-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-analysis-raw2-small.png b/hub/apps/design/input/images/ink/ink-analysis-raw2-small.png deleted file mode 100644 index 4f2ceea469..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-analysis-raw2-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-app-step1-empty-small.png b/hub/apps/design/input/images/ink/ink-app-step1-empty-small.png deleted file mode 100644 index 856275172e..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-app-step1-empty-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-app-step1-name-small.png b/hub/apps/design/input/images/ink/ink-app-step1-name-small.png deleted file mode 100644 index 2d190b8ee5..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-app-step1-name-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-app-step6-shapereco1-small.png b/hub/apps/design/input/images/ink/ink-app-step6-shapereco1-small.png deleted file mode 100644 index fbda9fd845..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-app-step6-shapereco1-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-app-step6-shapereco2-small.png b/hub/apps/design/input/images/ink/ink-app-step6-shapereco2-small.png deleted file mode 100644 index f2f9a44479..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-app-step6-shapereco2-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-clone.png b/hub/apps/design/input/images/ink/ink-clone.png deleted file mode 100644 index 1fff49a1d8..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-clone.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-hero-small.png b/hub/apps/design/input/images/ink/ink-hero-small.png deleted file mode 100644 index 571cee5fa0..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-hero-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-inktoolbar-default-small.png b/hub/apps/design/input/images/ink/ink-inktoolbar-default-small.png deleted file mode 100644 index 275ded32eb..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-inktoolbar-default-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-inktoolbar-sketchpad-small.png b/hub/apps/design/input/images/ink/ink-inktoolbar-sketchpad-small.png deleted file mode 100644 index 2c582d5354..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-inktoolbar-sketchpad-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-settings-handwritingpersonalization-small.png b/hub/apps/design/input/images/ink/ink-settings-handwritingpersonalization-small.png deleted file mode 100644 index 3a1a87b3e6..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-settings-handwritingpersonalization-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-settings-small.png b/hub/apps/design/input/images/ink/ink-settings-small.png deleted file mode 100644 index a11cb952ee..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-settings-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-tools-custompen.png b/hub/apps/design/input/images/ink/ink-tools-custompen.png deleted file mode 100644 index 7ebb4e7075..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-tools-custompen.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-tools-default-toolbar.png b/hub/apps/design/input/images/ink/ink-tools-default-toolbar.png deleted file mode 100644 index e9019a1873..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-tools-default-toolbar.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-tools-invoked-toolbar-small.png b/hub/apps/design/input/images/ink/ink-tools-invoked-toolbar-small.png deleted file mode 100644 index 5c5416f17b..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-tools-invoked-toolbar-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-tools-specific.png b/hub/apps/design/input/images/ink/ink-tools-specific.png deleted file mode 100644 index 5530f5ab2c..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-tools-specific.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/ink-vsrun-small.png b/hub/apps/design/input/images/ink/ink-vsrun-small.png deleted file mode 100644 index 3478c45767..0000000000 Binary files a/hub/apps/design/input/images/ink/ink-vsrun-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/location-default-small.png b/hub/apps/design/input/images/ink/location-default-small.png deleted file mode 100644 index 73b8632736..0000000000 Binary files a/hub/apps/design/input/images/ink/location-default-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/location-explicit-small.png b/hub/apps/design/input/images/ink/location-explicit-small.png deleted file mode 100644 index 2c5fd7996f..0000000000 Binary files a/hub/apps/design/input/images/ink/location-explicit-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink/location-handedness-setting.png b/hub/apps/design/input/images/ink/location-handedness-setting.png deleted file mode 100644 index a965f7222f..0000000000 Binary files a/hub/apps/design/input/images/ink/location-handedness-setting.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink_basic_1_small.png b/hub/apps/design/input/images/ink_basic_1_small.png deleted file mode 100644 index fd430a7a14..0000000000 Binary files a/hub/apps/design/input/images/ink_basic_1_small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink_basic_2_small.png b/hub/apps/design/input/images/ink_basic_2_small.png deleted file mode 100644 index ee299deb79..0000000000 Binary files a/hub/apps/design/input/images/ink_basic_2_small.png and /dev/null differ diff --git a/hub/apps/design/input/images/ink_basic_3_small.png b/hub/apps/design/input/images/ink_basic_3_small.png deleted file mode 100644 index 65da76b473..0000000000 Binary files a/hub/apps/design/input/images/ink_basic_3_small.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-controller01.png b/hub/apps/design/input/images/input-interactions/icons-controller01.png deleted file mode 100644 index b15abf6d1c..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-controller01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-cortana01.png b/hub/apps/design/input/images/input-interactions/icons-cortana01.png deleted file mode 100644 index e9543320e7..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-cortana01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-gesture01.png b/hub/apps/design/input/images/input-interactions/icons-gesture01.png deleted file mode 100644 index 5e1e6660a1..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-gesture01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-inputdevices03-vertical.png b/hub/apps/design/input/images/input-interactions/icons-inputdevices03-vertical.png deleted file mode 100644 index c76c327c4f..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-inputdevices03-vertical.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-inputdevices03.png b/hub/apps/design/input/images/input-interactions/icons-inputdevices03.png deleted file mode 100644 index 5c04e68cc8..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-inputdevices03.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-keyboard01.png b/hub/apps/design/input/images/input-interactions/icons-keyboard01.png deleted file mode 100644 index 9b75ee6c57..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-keyboard01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-mouse01.png b/hub/apps/design/input/images/input-interactions/icons-mouse01.png deleted file mode 100644 index 761e368cbb..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-mouse01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-pen01.png b/hub/apps/design/input/images/input-interactions/icons-pen01.png deleted file mode 100644 index 0b7a46a520..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-pen01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-speech01.png b/hub/apps/design/input/images/input-interactions/icons-speech01.png deleted file mode 100644 index acf9d843e9..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-speech01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-touch01.png b/hub/apps/design/input/images/input-interactions/icons-touch01.png deleted file mode 100644 index 3291168725..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-touch01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-interactions/icons-touchpad01.png b/hub/apps/design/input/images/input-interactions/icons-touchpad01.png deleted file mode 100644 index 7d142f55fa..0000000000 Binary files a/hub/apps/design/input/images/input-interactions/icons-touchpad01.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-patterns/input-keyboard.psd b/hub/apps/design/input/images/input-patterns/input-keyboard.psd deleted file mode 100644 index df7c4bf07b..0000000000 Binary files a/hub/apps/design/input/images/input-patterns/input-keyboard.psd and /dev/null differ diff --git a/hub/apps/design/input/images/input-patterns/input-mouse.jpg b/hub/apps/design/input/images/input-patterns/input-mouse.jpg deleted file mode 100644 index c4e1ed8d0d..0000000000 Binary files a/hub/apps/design/input/images/input-patterns/input-mouse.jpg and /dev/null differ diff --git a/hub/apps/design/input/images/input-patterns/input-mouse.psd b/hub/apps/design/input/images/input-patterns/input-mouse.psd deleted file mode 100644 index e19d95b91c..0000000000 Binary files a/hub/apps/design/input/images/input-patterns/input-mouse.psd and /dev/null differ diff --git a/hub/apps/design/input/images/input-patterns/input-pen.psd b/hub/apps/design/input/images/input-patterns/input-pen.psd deleted file mode 100644 index e833efc307..0000000000 Binary files a/hub/apps/design/input/images/input-patterns/input-pen.psd and /dev/null differ diff --git a/hub/apps/design/input/images/input-patterns/input-touch.psd b/hub/apps/design/input/images/input-patterns/input-touch.psd deleted file mode 100644 index 3a8f533256..0000000000 Binary files a/hub/apps/design/input/images/input-patterns/input-touch.psd and /dev/null differ diff --git a/hub/apps/design/input/images/input-patterns/input-touchpad.jpg b/hub/apps/design/input/images/input-patterns/input-touchpad.jpg deleted file mode 100644 index 4a150b5245..0000000000 Binary files a/hub/apps/design/input/images/input-patterns/input-touchpad.jpg and /dev/null differ diff --git a/hub/apps/design/input/images/input-patterns/input-touchpad.psd b/hub/apps/design/input/images/input-patterns/input-touchpad.psd deleted file mode 100644 index d0569d6c6c..0000000000 Binary files a/hub/apps/design/input/images/input-patterns/input-touchpad.psd and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/currencyamountandsymbol.png b/hub/apps/design/input/images/input-scopes/currencyamountandsymbol.png deleted file mode 100644 index da7315747d..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/currencyamountandsymbol.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/default.png b/hub/apps/design/input/images/input-scopes/default.png deleted file mode 100644 index 3b150016ed..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/default.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/emailsmtpaddress.png b/hub/apps/design/input/images/input-scopes/emailsmtpaddress.png deleted file mode 100644 index 4de5361e45..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/emailsmtpaddress.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/formula.png b/hub/apps/design/input/images/input-scopes/formula.png deleted file mode 100644 index bd7feccd13..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/formula.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/kbdgokey.png b/hub/apps/design/input/images/input-scopes/kbdgokey.png deleted file mode 100644 index f9ed1dcc7e..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/kbdgokey.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/number.png b/hub/apps/design/input/images/input-scopes/number.png deleted file mode 100644 index 06f2cd4f67..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/number.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/search.png b/hub/apps/design/input/images/input-scopes/search.png deleted file mode 100644 index 83aabfafa7..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/search.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/searchincremental.png b/hub/apps/design/input/images/input-scopes/searchincremental.png deleted file mode 100644 index 381a433f77..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/searchincremental.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/telephonenumber.png b/hub/apps/design/input/images/input-scopes/telephonenumber.png deleted file mode 100644 index 1fc53c96be..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/telephonenumber.png and /dev/null differ diff --git a/hub/apps/design/input/images/input-scopes/url.png b/hub/apps/design/input/images/input-scopes/url.png deleted file mode 100644 index eb3476601c..0000000000 Binary files a/hub/apps/design/input/images/input-scopes/url.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard-feedback.png b/hub/apps/design/input/images/keyboard-feedback.png deleted file mode 100644 index ee2814f051..0000000000 Binary files a/hub/apps/design/input/images/keyboard-feedback.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/appbar.png b/hub/apps/design/input/images/keyboard/appbar.png deleted file mode 100644 index ab04d3d5c0..0000000000 Binary files a/hub/apps/design/input/images/keyboard/appbar.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/arrow-and-tab.png b/hub/apps/design/input/images/keyboard/arrow-and-tab.png deleted file mode 100644 index 7b96f129af..0000000000 Binary files a/hub/apps/design/input/images/keyboard/arrow-and-tab.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/arrow-only.png b/hub/apps/design/input/images/keyboard/arrow-only.png deleted file mode 100644 index d0ffb81dea..0000000000 Binary files a/hub/apps/design/input/images/keyboard/arrow-only.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/auto-suggest-keyboard.png b/hub/apps/design/input/images/keyboard/auto-suggest-keyboard.png deleted file mode 100644 index b74c822cc9..0000000000 Binary files a/hub/apps/design/input/images/keyboard/auto-suggest-keyboard.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/auto-suggest-narrator-1.png b/hub/apps/design/input/images/keyboard/auto-suggest-narrator-1.png deleted file mode 100644 index 8f5403b1f0..0000000000 Binary files a/hub/apps/design/input/images/keyboard/auto-suggest-narrator-1.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/auto-suggest-narrator-2.png b/hub/apps/design/input/images/keyboard/auto-suggest-narrator-2.png deleted file mode 100644 index 22410b6eac..0000000000 Binary files a/hub/apps/design/input/images/keyboard/auto-suggest-narrator-2.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/column-major-keyboard.png b/hub/apps/design/input/images/keyboard/column-major-keyboard.png deleted file mode 100644 index 348f5bbbfd..0000000000 Binary files a/hub/apps/design/input/images/keyboard/column-major-keyboard.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/command-bar-open-down.png b/hub/apps/design/input/images/keyboard/command-bar-open-down.png deleted file mode 100644 index d66d29ec43..0000000000 Binary files a/hub/apps/design/input/images/keyboard/command-bar-open-down.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/command-bar-open-up.png b/hub/apps/design/input/images/keyboard/command-bar-open-up.png deleted file mode 100644 index 744841f10e..0000000000 Binary files a/hub/apps/design/input/images/keyboard/command-bar-open-up.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/default.png b/hub/apps/design/input/images/keyboard/default.png deleted file mode 100644 index 2aa996e315..0000000000 Binary files a/hub/apps/design/input/images/keyboard/default.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/dialog.png b/hub/apps/design/input/images/keyboard/dialog.png deleted file mode 100644 index f4da38461d..0000000000 Binary files a/hub/apps/design/input/images/keyboard/dialog.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/directional-area-small.png b/hub/apps/design/input/images/keyboard/directional-area-small.png deleted file mode 100644 index 46c495eaf9..0000000000 Binary files a/hub/apps/design/input/images/keyboard/directional-area-small.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/directional-navigation.png b/hub/apps/design/input/images/keyboard/directional-navigation.png deleted file mode 100644 index 5a2c0b96bd..0000000000 Binary files a/hub/apps/design/input/images/keyboard/directional-navigation.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/enter-key.png b/hub/apps/design/input/images/keyboard/enter-key.png deleted file mode 100644 index e136824d05..0000000000 Binary files a/hub/apps/design/input/images/keyboard/enter-key.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/esc-key.png b/hub/apps/design/input/images/keyboard/esc-key.png deleted file mode 100644 index 5371a37818..0000000000 Binary files a/hub/apps/design/input/images/keyboard/esc-key.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/extendedview.png b/hub/apps/design/input/images/keyboard/extendedview.png deleted file mode 100644 index 08e0240c0c..0000000000 Binary files a/hub/apps/design/input/images/keyboard/extendedview.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/f6.png b/hub/apps/design/input/images/keyboard/f6.png deleted file mode 100644 index 24e8c0c10b..0000000000 Binary files a/hub/apps/design/input/images/keyboard/f6.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/focus-based-devices.jpg b/hub/apps/design/input/images/keyboard/focus-based-devices.jpg deleted file mode 100644 index 466594cdd8..0000000000 Binary files a/hub/apps/design/input/images/keyboard/focus-based-devices.jpg and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/focus-events.png b/hub/apps/design/input/images/keyboard/focus-events.png deleted file mode 100644 index 80f9b61186..0000000000 Binary files a/hub/apps/design/input/images/keyboard/focus-events.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/focus-visual.png b/hub/apps/design/input/images/keyboard/focus-visual.png deleted file mode 100644 index 6b199956e4..0000000000 Binary files a/hub/apps/design/input/images/keyboard/focus-visual.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/home-and-end.png b/hub/apps/design/input/images/keyboard/home-and-end.png deleted file mode 100644 index c2238140fe..0000000000 Binary files a/hub/apps/design/input/images/keyboard/home-and-end.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/keyboard-gamepad.jpg b/hub/apps/design/input/images/keyboard/keyboard-gamepad.jpg deleted file mode 100644 index 5235e946de..0000000000 Binary files a/hub/apps/design/input/images/keyboard/keyboard-gamepad.jpg and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/keyboard-hero.jpg b/hub/apps/design/input/images/keyboard/keyboard-hero.jpg deleted file mode 100644 index 0a7fd05697..0000000000 Binary files a/hub/apps/design/input/images/keyboard/keyboard-hero.jpg and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/keyboard-phone.jpg b/hub/apps/design/input/images/keyboard/keyboard-phone.jpg deleted file mode 100644 index d2efabb9d1..0000000000 Binary files a/hub/apps/design/input/images/keyboard/keyboard-phone.jpg and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/list-and-grid-items.png b/hub/apps/design/input/images/keyboard/list-and-grid-items.png deleted file mode 100644 index 62fde4fee8..0000000000 Binary files a/hub/apps/design/input/images/keyboard/list-and-grid-items.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/multiple-column-and-row-navigation.png b/hub/apps/design/input/images/keyboard/multiple-column-and-row-navigation.png deleted file mode 100644 index 4416c76778..0000000000 Binary files a/hub/apps/design/input/images/keyboard/multiple-column-and-row-navigation.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/navigation-hints.png b/hub/apps/design/input/images/keyboard/navigation-hints.png deleted file mode 100644 index 554665d71a..0000000000 Binary files a/hub/apps/design/input/images/keyboard/navigation-hints.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/no-directional-navigation.png b/hub/apps/design/input/images/keyboard/no-directional-navigation.png deleted file mode 100644 index fc86eb11ac..0000000000 Binary files a/hub/apps/design/input/images/keyboard/no-directional-navigation.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/osk.png b/hub/apps/design/input/images/keyboard/osk.png deleted file mode 100644 index b591601a5f..0000000000 Binary files a/hub/apps/design/input/images/keyboard/osk.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/page-up-and-down.png b/hub/apps/design/input/images/keyboard/page-up-and-down.png deleted file mode 100644 index adba28b0d7..0000000000 Binary files a/hub/apps/design/input/images/keyboard/page-up-and-down.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/putting-it-all-together.png b/hub/apps/design/input/images/keyboard/putting-it-all-together.png deleted file mode 100644 index 3327be710b..0000000000 Binary files a/hub/apps/design/input/images/keyboard/putting-it-all-together.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/radiobutton.png b/hub/apps/design/input/images/keyboard/radiobutton.png deleted file mode 100644 index 2587eed0e0..0000000000 Binary files a/hub/apps/design/input/images/keyboard/radiobutton.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/row-major-keyboard.png b/hub/apps/design/input/images/keyboard/row-major-keyboard.png deleted file mode 100644 index f8e115b384..0000000000 Binary files a/hub/apps/design/input/images/keyboard/row-major-keyboard.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/single-column-arrow.png b/hub/apps/design/input/images/keyboard/single-column-arrow.png deleted file mode 100644 index 8b410c47b7..0000000000 Binary files a/hub/apps/design/input/images/keyboard/single-column-arrow.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/single-row-arrow.png b/hub/apps/design/input/images/keyboard/single-row-arrow.png deleted file mode 100644 index 1ca7479621..0000000000 Binary files a/hub/apps/design/input/images/keyboard/single-row-arrow.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/space-key.png b/hub/apps/design/input/images/keyboard/space-key.png deleted file mode 100644 index 1ee38f759e..0000000000 Binary files a/hub/apps/design/input/images/keyboard/space-key.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/tab-and-arrow.png b/hub/apps/design/input/images/keyboard/tab-and-arrow.png deleted file mode 100644 index 5965a3157a..0000000000 Binary files a/hub/apps/design/input/images/keyboard/tab-and-arrow.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/tabnav-cycle.gif b/hub/apps/design/input/images/keyboard/tabnav-cycle.gif deleted file mode 100644 index d10c3afd8e..0000000000 Binary files a/hub/apps/design/input/images/keyboard/tabnav-cycle.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/tabnav-local.gif b/hub/apps/design/input/images/keyboard/tabnav-local.gif deleted file mode 100644 index d1ea5e087a..0000000000 Binary files a/hub/apps/design/input/images/keyboard/tabnav-local.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/tabnav-once.gif b/hub/apps/design/input/images/keyboard/tabnav-once.gif deleted file mode 100644 index a5aa92e205..0000000000 Binary files a/hub/apps/design/input/images/keyboard/tabnav-once.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/tabnav-tabindex.gif b/hub/apps/design/input/images/keyboard/tabnav-tabindex.gif deleted file mode 100644 index cc681474c2..0000000000 Binary files a/hub/apps/design/input/images/keyboard/tabnav-tabindex.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/text-entry.png b/hub/apps/design/input/images/keyboard/text-entry.png deleted file mode 100644 index a8b9534856..0000000000 Binary files a/hub/apps/design/input/images/keyboard/text-entry.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/touch-keyboard-notificationcenter.png b/hub/apps/design/input/images/keyboard/touch-keyboard-notificationcenter.png deleted file mode 100644 index 7fc6e25122..0000000000 Binary files a/hub/apps/design/input/images/keyboard/touch-keyboard-notificationcenter.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xbox-onscreen-keyboard.png b/hub/apps/design/input/images/keyboard/xbox-onscreen-keyboard.png deleted file mode 100644 index 10eff36f07..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xbox-onscreen-keyboard.png and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-disabled.gif b/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-disabled.gif deleted file mode 100644 index 83f01963fa..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-disabled.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled-nested1.gif b/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled-nested1.gif deleted file mode 100644 index 733d673aa3..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled-nested1.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled-nested2.gif b/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled-nested2.gif deleted file mode 100644 index a9500fee8c..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled-nested2.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled.gif b/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled.gif deleted file mode 100644 index 4a71138e5a..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xyfocuskeyboardnav-enabled.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-navigationdirectiondistance.gif b/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-navigationdirectiondistance.gif deleted file mode 100644 index 42d57dff77..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-navigationdirectiondistance.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-projection.gif b/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-projection.gif deleted file mode 100644 index c4f21262c9..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-projection.gif and /dev/null differ diff --git a/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-rectilineardistance.gif b/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-rectilineardistance.gif deleted file mode 100644 index 59b6f87ea4..0000000000 Binary files a/hub/apps/design/input/images/keyboard/xyfocusnavigationstrategy-rectilineardistance.gif and /dev/null differ diff --git a/hub/apps/design/input/images/listviewlistlayout.png b/hub/apps/design/input/images/listviewlistlayout.png deleted file mode 100644 index 90a22dced1..0000000000 Binary files a/hub/apps/design/input/images/listviewlistlayout.png and /dev/null differ diff --git a/hub/apps/design/input/images/mouse-feedback.png b/hub/apps/design/input/images/mouse-feedback.png deleted file mode 100644 index b0c8c38eac..0000000000 Binary files a/hub/apps/design/input/images/mouse-feedback.png and /dev/null differ diff --git a/hub/apps/design/input/images/mouse-touchpad-settings-ptp.png b/hub/apps/design/input/images/mouse-touchpad-settings-ptp.png deleted file mode 100644 index b4288bc997..0000000000 Binary files a/hub/apps/design/input/images/mouse-touchpad-settings-ptp.png and /dev/null differ diff --git a/hub/apps/design/input/images/mouse-touchpad-settings-standard.png b/hub/apps/design/input/images/mouse-touchpad-settings-standard.png deleted file mode 100644 index 1ad15b5146..0000000000 Binary files a/hub/apps/design/input/images/mouse-touchpad-settings-standard.png and /dev/null differ diff --git a/hub/apps/design/input/images/objectresize.png b/hub/apps/design/input/images/objectresize.png deleted file mode 100644 index cc1bc9f53a..0000000000 Binary files a/hub/apps/design/input/images/objectresize.png and /dev/null differ diff --git a/hub/apps/design/input/images/pen-feedback.png b/hub/apps/design/input/images/pen-feedback.png deleted file mode 100644 index d1950a1d8c..0000000000 Binary files a/hub/apps/design/input/images/pen-feedback.png and /dev/null differ diff --git a/hub/apps/design/input/images/pointers/pointers-usercontrol-animation.gif b/hub/apps/design/input/images/pointers/pointers-usercontrol-animation.gif deleted file mode 100644 index cc0ae29f54..0000000000 Binary files a/hub/apps/design/input/images/pointers/pointers-usercontrol-animation.gif and /dev/null differ diff --git a/hub/apps/design/input/images/pointers/pointers1.gif b/hub/apps/design/input/images/pointers/pointers1.gif deleted file mode 100644 index 4bcd242bf0..0000000000 Binary files a/hub/apps/design/input/images/pointers/pointers1.gif and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/dial-pen-studio-600px.png b/hub/apps/design/input/images/radialcontroller/dial-pen-studio-600px.png deleted file mode 100644 index 8a2b638e89..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/dial-pen-studio-600px.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-app-step1-empty.png b/hub/apps/design/input/images/radialcontroller/wheel-app-step1-empty.png deleted file mode 100644 index 300346a79e..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-app-step1-empty.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-app-step2-basic-default.png b/hub/apps/design/input/images/radialcontroller/wheel-app-step2-basic-default.png deleted file mode 100644 index 033ba834b1..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-app-step2-basic-default.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-app-step2-basic-withmusic.png b/hub/apps/design/input/images/radialcontroller/wheel-app-step2-basic-withmusic.png deleted file mode 100644 index 0b95e30fe4..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-app-step2-basic-withmusic.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-app-step3-basicui.png b/hub/apps/design/input/images/radialcontroller/wheel-app-step3-basicui.png deleted file mode 100644 index fefdd67817..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-app-step3-basicui.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-app-step3-custom.png b/hub/apps/design/input/images/radialcontroller/wheel-app-step3-custom.png deleted file mode 100644 index e9a9f30135..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-app-step3-custom.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-app-step5-onscreen2.png b/hub/apps/design/input/images/radialcontroller/wheel-app-step5-onscreen2.png deleted file mode 100644 index 86ac868570..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-app-step5-onscreen2.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-clone.png b/hub/apps/design/input/images/radialcontroller/wheel-clone.png deleted file mode 100644 index 1fff49a1d8..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-clone.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-settings.png b/hub/apps/design/input/images/radialcontroller/wheel-settings.png deleted file mode 100644 index 9bd5b6beaf..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-settings.png and /dev/null differ diff --git a/hub/apps/design/input/images/radialcontroller/wheel-vsrun.png b/hub/apps/design/input/images/radialcontroller/wheel-vsrun.png deleted file mode 100644 index cc4ff909dc..0000000000 Binary files a/hub/apps/design/input/images/radialcontroller/wheel-vsrun.png and /dev/null differ diff --git a/hub/apps/design/input/images/scrolling-embedded.png b/hub/apps/design/input/images/scrolling-embedded.png deleted file mode 100644 index 24796edd77..0000000000 Binary files a/hub/apps/design/input/images/scrolling-embedded.png and /dev/null differ diff --git a/hub/apps/design/input/images/scrolling-embedded3.png b/hub/apps/design/input/images/scrolling-embedded3.png deleted file mode 100644 index 130f660fa9..0000000000 Binary files a/hub/apps/design/input/images/scrolling-embedded3.png and /dev/null differ diff --git a/hub/apps/design/input/images/scrolling-indicators.png b/hub/apps/design/input/images/scrolling-indicators.png deleted file mode 100644 index 4948beacf4..0000000000 Binary files a/hub/apps/design/input/images/scrolling-indicators.png and /dev/null differ diff --git a/hub/apps/design/input/images/select-word.png b/hub/apps/design/input/images/select-word.png deleted file mode 100644 index 17ba3209a9..0000000000 Binary files a/hub/apps/design/input/images/select-word.png and /dev/null differ diff --git a/hub/apps/design/input/images/speech-listening-complete.png b/hub/apps/design/input/images/speech-listening-complete.png deleted file mode 100644 index fdca9369fd..0000000000 Binary files a/hub/apps/design/input/images/speech-listening-complete.png and /dev/null differ diff --git a/hub/apps/design/input/images/speech-listening-initial.png b/hub/apps/design/input/images/speech-listening-initial.png deleted file mode 100644 index 9d7a840247..0000000000 Binary files a/hub/apps/design/input/images/speech-listening-initial.png and /dev/null differ diff --git a/hub/apps/design/input/images/speech-listening-intermediate.png b/hub/apps/design/input/images/speech-listening-intermediate.png deleted file mode 100644 index 9b84efcd6e..0000000000 Binary files a/hub/apps/design/input/images/speech-listening-intermediate.png and /dev/null differ diff --git a/hub/apps/design/input/images/speech/privacy.png b/hub/apps/design/input/images/speech/privacy.png deleted file mode 100644 index 714813997c..0000000000 Binary files a/hub/apps/design/input/images/speech/privacy.png and /dev/null differ diff --git a/hub/apps/design/input/images/speech/speech-listening-complete.png b/hub/apps/design/input/images/speech/speech-listening-complete.png deleted file mode 100644 index fdca9369fd..0000000000 Binary files a/hub/apps/design/input/images/speech/speech-listening-complete.png and /dev/null differ diff --git a/hub/apps/design/input/images/speech/speech-listening-initial.png b/hub/apps/design/input/images/speech/speech-listening-initial.png deleted file mode 100644 index 9d7a840247..0000000000 Binary files a/hub/apps/design/input/images/speech/speech-listening-initial.png and /dev/null differ diff --git a/hub/apps/design/input/images/speech/speech-listening-intermediate.png b/hub/apps/design/input/images/speech/speech-listening-intermediate.png deleted file mode 100644 index 9b84efcd6e..0000000000 Binary files a/hub/apps/design/input/images/speech/speech-listening-intermediate.png and /dev/null differ diff --git a/hub/apps/design/input/images/textselection-gripper-margins.png b/hub/apps/design/input/images/textselection-gripper-margins.png deleted file mode 100644 index 2c4538a48a..0000000000 Binary files a/hub/apps/design/input/images/textselection-gripper-margins.png and /dev/null differ diff --git a/hub/apps/design/input/images/textselection-place-caret.png b/hub/apps/design/input/images/textselection-place-caret.png deleted file mode 100644 index 9c2193ccee..0000000000 Binary files a/hub/apps/design/input/images/textselection-place-caret.png and /dev/null differ diff --git a/hub/apps/design/input/images/textselection-show-context.png b/hub/apps/design/input/images/textselection-show-context.png deleted file mode 100644 index 156a8e61ed..0000000000 Binary files a/hub/apps/design/input/images/textselection-show-context.png and /dev/null differ diff --git a/hub/apps/design/input/images/touch-feedback.png b/hub/apps/design/input/images/touch-feedback.png deleted file mode 100644 index 53c6a47b8e..0000000000 Binary files a/hub/apps/design/input/images/touch-feedback.png and /dev/null differ diff --git a/hub/apps/design/input/images/touch-keyboard-pan1.png b/hub/apps/design/input/images/touch-keyboard-pan1.png deleted file mode 100644 index 43c8e7eb3e..0000000000 Binary files a/hub/apps/design/input/images/touch-keyboard-pan1.png and /dev/null differ diff --git a/hub/apps/design/input/images/touch-keyboard-pan2.png b/hub/apps/design/input/images/touch-keyboard-pan2.png deleted file mode 100644 index ad602251c4..0000000000 Binary files a/hub/apps/design/input/images/touch-keyboard-pan2.png and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-drag-flick-to-go-back-forth.gif b/hub/apps/design/input/images/touch/touch-drag-flick-to-go-back-forth.gif deleted file mode 100644 index fb785e630b..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-drag-flick-to-go-back-forth.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-drag-to-dismiss.gif b/hub/apps/design/input/images/touch/touch-drag-to-dismiss.gif deleted file mode 100644 index 6835d9806f..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-drag-to-dismiss.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-drag-to-reveal-ui.gif b/hub/apps/design/input/images/touch/touch-drag-to-reveal-ui.gif deleted file mode 100644 index f2a6e681fd..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-drag-to-reveal-ui.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-follow-finger-do.gif b/hub/apps/design/input/images/touch/touch-follow-finger-do.gif deleted file mode 100644 index 84b54d2a79..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-follow-finger-do.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-follow-finger-dont.gif b/hub/apps/design/input/images/touch/touch-follow-finger-dont.gif deleted file mode 100644 index 008762d756..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-follow-finger-dont.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-hold-to-invoke-context-menu.gif b/hub/apps/design/input/images/touch/touch-hold-to-invoke-context-menu.gif deleted file mode 100644 index 7db7958bc7..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-hold-to-invoke-context-menu.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-invoke-sip-with-search.gif b/hub/apps/design/input/images/touch/touch-invoke-sip-with-search.gif deleted file mode 100644 index b07b99819a..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-invoke-sip-with-search.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-pinch-to-zoom.gif b/hub/apps/design/input/images/touch/touch-pinch-to-zoom.gif deleted file mode 100644 index 44c1c1bd72..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-pinch-to-zoom.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-pull-to-refresh.gif b/hub/apps/design/input/images/touch/touch-pull-to-refresh.gif deleted file mode 100644 index 8e8a54a0b1..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-pull-to-refresh.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-rearrange.gif b/hub/apps/design/input/images/touch/touch-rearrange.gif deleted file mode 100644 index c23578ef84..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-rearrange.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-rotate.gif b/hub/apps/design/input/images/touch/touch-rotate.gif deleted file mode 100644 index 48697308be..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-rotate.gif and /dev/null differ diff --git a/hub/apps/design/input/images/touch/touch-tap-to-activate.gif b/hub/apps/design/input/images/touch/touch-tap-to-activate.gif deleted file mode 100644 index 87294da6fd..0000000000 Binary files a/hub/apps/design/input/images/touch/touch-tap-to-activate.gif and /dev/null differ diff --git a/hub/apps/design/input/images/ux-panning-embedded-wrong.png b/hub/apps/design/input/images/ux-panning-embedded-wrong.png deleted file mode 100644 index 22079686c1..0000000000 Binary files a/hub/apps/design/input/images/ux-panning-embedded-wrong.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-panning-rails.png b/hub/apps/design/input/images/ux-panning-rails.png deleted file mode 100644 index 86bb25fbeb..0000000000 Binary files a/hub/apps/design/input/images/ux-panning-rails.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-panning-snap1.png b/hub/apps/design/input/images/ux-panning-snap1.png deleted file mode 100644 index 7d324a51c1..0000000000 Binary files a/hub/apps/design/input/images/ux-panning-snap1.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-panning-snap2.png b/hub/apps/design/input/images/ux-panning-snap2.png deleted file mode 100644 index ff75bd475f..0000000000 Binary files a/hub/apps/design/input/images/ux-panning-snap2.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-panning-snap3.png b/hub/apps/design/input/images/ux-panning-snap3.png deleted file mode 100644 index 7dedd7de91..0000000000 Binary files a/hub/apps/design/input/images/ux-panning-snap3.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-rotate-points1.png b/hub/apps/design/input/images/ux-rotate-points1.png deleted file mode 100644 index 238918dc10..0000000000 Binary files a/hub/apps/design/input/images/ux-rotate-points1.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-rotate-points2.png b/hub/apps/design/input/images/ux-rotate-points2.png deleted file mode 100644 index dd2884eced..0000000000 Binary files a/hub/apps/design/input/images/ux-rotate-points2.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-rotate-points3.png b/hub/apps/design/input/images/ux-rotate-points3.png deleted file mode 100644 index 905a07a04d..0000000000 Binary files a/hub/apps/design/input/images/ux-rotate-points3.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-rotate-points4.png b/hub/apps/design/input/images/ux-rotate-points4.png deleted file mode 100644 index a1cf4c1cfc..0000000000 Binary files a/hub/apps/design/input/images/ux-rotate-points4.png and /dev/null differ diff --git a/hub/apps/design/input/images/ux-rotate-positions.png b/hub/apps/design/input/images/ux-rotate-positions.png deleted file mode 100644 index d0122a11df..0000000000 Binary files a/hub/apps/design/input/images/ux-rotate-positions.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/dial-and-pen-400px.png b/hub/apps/design/input/images/windows-wheel/dial-and-pen-400px.png deleted file mode 100644 index 455cbff88d..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/dial-and-pen-400px.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/dial-pen-studio-600px.png b/hub/apps/design/input/images/windows-wheel/dial-pen-studio-600px.png deleted file mode 100644 index 8a2b638e89..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/dial-pen-studio-600px.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon1.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon1.png deleted file mode 100644 index 5274d28af3..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon1.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon2.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon2.png deleted file mode 100644 index 5eee64663b..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon2.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon3.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon3.png deleted file mode 100644 index 543fcca12e..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-icon3.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-pen.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-pen.png deleted file mode 100644 index aabb0d0380..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-pen.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-ruler.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-ruler.png deleted file mode 100644 index 30dd5b7d71..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-ruler.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-strokesize.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-strokesize.png deleted file mode 100644 index 6c9809e49a..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-inktoolbar-strokesize.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-offscreen.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-offscreen.png deleted file mode 100644 index e100f01f76..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-offscreen.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-onscreen.png b/hub/apps/design/input/images/windows-wheel/surface-dial-menu-onscreen.png deleted file mode 100644 index 33f7750123..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-menu-onscreen.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-rotate.png b/hub/apps/design/input/images/windows-wheel/surface-dial-rotate.png deleted file mode 100644 index 80e425a851..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-rotate.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool1.png b/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool1.png deleted file mode 100644 index 0977049440..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool1.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool2.png b/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool2.png deleted file mode 100644 index 2702180eb0..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool2.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool3.png b/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool3.png deleted file mode 100644 index 067d6ee0d9..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool3.png and /dev/null differ diff --git a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool4.png b/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool4.png deleted file mode 100644 index 56b9ebc0e9..0000000000 Binary files a/hub/apps/design/input/images/windows-wheel/surface-dial-snippet-customtool4.png and /dev/null differ diff --git a/hub/apps/design/input/index.md b/hub/apps/design/input/index.md deleted file mode 100644 index f572858c45..0000000000 --- a/hub/apps/design/input/index.md +++ /dev/null @@ -1,229 +0,0 @@ ---- -description: Learn how to customize your Universal Windows Platform (UWP) app for interaction with specific types of inputs including pen, Surface dial, and speech. -title: Input and interactions -keywords: app inputs, customize UWP application -label: Input and interactions -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -ms.assetid: b771d452-c3ac-4d97-8482-eaf81bf34306 -ms.localizationpriority: medium ---- - -# Input and interactions - -UWP apps automatically handle a wide variety of inputs and run on a variety of devices—there’s nothing extra you need to do to enable touch input, for example. But there are times when you might want to optimize your app for certain types of input or devices. For example, if you’re creating a painting app, you might want to customize the way you handle pen input. - -The design and coding instructions in this section help you customize your UWP app for specific types of inputs. - -:::row::: - :::column::: -

Input primer

-

Familiarize yourself with each input device type and its behaviors, capabilities, and limitations when paired with certain form factors.

- :::column-end::: - :::column::: -

Gaze input

-

Track a user's gaze based on the location and movement of their eyes and head.

- :::column-end::: -:::row-end::: - - - -:::row::: - :::column::: -

Input

- Identify input devices
- Pointer
- Pen and Windows Ink
- Touch
- Mouse
- Keyboard
- Gamepad and remote control
- Touchpad
- Surface Dial
- Multiple inputs
- Input injection
- Custom text input
- :::column-end::: - :::column::: -

Interactions

- Drag and drop
- Panning
- Rotation
- Selecting text and images
- Targeting
- Visual feedback
- :::column-end::: - :::column::: -

Speech and AI

- Speech
- Cortana
- :::column-end::: -:::row-end::: - - - - - diff --git a/hub/apps/design/input/ink-toolbar.md b/hub/apps/design/input/ink-toolbar.md deleted file mode 100644 index 54d44f854e..0000000000 --- a/hub/apps/design/input/ink-toolbar.md +++ /dev/null @@ -1,1134 +0,0 @@ ---- -description: Add a default InkToolbar to a Windows app inking app, add a custom pen button to the InkToolbar, and bind the custom pen button to a custom pen definition. -title: Add an InkToolbar to a Windows app -label: Add an InkToolbar to a Windows app -template: detail.hbs -keywords: Windows Ink, Windows Inking, DirectInk, InkPresenter, InkCanvas, InkToolbar, Universal Windows Platform, UWP, user interaction, input -ms.date: 05/03/2022 -ms.topic: how-to - - -ms.assetid: d888f75f-c2a0-4134-81db-907b5e24fcc5 -ms.localizationpriority: medium ---- -# Add an InkToolbar to a Windows app - - - -There are two different controls that facilitate inking in Windows apps: [**InkCanvas**](/uwp/api/windows.ui.xaml.controls.inkcanvas) and [**InkToolbar**](/uwp/api/windows.ui.xaml.controls.inktoolbar). - -The [**InkCanvas**](/uwp/api/windows.ui.xaml.controls.inkcanvas) control provides basic Windows Ink functionality. Use it to render pen input as either an ink stroke (using default settings for color and thickness) or an erase stroke. - -> For InkCanvas implementation details, see [Pen and stylus interactions in Windows apps](pen-and-stylus-interactions.md). - -As a completely transparent overlay, the InkCanvas does not provide any built-in UI for setting ink stroke properties. If you want to change the default inking experience, let users set ink stroke properties, and support other custom inking features, you have two options: - -- In code-behind, use the underlying [**InkPresenter**](/uwp/api/windows.ui.input.inking.inkpresenter) object bound to the InkCanvas. - - The InkPresenter APIs support extensive customization of the inking experience. For more detail, see [Pen and stylus interactions in Windows apps](pen-and-stylus-interactions.md). - -- Bind an [**InkToolbar**](/uwp/api/windows.ui.xaml.controls.inktoolbar) to the InkCanvas. By default, the InkToolbar provides a customizable and extensible collection of buttons for activating ink-related features such as stroke size, ink color, and pen tip. - - We discuss the InkToolbar in this topic. - -> **Important APIs**: [**InkCanvas class**](/uwp/api/windows.ui.xaml.controls.inkcanvas), [**InkToolbar class**](/uwp/api/windows.ui.xaml.controls.inktoolbar), [**InkPresenter class**](/uwp/api/windows.ui.input.inking.inkpresenter), [**Windows.UI.Input.Inking**](/uwp/api/Windows.UI.Input.Inking) - -## Default InkToolbar - -By default, the [**InkToolbar**](/uwp/api/windows.ui.xaml.controls.inktoolbar) includes buttons for drawing, erasing, highlighting, and displaying a stencil (ruler or protractor). Depending on the feature, other settings and commands, such as ink color, stroke thickness, erase all ink, are provided in a flyout. - -![InkToolbar](./images/ink/ink-tools-invoked-toolbar-small.png) -*Default Windows Ink toolbar* - -To add a default [**InkToolbar**](/uwp/api/windows.ui.xaml.controls.inktoolbar) to an inking app, just place it on the same page as your [**InkCanvas**](/uwp/api/windows.ui.xaml.controls.inkcanvas) and associate the two controls. - -1. In MainPage.xaml, declare a container object (for this example, we use a Grid control) for the inking surface. -2. Declare an InkCanvas object as a child of the container. (The InkCanvas size is inherited from the container.) -3. Declare an InkToolbar and use the TargetInkCanvas attribute to bind it to the InkCanvas. - -> [!NOTE] -> Ensure the InkToolbar is declared after the InkCanvas. If not, the InkCanvas overlay renders the InkToolbar inaccessible. - -```xaml - - - - - - - - - - - - - - -``` - -## Basic customization - -In this section, we cover some basic Windows Ink toolbar customization scenarios. - -### Specify location and orientation - -When you add an ink toolbar to your app, you can accept the default location and orientation of the toolbar or set them as required by your app or user. - -**XAML** - -Explicitly specify the location and orientation of the toolbar through its [VerticalAlignment](/uwp/api/windows.ui.xaml.frameworkelement.VerticalAlignment), [HorizontalAlignment](/uwp/api/windows.ui.xaml.frameworkelement.HorizontalAlignment), and [Orientation](/uwp/api/windows.ui.xaml.controls.inktoolbar?branch=rs3.Orientation) properties. - -| Default | Explicit | -| --- | --- | -| ![Default ink toolbar location and orientation](./images/ink/location-default-small.png) | ![Explicit ink toolbar location and orientation](./images/ink/location-explicit-small.png) | -| *Windows Ink toolbar default location and orientation* | *Windows Ink toolbar explicit location and orientation* | - -Here's the code for explicitly setting the location and orientation of the ink toolbar in XAML. -```xaml - -``` - -**Initialize based on user preferences or device state** - -In some cases, you might want to set the location and orientation of the ink toolbar based on user preference or device state. The following example demonstrates how to set the location and orientation of the ink toolbar based on the left or right-hand writing preferences specified through **Settings > Devices > Pen & Windows Ink > Pen > Choose which hand you write with**. - -![Dominant hand setting](./images/ink/location-handedness-setting.png) -*Dominant hand setting* - -You can query this setting through the HandPreference property of Windows.UI.ViewManagement and set the [HorizontalAlignment](/uwp/api/windows.ui.xaml.frameworkelement.HorizontalAlignment) based on the value returned. In this example, we locate the toolbar on the left side of the app for a left-handed person and on the right side for a right-handed person. - -**Download this sample from [Ink toolbar location and orientation sample (basic)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-ink-toolbar-handedness.zip)** - -```csharp -public MainPage() -{ - this.InitializeComponent(); - - Windows.UI.ViewManagement.UISettings settings = - new Windows.UI.ViewManagement.UISettings(); - HorizontalAlignment alignment = - (settings.HandPreference == - Windows.UI.ViewManagement.HandPreference.LeftHanded) ? - HorizontalAlignment.Left : HorizontalAlignment.Right; - inkToolbar.HorizontalAlignment = alignment; -} -``` - -**Dynamically adjust to user or device state** - -You can also use binding to look after UI updates based on changes to user preferences, device settings, or device states. In the following example, we expand on the previous example and show how to dynamically position the ink toolbar based on device orientation using binding, a ViewMOdel object, and the [INotifyPropertyChanged](/uwp/api/windows.ui.xaml.data.inotifypropertychanged) interface. - -**Download this sample from [Ink toolbar location and orientation sample (dynamic)](https://github.com/MicrosoftDocs/windows-topic-specific-samples/archive/uwp-ink-toolbar-handedness-dynamic.zip)** - -1. First, let's add our ViewModel. - 1. Add a new folder to your project and call it **ViewModels**. - 1. Add a new class to the ViewModels folder (for this example, we called it **InkToolbarSnippetHostViewModel.cs**). - > [!NOTE] - > We used the [Singleton pattern](/previous-versions/msp-n-p/ff650849(v=pandp.10)) as we only need one object of this type for the life of the application - - 1. Add `using System.ComponentModel` namespace to the file. - 1. Add a static member variable called **instance**, and a static read only property named **Instance**. Make the constructor private to ensure this class can only be accessed via the Instance property. - > [!NOTE] - > This class inherits from [INotifyPropertyChanged](/uwp/api/windows.ui.xaml.data.inotifypropertychanged) interface, which is used to notify clients, typically binding clients, that a property value has changed. We'll be using this to handle changes to the device orientation (we'll expand this code and explain further in a later step). - - ```csharp - using System.ComponentModel; - - namespace locationandorientation.ViewModels - { - public class InkToolbarSnippetHostViewModel : INotifyPropertyChanged - { - private static InkToolbarSnippetHostViewModel instance; - - public static InkToolbarSnippetHostViewModel Instance - { - get - { - if (null == instance) - { - instance = new InkToolbarSnippetHostViewModel(); - } - return instance; - } - } - } - - private InkToolbarSnippetHostViewModel() { } - } - ``` - - 1. Add two bool properties to the InkToolbarSnippetHostViewModel class: **LeftHandedLayout** (same functionality as the previous XAML-only example) and **PortraitLayout** (orientation of the device). - >[!NOTE] - > The PortraitLayout property is settable and includes the definition for the [PropertyChanged](/uwp/api/windows.ui.xaml.data.inotifypropertychanged.PropertyChanged) event. - - ```csharp - public bool LeftHandedLayout - { - get - { - bool leftHandedLayout = false; - Windows.UI.ViewManagement.UISettings settings = - new Windows.UI.ViewManagement.UISettings(); - leftHandedLayout = (settings.HandPreference == - Windows.UI.ViewManagement.HandPreference.LeftHanded); - return leftHandedLayout; - } - } - - public bool portraitLayout = false; - public bool PortraitLayout - { - get - { - Windows.UI.ViewManagement.ApplicationViewOrientation winOrientation = - Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().Orientation; - portraitLayout = - (winOrientation == - Windows.UI.ViewManagement.ApplicationViewOrientation.Portrait); - return portraitLayout; - } - set - { - if (value.Equals(portraitLayout)) return; - portraitLayout = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PortraitLayout")); - } - } - ``` - -1. Now, let's add a couple of converter classes to our project. Each class contains a Convert object that returns an alignment value (either [HorizontalAlignment](/uwp/api/windows.ui.xaml.horizontalalignment) or [VerticalAlignment](/uwp/api/windows.ui.xaml.verticalalignment)). - 1. Add a new folder to your project and call it **Converters**. - 1. Add two new classes to the Converters folder (for this example, we call them **HorizontalAlignmentFromHandednessConverter.cs** and **VerticalAlignmentFromAppViewConverter.cs**). - 1. Add `using Windows.UI.Xaml` and `using Windows.UI.Xaml.Data` namespaces to each file. - 1. Change each class to `public` and specify that it implements the [IValueConverter](/uwp/api/windows.ui.xaml.data.ivalueconverter) interface. - 1. Add the [Convert](/uwp/api/windows.ui.xaml.data.ivalueconverter.convert) and [ConvertBack](/uwp/api/windows.ui.xaml.data.ivalueconverter.convertback) methods to each file, as shown here (we leave the ConvertBack method unimplemented). - - HorizontalAlignmentFromHandednessConverter positions the ink toolbar to the right side of the app for right-handed users and to the left side of the app for left-handed users. - ```csharp - using System; - - using Windows.UI.Xaml; - using Windows.UI.Xaml.Data; - - namespace locationandorientation.Converters - { - public class HorizontalAlignmentFromHandednessConverter : IValueConverter - { - public object Convert(object value, Type targetType, - object parameter, string language) - { - bool leftHanded = (bool)value; - HorizontalAlignment alignment = HorizontalAlignment.Right; - if (leftHanded) - { - alignment = HorizontalAlignment.Left; - } - return alignment; - } - - public object ConvertBack(object value, Type targetType, - object parameter, string language) - { - throw new NotImplementedException(); - } - } - } - ``` - - - VerticalAlignmentFromAppViewConverter positions the ink toolbar to the center of the app for portrait orientation and to the top of the app for landscape orientation (while intended to improve usability, this is just an arbitrary choice for demonstration purposes). - ```csharp - using System; - - using Windows.UI.Xaml; - using Windows.UI.Xaml.Data; - - namespace locationandorientation.Converters - { - public class VerticalAlignmentFromAppViewConverter : IValueConverter - { - public object Convert(object value, Type targetType, - object parameter, string language) - { - bool portraitOrientation = (bool)value; - VerticalAlignment alignment = VerticalAlignment.Top; - if (portraitOrientation) - { - alignment = VerticalAlignment.Center; - } - return alignment; - } - - public object ConvertBack(object value, Type targetType, - object parameter, string language) - { - throw new NotImplementedException(); - } - } - } - ``` - -1. Now, open the MainPage.xaml.cs file. - 1. Add `using using locationandorientation.ViewModels` to the list of namespaces to associate our ViewModel. - 1. Add `using Windows.UI.ViewManagement` to the list of namespaces to enable listening for changes to the device orientation. - 1. Add the [WindowSizeChangedEventHandler](/uwp/api/windows.ui.xaml.windowsizechangedeventhandler) code. - 1. Set the [DataContext](/uwp/api/Windows.UI.Xaml.FrameworkElement.DataContext) for the view to the singleton instance of the InkToolbarSnippetHostViewModel class. - ```csharp - using Windows.UI.Xaml; - using Windows.UI.Xaml.Controls; - - using locationandorientation.ViewModels; - using Windows.UI.ViewManagement; - - namespace locationandorientation - { - public sealed partial class MainPage : Page - { - public MainPage() - { - this.InitializeComponent(); - - Window.Current.SizeChanged += (sender, args) => - { - ApplicationView currentView = ApplicationView.GetForCurrentView(); - - if (currentView.Orientation == ApplicationViewOrientation.Landscape) - { - InkToolbarSnippetHostViewModel.Instance.PortraitLayout = false; - } - else if (currentView.Orientation == ApplicationViewOrientation.Portrait) - { - InkToolbarSnippetHostViewModel.Instance.PortraitLayout = true; - } - }; - - DataContext = InkToolbarSnippetHostViewModel.Instance; - } - } - } - ``` - -1. Next, open the MainPage.xaml file. - 1. Add `xmlns:converters="using:locationandorientation.Converters"` to the `Page` element for binding to our converters. - ```xaml - - ``` - - 1. Add a `PageResources` element and specify references to our converters. - ```xaml - - - - - ``` - - 1. Add the InkCanvas and InkToolbar elements and bind the VerticalAlignment and HorizontalAlignment properties of the InkToolbar. - ```xaml - - - ``` - -1. Return to the InkToolbarSnippetHostViewModel.cs file to add our `PortraitLayout` and `LeftHandedLayout` bool properties to the `InkToolbarSnippetHostViewModel` class, along with support for rebinding `PortraitLayout` when that property value changes. - ```csharp - public bool LeftHandedLayout - { - get - { - bool leftHandedLayout = false; - Windows.UI.ViewManagement.UISettings settings = - new Windows.UI.ViewManagement.UISettings(); - leftHandedLayout = (settings.HandPreference == - Windows.UI.ViewManagement.HandPreference.LeftHanded); - return leftHandedLayout; - } - } - - public bool portraitLayout = false; - public bool PortraitLayout - { - get - { - Windows.UI.ViewManagement.ApplicationViewOrientation winOrientation = - Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().Orientation; - portraitLayout = - (winOrientation == - Windows.UI.ViewManagement.ApplicationViewOrientation.Portrait); - return portraitLayout; - } - set - { - if (value.Equals(portraitLayout)) return; - portraitLayout = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PortraitLayout")); - } - } - - #region INotifyPropertyChanged Members - - public event PropertyChangedEventHandler PropertyChanged; - - protected void OnPropertyChanged(string property) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); - } - - #endregion - ``` - -You should now have an inking app that adapts to both the dominant hand preference of the user and dynamically responds to the orientation of the user's device. - -### Specify the selected button -![Pencil button selected at initialization](./images/ink/ink-tools-default-toolbar.png) -*Windows Ink toolbar with pencil button selected at initialization* - -By default, the first (or leftmost) button is selected when your app is launched and the toolbar is initialized. In the default Windows Ink toolbar, this is the ballpoint pen button. - -Because the framework defines the order of the built-in buttons, the first button might not be the pen or tool you want to activate by default. - -You can override this default behavior and specify the selected button on the toolbar. - -For this example, we initialize the default toolbar with the pencil button selected and the pencil activated (instead of the ballpoint pen). - -1. Use the XAML declaration for the InkCanvas and InkToolbar from the previous example. -2. In code-behind, set up a handler for the [Loaded](/uwp/api/windows.ui.xaml.frameworkelement.loaded) event of the [InkToolbar](/uwp/api/windows.ui.xaml.controls.inktoolbar) object. - - ```csharp - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// Here, we set up InkToolbar event listeners. - /// - public MainPage_CodeBehind() - { - this.InitializeComponent(); - // Add handlers for InkToolbar events. - inkToolbar.Loaded += inkToolbar_Loaded; - } - ``` - -3. In the handler for the [Loaded](/uwp/api/windows.ui.xaml.frameworkelement.loaded) event: - 1. Get a reference to the built-in [InkToolbarPencilButton](/uwp/api/windows.ui.xaml.controls.inktoolbarpencilbutton). - - Passing an [InkToolbarTool.Pencil](/uwp/api/windows.ui.xaml.controls.inktoolbartool) object in the [GetToolButton](/uwp/api/windows.ui.xaml.controls.inktoolbar.gettoolbutton) method returns an [InkToolbarToolButton](/uwp/api/windows.ui.xaml.controls.inktoolbartoolbutton) object for the [InkToolbarPencilButton](/uwp/api/windows.ui.xaml.controls.inktoolbarpencilbutton). - - 2. Set [ActiveTool](/uwp/api/windows.ui.xaml.controls.inktoolbar.activetool) to the object returned in the previous step. - -```CSharp -/// -/// Handle the Loaded event of the InkToolbar. -/// By default, the active tool is set to the first tool on the toolbar. -/// Here, we set the active tool to the pencil button. -/// -/// -/// -private void inkToolbar_Loaded(object sender, RoutedEventArgs e) -{ - InkToolbarToolButton pencilButton = inkToolbar.GetToolButton(InkToolbarTool.Pencil); - inkToolbar.ActiveTool = pencilButton; -} -``` - -### Specify the built-in buttons - -![Specific buttons included at initialization](./images/ink/ink-tools-specific.png) -*Specific buttons included at initialization* - -As mentioned, the Windows Ink toolbar includes a collection of default, built-in buttons. These buttons are displayed in the following order (from left to right): - -- [InkToolbarBallpointPenButton](/uwp/api/windows.ui.xaml.controls.inktoolbarballpointpenbutton) -- [InkToolbarPencilButton](/uwp/api/windows.ui.xaml.controls.inktoolbarpencilbutton) -- [InkToolbarHighlighterButton](/uwp/api/windows.ui.xaml.controls.inktoolbarhighlighterbutton) -- [InkToolbarEraserButton](/uwp/api/windows.ui.xaml.controls.inktoolbareraserbutton) -- [InkToolbarRulerButton](/uwp/api/windows.ui.xaml.controls.inktoolbarrulerbutton) - -For this example, we initialize the toolbar with only the built-in ballpoint pen, pencil, and eraser buttons. - -You can do this using either XAML or code-behind. - -**XAML** - -Modify the XAML declaration for the InkCanvas and InkToolbar from the first example. -- Add an [InitialControls](/uwp/api/windows.ui.xaml.controls.inktoolbar.initialcontrols) attribute and set its value to "[None](/uwp/api/windows.ui.xaml.controls.inktoolbarinitialcontrols)". This clears the default collection of built-in buttons. -- Add the specific InkToolbar buttons required by your app. Here, we add [InkToolbarBallpointPenButton](/uwp/api/windows.ui.xaml.controls.inktoolbarballpointpenbutton), [InkToolbarPencilButton](/uwp/api/windows.ui.xaml.controls.inktoolbarpencilbutton), and [InkToolbarEraserButton](/uwp/api/windows.ui.xaml.controls.inktoolbareraserbutton) only. -> [!NOTE] -> Buttons are added to the toolbar in the order defined by the framework, not the order specified here. - -```xaml - - - - - - - - - - - - - - - - - - - - - -``` - -**Code-behind** -1. Use the XAML declaration for the InkCanvas and InkToolbar from the first example. - - ```xaml - - - - - - - - - - - - - - - ``` - -2. In code-behind, set up a handler for the [Loading](/uwp/api/windows.ui.xaml.frameworkelement.loading) event of the [InkToolbar](/uwp/api/windows.ui.xaml.controls.inktoolbar) object. - - ```csharp - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// Here, we set up InkToolbar event listeners. - /// - public MainPage_CodeBehind() - { - this.InitializeComponent(); - // Add handlers for InkToolbar events. - inkToolbar.Loading += inkToolbar_Loading; - } - ``` - -3. Set [InitialControls](/uwp/api/windows.ui.xaml.controls.inktoolbar.initialcontrols) to "[None](/uwp/api/windows.ui.xaml.controls.inktoolbarinitialcontrols)". -4. Create object references for the buttons required by your app. Here, we add [InkToolbarBallpointPenButton](/uwp/api/windows.ui.xaml.controls.inktoolbarballpointpenbutton), [InkToolbarPencilButton](/uwp/api/windows.ui.xaml.controls.inktoolbarpencilbutton), and [InkToolbarEraserButton](/uwp/api/windows.ui.xaml.controls.inktoolbareraserbutton) only. - > [!NOTE] - > Buttons are added to the toolbar in the order defined by the framework, not the order specified here. - -5. Add the buttons to the InkToolbar. - - ```csharp - /// - /// Handles the Loading event of the InkToolbar. - /// Here, we identify the buttons to include on the InkToolbar. - /// - /// The InkToolbar - /// The InkToolbar event data. - /// If there is no event data, this parameter is null - private void inkToolbar_Loading(FrameworkElement sender, object args) - { - // Clear all built-in buttons from the InkToolbar. - inkToolbar.InitialControls = InkToolbarInitialControls.None; - - // Add only the ballpoint pen, pencil, and eraser. - // Note that the buttons are added to the toolbar in the order - // defined by the framework, not the order we specify here. - InkToolbarBallpointPenButton ballpoint = new InkToolbarBallpointPenButton(); - InkToolbarPencilButton pencil = new InkToolbarPencilButton(); - InkToolbarEraserButton eraser = new InkToolbarEraserButton(); - inkToolbar.Children.Add(eraser); - inkToolbar.Children.Add(ballpoint); - inkToolbar.Children.Add(pencil); - } - ``` - - - -## Custom buttons and inking features - -You can customize and extend the collection of buttons (and associated inking features) that are provided through the InkToolbar. - -The InkToolbar consists of two distinct groups of button types: - -1. A group of "tool" buttons containing the built-in drawing, erasing, and highlighting buttons. Custom pens and tools are added here. -> **Note**  Feature selection is mutually exclusive. - -2. A group of "toggle" buttons containing the built-in ruler button. Custom toggles are added here. -> **Note**  Features are not mutually exclusive and can be used concurrently with other active tools. - -Depending on your application and the inking functionality required, you can add any of the following buttons (bound to your custom ink features) to the InkToolbar: - -- Custom pen – a pen for which the ink color palette and pen tip properties, such as shape, rotation, and size, are defined by the host app. -- Custom tool – a non-pen tool, defined by the host app. -- Custom toggle – Sets the state of an app-defined feature to on or off. When turned on, the feature works in conjunction with the active tool. - -> **Note**  You cannot change the display order of the built-in buttons. The default display order is: Ballpoint pen, pencil, highlighter, eraser, and ruler. Custom pens are appended to the last default pen, custom tool buttons are added between the last pen button and the eraser button and custom toggle buttons are added after the ruler button. (Custom buttons are added in the order they are specified.) - -### Custom pen - -You can create a custom pen (activated through a custom pen button) where you define the ink color palette and pen tip properties, such as shape, rotation, and size. - -![Custom calligraphic pen button](./images/ink/ink-tools-custompen.png) -*Custom calligraphic pen button* - -For this example, we define a custom pen with a broad tip that enables basic calligraphic ink strokes. We also customize the collection of brushes in the palette displayed on the button flyout. - -**Code-behind** - -First, we define our custom pen and specify the drawing attributes in code-behind. We reference this custom pen from XAML later. - -1. Right click the project in Solution Explorer and select Add -> New item. -2. Under Visual C# -> Code, add a new Class file and call it CalligraphicPen.cs. -3. In Calligraphic.cs, replace the default using block with the following: -```csharp -using System.Numerics; -using Windows.UI; -using Windows.UI.Input.Inking; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Media; -``` - -4. Specify that the CalligraphicPen class is derived from [InkToolbarCustomPen](/uwp/api/windows.ui.xaml.controls.inktoolbarcustompen). -```csharp -class CalligraphicPen : InkToolbarCustomPen -{ -} -``` - -5. Override [CreateInkDrawingAttributesCore](/uwp/api/windows.ui.xaml.controls.inktoolbarcustompen.createinkdrawingattributescore) to specify your own brush and stroke size. -```csharp -class CalligraphicPen : InkToolbarCustomPen -{ - protected override InkDrawingAttributes - CreateInkDrawingAttributesCore(Brush brush, double strokeWidth) - { - } -} -``` - -6. Create an [InkDrawingAttributes](/uwp/api/windows.ui.input.inking.inkdrawingattributes) object and set the [pen tip shape](/uwp/api/windows.ui.input.inking.inkdrawingattributes.pentip), [tip rotation](/uwp/api/windows.ui.input.inking.inkdrawingattributes.pentiptransform), [stroke size](/uwp/api/windows.ui.input.inking.inkdrawingattributes.size), and [ink color](/uwp/api/windows.ui.input.inking.inkdrawingattributes.color). -```csharp -class CalligraphicPen : InkToolbarCustomPen -{ - protected override InkDrawingAttributes - CreateInkDrawingAttributesCore(Brush brush, double strokeWidth) - { - InkDrawingAttributes inkDrawingAttributes = - new InkDrawingAttributes(); - inkDrawingAttributes.PenTip = PenTipShape.Circle; - inkDrawingAttributes.Size = - new Windows.Foundation.Size(strokeWidth, strokeWidth * 20); - SolidColorBrush solidColorBrush = brush as SolidColorBrush; - if (solidColorBrush != null) - { - inkDrawingAttributes.Color = solidColorBrush.Color; - } - else - { - inkDrawingAttributes.Color = Colors.Black; - } - - Matrix3x2 matrix = Matrix3x2.CreateRotation(45); - inkDrawingAttributes.PenTipTransform = matrix; - - return inkDrawingAttributes; - } -} -``` - -**XAML** - -Next, we add the necessary references to the custom pen in MainPage.xaml. - -1. We declare a local page resource dictionary that creates a reference to the custom pen (`CalligraphicPen`) defined in CalligraphicPen.cs, and a [brush collection](/uwp/api/Windows.UI.Xaml.Media.BrushCollection) supported by the custom pen (`CalligraphicPenPalette`). -```xaml - - - - - - - - - -``` - -2. We then add an InkToolbar with a child [InkToolbarCustomPenButton](/uwp/api/windows.ui.xaml.controls.inktoolbarcustompenbutton) element. - - The custom pen button includes the two static resource references declared in the page resources: `CalligraphicPen` and `CalligraphicPenPalette`. - - We also specify the range for the stroke size slider ([MinStrokeWidth](/uwp/api/windows.ui.xaml.controls.inktoolbarpenbutton.minstrokewidth), [MaxStrokeWidth](/uwp/api/windows.ui.xaml.controls.inktoolbarpenbutton.maxstrokewidth), and [SelectedStrokeWidth](/uwp/api/windows.ui.xaml.controls.inktoolbarpenbutton.selectedstrokewidthproperty)), the selected brush ([SelectedBrushIndex](/uwp/api/windows.ui.xaml.controls.inktoolbarpenbutton.selectedbrushindex)), and the icon for the custom pen button ([SymbolIcon](/uwp/api/windows.ui.xaml.controls.symbolicon)). -```xaml - - - - - - - - - - - -``` - -### Custom toggle - -You can create a custom toggle (activated through a custom toggle button) to set the state of an app-defined feature to on or off. When turned on, the feature works in conjunction with the active tool. - -In this example, we define a custom toggle button that enables inking with touch input (by default, touch inking is not enabled). - -> [!NOTE] -> If you need to support inking with touch, we recommended that you enable it using a CustomToggleButton, with the icon and [tooltip](../controls/tooltips.md) specified in this example. - -Typically, touch input is used for direct manipulation of an object or the app UI. To demonstrate the differences in behavior when touch inking is enabled, we place the InkCanvas within a ScrollViewer container and set the dimensions of the ScrollViewer to be smaller than the InkCanvas. - -When the app starts, only pen inking is supported and touch is used to pan or zoom the inking surface. When touch inking is enabled, the inking surface cannot be panned or zoomed through touch input. - -> [!NOTE] -> See [Inking controls](../controls/inking-controls.md) for both [**InkCanvas**](/uwp/api/Windows.UI.Xaml.Controls.InkCanvas) and [**InkToolbar**](/uwp/api/Windows.UI.Xaml.Controls.InkToolbar) UX guidelines. The following recommendations are relevant to this example: -> - The [**InkToolbar**](/uwp/api/Windows.UI.Xaml.Controls.InkToolbar), and inking in general, is best experienced through an active pen. However, inking with mouse and touch can be supported if required by your app. -> - If supporting inking with touch input, we recommend using the "ED5F" icon from the "Segoe MLD2 Assets" font for the toggle button, with a "Touch writing" tooltip. - -**XAML** - -1. First, we declare an [**InkToolbarCustomToggleButton**](/uwp/api/Windows.UI.Xaml.Controls.InkToolbarCustomToggleButton) element (toggleButton) with a Click event listener that specifies the event handler (Toggle_Custom). - -```xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -**Code-behind** - -2. In the previous snippet, we declared a Click event listener and handler (Toggle_Custom) on the custom toggle button for touch inking (toggleButton). This handler simply toggles support for CoreInputDeviceTypes.Touch through the InputDeviceTypes property of the InkPresenter. - - We also specified an icon for the button using the SymbolIcon element and the {x:Bind} markup extension that binds it to a field defined in the code-behind file (TouchWritingIcon). - - The following snippet includes both the Click event handler and the definition of TouchWritingIcon. - -```csharp -namespace Ink_Basic_InkToolbar -{ - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// - public sealed partial class MainPage_AddCustomToggle : Page - { - Symbol TouchWritingIcon = (Symbol)0xED5F; - - public MainPage_AddCustomToggle() - { - this.InitializeComponent(); - } - - // Handler for the custom toggle button that enables touch inking. - private void CustomToggle_Click(object sender, RoutedEventArgs e) - { - if (toggleButton.IsChecked == true) - { - inkCanvas.InkPresenter.InputDeviceTypes |= CoreInputDeviceTypes.Touch; - } - else - { - inkCanvas.InkPresenter.InputDeviceTypes &= ~CoreInputDeviceTypes.Touch; - } - } - } -} -``` - -### Custom tool - -You can create a custom tool button to invoke a non-pen tool that is defined by your app. - -By default, an [**InkPresenter**](/uwp/api/Windows.UI.Input.Inking.InkPresenter) processes all input as either an ink stroke or an erase stroke. This includes input modified by a secondary hardware affordance such as a pen barrel button, a right mouse button, or similar. However, [**InkPresenter**](/uwp/api/Windows.UI.Input.Inking.InkPresenter) can be configured to leave specific input unprocessed, which can then be passed through to your app for custom processing. - -In this example, we define a custom tool button that, when selected, causes subsequent strokes to be processed and rendered as a selection lasso (dashed line) instead of ink. All ink strokes within the bounds of the selection area are set to [**Selected**](/uwp/api/windows.ui.input.inking.inkstroke.selected). - -> [!NOTE] -> See Inking controls for both InkCanvas and InkToolbar UX guidelines. The following recommendation is relevant to this example: -> - If providing stroke selection, we recommend using the "EF20" icon from the "Segoe MLD2 Assets" font for the tool button, with a "Selection tool" tooltip. - -**XAML** - -1. First, we declare an [**InkToolbarCustomToolButton**](/uwp/api/Windows.UI.Xaml.Controls.InkToolbarCustomToolButton) element (customToolButton) with a Click event listener that specifies the event handler (customToolButton_Click) where stroke selection is configured. (We've also added a set of buttons for copying, cutting, and pasting the stroke selection.) - -2. We also add a Canvas element for drawing our selection stroke. Using a separate layer to draw the selection stroke ensures the [**InkCanvas**](/uwp/api/Windows.UI.Xaml.Controls.InkCanvas) and its content remain untouched. - -```xaml - - - - - - - - - - - - - - - - -``` - -If an element implements multiple control patterns, only one can be activated through an accelerator. The control patterns are prioritized as follows: -1. Invoke (Button) -2. Toggle (Checkbox) -3. Selection (ListView) -4. Expand/Collapse (ComboBox)  - -If no match is identified, the accelerator is invalid and a debug message is provided ("No automation patterns for this component found. Implement all desired behavior in the Invoked event. Setting Handled to true in your event handler suppresses this message.") - -## Custom keyboard accelerator behavior - -The Invoked event of the [KeyboardAccelerator](/uwp/api/windows.ui.xaml.input.keyboardaccelerator) object is fired when the accelerator is executed. The [KeyboardAcceleratorInvokedEventArgs](/uwp/api/windows.ui.xaml.input.keyboardacceleratorinvokedeventargs) event object includes the following properties: - -- [**Handled**](/uwp/api/windows.ui.xaml.input.keyboardacceleratorinvokedeventargs.handled) (Boolean): Setting this to true prevents the event triggering the control pattern and stops accelerator event bubbling. The default is false. -- [**Element**](/uwp/api/windows.ui.xaml.input.keyboardacceleratorinvokedeventargs.element) (DependencyObject): The object associated with the accelerator. -- [**KeyboardAccelerator**](/uwp/api/windows.ui.xaml.input.keyboardacceleratorinvokedeventargs.keyboardaccelerator): The keyboard accelerator used to raise the Invoked event. - -Here we demonstrate how to define a collection of keyboard accelerators for items in a ListView, and how to handle the Invoked event for each accelerator. - -``` xaml - - - - - - -``` - -``` csharp -void SelectAllInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args) -{ - MyListView.SelectAll(); - args.Handled = true; -} - -void RefreshInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args) -{ - MyListView.SelectionMode = ListViewSelectionMode.None; - MyListView.SelectionMode = ListViewSelectionMode.Multiple; - args.Handled = true; -} -``` - -## Override default keyboard behavior - -Some controls, when they have focus, support built-in keyboard accelerators that override any app-defined accelerator. For example, when a [TextBox](/uwp/api/windows.ui.xaml.controls.textbox) has focus, the Control+C accelerator only copies the currently selected text (app-defined accelerators are ignored and no other functionality is executed). - -While we don't recommend overriding default control behaviors due to user familiarity and expectations, you can override a control's built-in keyboard accelerator. The following example shows how to override the Control+C keyboard accelerator for a [TextBox](/uwp/api/windows.ui.xaml.controls.textbox) through the [PreviewKeyDown](/uwp/api/windows.ui.xaml.uielement.previewkeydown) event handler: - -``` csharp - private void TextBlock_PreviewKeyDown(object sender, KeyRoutedEventArgs e) - { - var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(Windows.System.VirtualKey.Control); - var isCtrlDown = ctrlState == CoreVirtualKeyStates.Down || ctrlState - == (CoreVirtualKeyStates.Down | CoreVirtualKeyStates.Locked); - if (isCtrlDown && e.Key == Windows.System.VirtualKey.C) - { - // Your custom keyboard accelerator behavior. - - e.Handled = true; - } - } -``` - -## Disable a keyboard accelerator - -If a control is disabled, the associated accelerator is also disabled. In the following example, because the IsEnabled property of the ListView is set to false, the associated Control+A accelerator can't be invoked. - -``` xaml - - - - - - - - - - - - -``` - -Parent and child controls can share the same accelerator. In this case, the parent control can be invoked even if the child has focus and its accelerator is disabled. - -## Screen readers and keyboard accelerators - -Screen readers such as Narrator can announce the keyboard accelerator key combination to users. By default, this is each modifier (in the VirtualModifiers enum order) followed by the key (and separated by "+" signs). You can customize this through the [AcceleratorKey](/uwp/api/windows.ui.xaml.automation.automationproperties.AcceleratorKeyProperty) AutomationProperties attached property. If more than one accelerator is specified, only the first is announced. - -In this example, the AutomationProperty.AcceleratorKey returns the string "Control+Shift+A": - -``` xaml - - - - - - - - - -    -``` - -> [!NOTE] -> Setting AutomationProperties.AcceleratorKey doesn't enable keyboard functionality, it only indicates to the UIA framework which keys are used. - -## Common Keyboard Accelerators - -We recommend that you make keyboard accelerators consistent across Windows applications. - -Users have to memorize keyboard accelerators and expect the same (or similar) results, but this might not always be possible due to differences in functionality across apps. - -| **Editing** | **Common Keyboard Accelerator** | -| ------------- | ----------------------------------- | -| Begin editing mode | Ctrl + E | -| Select all items in a focused control or window | Ctrl + A | -| Search and replace | Ctrl + H | -| Undo | Ctrl + Z | -| Redo | Ctrl + Y | -| Delete selection and copy it to the clipboard | Ctrl + X | -| Copy selection to the clipboard | Ctrl + C, Ctrl + Insert | -| Paste the contents of the clipboard | Ctrl + V, Shift + Insert | -| Paste the contents of the clipboard (with options) | Ctrl + Alt + V | -| Rename an item | F2 | -| Add a new item | Ctrl + N | -| Add a new secondary item | Ctrl + Shift + N | -| Delete selected item (with undo) | Del, Ctrl+D | -| Delete selected item (without undo) | Shift + Del | -| Bold | Ctrl + B | -| Underline | Ctrl + U | -| Italic | Ctrl + I | -| **Navigation** | | -| Find content in a focused control or Window | Ctrl + F | -| Go to the next search result | F3 | -| Go to the next UI pane | F6 | -| Go to the previous UI pane | Shift + F6 | -| **Other Actions** | | -| Add favorites | Ctrl + D | -| Refresh | F5 or Ctrl + R | -| Zoom In | Ctrl + + | -| Zoom out | Ctrl + - | -| Zoom to default view | Ctrl + 0 | -| Save | Ctrl + S | -| Close | Ctrl + W | -| Print | Ctrl + P | - -Notice that some of the combinations are not valid for localized versions of Windows. For example, in the Spanish version of Windows, Ctrl+N is used for bold instead of Ctrl+B. We recommend providing localized keyboard accelerators if the app is localized. - -## Usability affordances for keyboard accelerators - -### Tooltips - -As keyboard accelerators are not typically described directly in the UI of your Windows application, you can improve discoverability through [tooltips](../controls/tooltips.md), which display automatically when the user moves focus to, presses and holds, or hovers the mouse pointer over a control. The tooltip can identify whether a control has an associated keyboard accelerator and, if so, what the accelerator key combination is. - -**Windows 10, Version 1803 (April 2018 Update) and newer** - -By default, when keyboard accelerators are declared, all controls (except [MenuFlyoutItem](/uwp/api/Windows.UI.Xaml.Controls.MenuFlyoutItem) and [ToggleMenuFlyoutItem](/uwp/api/windows.ui.xaml.controls.togglemenuflyoutitem)) present the corresponding key combinations in a tooltip. - -> [!NOTE] -> If a control has more than one accelerator defined, only the first is presented. - -![Screenshot of a Save button with a tool tip above it that indicates support for the Ctrl+S accelerator.](images/accelerators/accelerators_tooltip_savebutton_small.png)
-*Accelerator key combo in tooltip* - -For [Button](/uwp/api/windows.ui.xaml.controls.button), [AppBarButton](/uwp/api/windows.ui.xaml.controls.appbarbutton), and [AppBarToggleButton](/uwp/api/windows.ui.xaml.controls.appbartogglebutton) objects, the keyboard accelerator is appended to the control's default tooltip. For [MenuFlyoutItem](/uwp/api/windows.ui.xaml.controls.appbarbutton) and [ToggleMenuFlyoutItem](/uwp/api/windows.ui.xaml.controls.togglemenuflyoutitem) objects, the keyboard accelerator is displayed with the flyout text. - -> [!NOTE] -> Specifying a tooltip (see Button1 in the following example) overrides this behavior. - -```xaml - - - - - -``` - -![Screenshot of three buttons labeled Button1, Button2, and Button3 with a tool tip above Button2 that indicates support for the Windows+B accelerator.](images/accelerators/accelerators-button-small.png) - -*Accelerator key combo appended to Button's default tooltip* - -```xaml - - - - - -``` - -![Screenshot of a button with a Disk icon and a tool tip that includes the default Save text appended with the Ctrl+S accelerator in parentheses.](images/accelerators/accelerators-appbarbutton-small.png) - -*Accelerator key combo appended to AppBarButton's default tooltip* - -```xaml - - - - - - - - - - - - - - - - - - - -``` - -![Screenshot of a Menu with MenuFlyoutItems that include accelerator key combos.](images/accelerators/accelerators-appbar-menuflyoutitem-small.png)
-*Accelerator key combo appended to MenuFlyoutItem's text* - -Control the presentation behavior by using the [KeyboardAcceleratorPlacementMode](/uwp/api/windows.ui.xaml.uielement.KeyboardAcceleratorPlacementMode) property, which accepts two values: [Auto](/uwp/api/windows.ui.xaml.input.keyboardacceleratorplacementmode) or [Hidden](/uwp/api/windows.ui.xaml.input.keyboardacceleratorplacementmode). - -```xaml - -``` - -In some cases, you might need to present a tooltip relative to another element (typically a container object). - -Here, we show how to use the KeyboardAcceleratorPlacementTarget property to display the keyboard accelerator key combination for a Save button with the Grid container instead of the button. - -```xaml - - - -``` - -### Labels - -In some cases, we recommend using a control's label to identify whether the control has an associated keyboard accelerator and, if so, what the accelerator key combination is. - -Some platform controls do this by default, specifically the [MenuFlyoutItem](/uwp/api/Windows.UI.Xaml.Controls.MenuFlyoutItem) and [ToggleMenuFlyoutItem](/uwp/api/windows.ui.xaml.controls.togglemenuflyoutitem) objects, while the [AppBarButton](/uwp/api/windows.ui.xaml.controls.appbarbutton) and the [AppBarToggleButton](/uwp/api/windows.ui.xaml.controls.appbartogglebutton) do it when they appear in the overflow menu of the [CommandBar](/uwp/api/windows.ui.xaml.controls.commandbar). - -![Keyboard accelerators described in a menu item label.](images/accelerators/accelerators_menuitemlabel.png) -*Keyboard accelerators described in a menu item label* - -You can override the default accelerator text for the label through the [KeyboardAcceleratorTextOverride](/uwp/api/windows.ui.xaml.controls.appbarbutton.KeyboardAcceleratorTextOverride) property of the [MenuFlyoutItem](/uwp/api/Windows.UI.Xaml.Controls.MenuFlyoutItem), [ToggleMenuFlyoutItem](/uwp/api/windows.ui.xaml.controls.togglemenuflyoutitem), [AppBarButton](/uwp/api/windows.ui.xaml.controls.appbarbutton), and [AppBarToggleButton](/uwp/api/windows.ui.xaml.controls.appbartogglebutton) controls (use a single space for no text). - -> [!NOTE] -> The override text is not be presented if the system cannot detect an attached keyboard (you can check this yourself through the [KeyboardPresent](/uwp/api/windows.devices.input.keyboardcapabilities.KeyboardPresent) property). - -## Advanced Concepts - -Here, we review some low-level aspects of keyboard accelerators. - -### Input event priority - -Input events occur in a specific sequence that you can intercept and handle based on the requirements of your app. - -#### The KeyDown/KeyUp bubbling event - -In XAML, a keystroke is processed as if there is just one input bubbling pipeline. This input pipeline is used by the KeyDown/KeyUp events and character input. For example, if an element has focus and the user presses a key down, a KeyDown event is raised on the element, followed by the parent of the element, and so on up the tree, until the args.Handled property is true. - -The KeyDown event is also used by some controls to implement the built-in control accelerators. When a control has a keyboard accelerator, it handles the KeyDown event, which means that there won't be KeyDown event bubbling. For example, the RichEditBox supports copy with Ctrl+C. When Ctrl is pressed, the KeyDown event is fired and bubbles, but when the user presses C at the same time, the KeyDown event is marked Handled and is not raised (unless the handledEventsToo parameter of [UIElement.AddHandler](/uwp/api/windows.ui.xaml.uielement.addhandler) is set to true). - -#### The CharacterReceived event - -As the [CharacterReceived](/uwp/api/windows.ui.core.corewindow.CharacterReceived) event is fired after the [KeyDown](/uwp/api/windows.ui.core.corewindow.KeyDown) event for text controls such as TextBox, you can cancel character input in the KeyDown event handler. - -#### The PreviewKeyDown and PreviewKeyUp events - -The preview input events are fired before any other events. If you don't handle these events, the accelerator for the element that has the focus is fired, followed by the KeyDown event. Both events bubble until handled. - - -![Diagram showing the key event sequence](images/accelerators/accelerators_keyevents.png) -***Key event sequence*** - -Order of events: - -Preview KeyDown events
-…
-App accelerator
-OnKeyDown method
-KeyDown event
-App accelerators on the parent
-OnKeyDown method on the parent
-KeyDown event on the parent
-(Bubbles to the root)
-…
-CharacterReceived event
-PreviewKeyUp events
-KeyUpEvents
- -When the accelerator event is handled, the KeyDown event is also marked as handled. The KeyUp event remains unhandled. - -### Resolving accelerators - -A keyboard accelerator event bubbles from the element that has focus up to the root. If the event isn't handled, the XAML framework looks for other unscoped app accelerators outside of the bubbling path. - -When two keyboard accelerators are defined with the same key combination, the first keyboard accelerator found on the visual tree is invoked. - -Scoped keyboard accelerators are invoked only when focus is inside a specific scope. For example, in a Grid that contains dozens of controls, a keyboard accelerator can be invoked for a control only when focus is within the Grid (the scope owner). - -### Scoping accelerators programmatically - -The [UIElement.TryInvokeKeyboardAccelerator](/uwp/api/windows.ui.xaml.uielement.tryinvokekeyboardaccelerator) method invokes any matching accelerators in the subtree of the element. - -The [UIElement.OnProcessKeyboardAccelerators](/uwp/api/windows.ui.xaml.uielement.onprocesskeyboardaccelerators) method is executed before the keyboard accelerator. This method passes a [ProcessKeyboardAcceleratorArgs](/uwp/api/windows.ui.xaml.input.processkeyboardacceleratoreventargs) object that contains the key, the modifier, and a Boolean indicating whether the keyboard accelerator is handled. If marked as handled, the keyboard accelerator bubbles (so the outside keyboard accelerator is never invoked). - -> [!NOTE] -> OnProcessKeyboardAccelerators always fires, whether handled or not (similar to the OnKeyDown event). You must check whether the event was marked as handled. - -In this example, we use OnProcessKeyboardAccelerators and TryInvokeKeyboardAccelerator to scope keyboard accelerators to the Page object: - -``` csharp -protected override void OnProcessKeyboardAccelerators( - ProcessKeyboardAcceleratorArgs args) -{ - if(args.Handled != true) - { - this.TryInvokeKeyboardAccelerator(args); - args.Handled = true; - } -} -``` - -### Localize the accelerators - -We recommend localizing all keyboard accelerators. You can do this with the standard resources (.resw) file and the x:Uid attribute in your XAML declarations. In this example, the Windows Runtime automatically loads the resources. - -![Diagram of keyboard accelerator localization with the resources file](images/accelerators/accelerators_localization.png) -***Keyboard accelerator localization with the resources file*** - -``` xaml - -``` - -> [!NOTE] -> Keyboard accelerators are implemented as virtual-keys. Localized accelerators must be chosen from the predefined collection of [Virtual-Key codes](/windows/win32/inputdev/virtual-key-codes) (otherwise, a XAML parser error will occur). - -### Setup an accelerator programmatically - -Here is an example of programmatically defining an accelerator: - -``` csharp -void AddAccelerator( - VirtualKeyModifiers keyModifiers, - VirtualKey key, - TypedEventHandler handler ) - { - var accelerator = - new KeyboardAccelerator() - { - Modifiers = keyModifiers, Key = key - }; - accelerator.Invoked += handler; - this.KeyboardAccelerators.Add(accelerator); - } -``` - -> [!NOTE] -> KeyboardAccelerator is not shareable, the same KeyboardAccelerator can't be added to multiple elements. - -### Override keyboard accelerator behavior - -You can handle the [KeyboardAccelerator.Invoked](/uwp/api/windows.ui.xaml.input.keyboardaccelerator.Invoked) event to override the default KeyboardAccelerator behavior. - -This example shows how to override the "Select all" command (Ctrl+A keyboard accelerator) in a custom ListView control. We also set the Handled property to true to stop the event bubbling further. - -```csharp -public class MyListView : ListView -{ - … - protected override void OnKeyboardAcceleratorInvoked(KeyboardAcceleratorInvokedEventArgs args) - { - if(args.Accelerator.Key == VirtualKey.A - && args.Accelerator.Modifiers == KeyboardModifiers.Control) - { - CustomSelectAll(TypeOfSelection.OnlyNumbers); - args.Handled = true; - } - } - … -} -``` - -## Related articles - -- [Keyboard interactions](keyboard-interactions.md) -- [Access keys](access-keys.md) -- [VirtualKey Enum](/uwp/api/windows.system.virtualkey) - -### Samples - -- [WinUI Gallery](https://github.com/Microsoft/WinUI-Gallery) diff --git a/hub/apps/design/input/keyboard-events.md b/hub/apps/design/input/keyboard-events.md deleted file mode 100644 index 9bfb55d52d..0000000000 --- a/hub/apps/design/input/keyboard-events.md +++ /dev/null @@ -1,407 +0,0 @@ ---- -description: Respond to keystroke actions from hardware or software keyboards in your apps using both keyboard and class event handlers. -title: Keyboard events -ms.assetid: ac500772-d6ed-4a3a-825b-210a9c3c8f59 -label: Keyboard events -template: detail.hbs -keywords: keyboard, gamepad, remote, accessibility, navigation, focus, text, input, user interactions, key up, key down -ms.date: 07/09/2021 -ms.topic: article -pm-contact: chigy -design-contact: kimsea -dev-contact: niallm -doc-status: Published -ms.localizationpriority: medium ---- -# Keyboard events - -## Keyboard events and focus - -The following keyboard events can occur for both hardware and touch keyboards. - -| Event | Description | -|--------------------------------------------|--------------------------------| -| [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) | Occurs when a key is pressed. | -| [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) | Occurs when a key is released. | - -> [!IMPORTANT] -> Some XAML controls handle input events internally. In these cases, it might appear that an input event doesn't occur because your event listener doesn't invoke the associated handler. Typically, this subset of keys is processed by the class handler to provide built in support of basic keyboard accessibility. For example, the [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) class overrides the [**OnKeyDown**](/uwp/api/windows.ui.xaml.controls.control.onkeydown) events for both the Space key and the Enter key (as well as [**OnPointerPressed**](/uwp/api/windows.ui.xaml.controls.control.onpointerpressed)) and routes them to the [**Click**](/uwp/api/windows.ui.xaml.controls.primitives.buttonbase.click) event of the control. When a key press is handled by the control class, the [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events are not raised. -> This provides a built-in keyboard equivalent for invoking the button, similar to tapping it with a finger or clicking it with a mouse. Keys other than Space or Enter still fire [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events. For more info about how class-based handling of events works (specifically, the "Input event handlers in controls" section), see [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview). - - -Controls in your UI generate keyboard events only when they have input focus. An individual control gains focus when the user clicks or taps directly on that control in the layout, or uses the Tab key to step into a tab sequence within the content area. - -You can also call a control's [**Focus**](/uwp/api/windows.ui.xaml.controls.control.focus) method to force focus. This is necessary when you implement shortcut keys, because keyboard focus is not set by default when your UI loads. For more info, see the **Shortcut keys example** later in this topic. - -For a control to receive input focus, it must be enabled, visible, and have [**IsTabStop**](/uwp/api/windows.ui.xaml.controls.control.istabstop) and [**HitTestVisible**](/uwp/api/windows.ui.xaml.uielement.ishittestvisible) property values of **true**. This is the default state for most controls. When a control has input focus, it can raise and respond to keyboard input events as described later in this topic. You can also respond to a control that is receiving or losing focus by handling the [**GotFocus**](/uwp/api/windows.ui.xaml.uielement.gotfocus) and [**LostFocus**](/uwp/api/windows.ui.xaml.uielement.lostfocus) events. - -By default, the tab sequence of controls is the order in which they appear in the Extensible Application Markup Language (XAML). However, you can modify this order by using the [**TabIndex**](/uwp/api/windows.ui.xaml.controls.control.tabindex) property. For more info, see [Implementing keyboard accessibility](/previous-versions/windows/apps/hh868161(v=win.10)). - -## Keyboard event handlers - -An input event handler implements a delegate that provides the following information: - -- The sender of the event. The sender reports the object where the event handler is attached. -- Event data. For keyboard events, that data will be an instance of [**KeyRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.KeyRoutedEventArgs). The delegate for handlers is [**KeyEventHandler**](/uwp/api/windows.ui.xaml.input.keyeventhandler). The most relevant properties of **KeyRoutedEventArgs** for most handler scenarios are [**Key**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.key) and possibly [**KeyStatus**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.keystatus). -- [**OriginalSource**](/uwp/api/windows.ui.xaml.routedeventargs.originalsource). Because the keyboard events are routed events, the event data provides **OriginalSource**. If you deliberately allow events to bubble up through an object tree, **OriginalSource** is sometimes the object of concern rather than sender. However, that depends on your design. For more information about how you might use **OriginalSource** rather than sender, see the "Keyboard Routed Events" section of this topic, or [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview). - - -### Attaching a keyboard event handler - -You can attach keyboard event-handler functions for any object that includes the event as a member. This includes any [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) derived class. The following XAML example shows how to attach handlers for the [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) event for a [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid). - -```xaml - - ... - -``` - -You can also attach an event handler in code. For more info, see [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview). - -### Defining a keyboard event handler - -The following example shows the incomplete event handler definition for the [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) event handler that was attached in the preceding example. - -```csharp -void Grid_KeyUp(object sender, KeyRoutedEventArgs e) -{ - //handling code here -} -``` - -```vb -Private Sub Grid_KeyUp(ByVal sender As Object, ByVal e As KeyRoutedEventArgs) - ' handling code here -End Sub -``` - -```c++ -void MyProject::MainPage::Grid_KeyUp( - Platform::Object^ sender, - Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e) - { - //handling code here - } -``` - -### Using KeyRoutedEventArgs - -All keyboard events use [**KeyRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.KeyRoutedEventArgs) for event data, and **KeyRoutedEventArgs** contains the following properties: - -- [**Key**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.key) -- [**KeyStatus**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.keystatus) -- [**Handled**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.handled) -- [**OriginalSource**](/uwp/api/windows.ui.xaml.routedeventargs.originalsource) (inherited from [**RoutedEventArgs**](/uwp/api/Windows.UI.Xaml.RoutedEventArgs)) - -### Virtual keys - -The [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) event is raised if a key is pressed. Likewise, [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) is raised if a key is released. Usually, you listen to the events to process a specific key value. To determine which key is pressed or released, check the [**Key**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.key) value in the event data. **Key** returns a [**VirtualKey**](/uwp/api/Windows.System.VirtualKey) value. The **VirtualKey** enumeration includes all the supported keys. - -### Modifier keys - -Modifier keys are keys such as Ctrl or Shift that users typically press in combination with other keys. Your app can use these combinations as custom keyboard shortcuts to invoke app commands. - -> [!NOTE] -> For built-in keyboard shortcuts, see [Access keys](access-keys.md) and [Keyboard accelerators](keyboard-accelerators.md). - -You can detect shortcut key combinations in the [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) event handlers. When a keyboard event occurs for a non-modifier key, you can then check whether a modifier key is in the pressed state. - -Alternatively, the [**GetKeyState()**](/uwp/api/windows.ui.core.corewindow.getkeystate) function of the [**CoreWindow**](/uwp/api/windows.ui.core.corewindow) (obtained through [**CoreWindow.GetForCurrentThread()**](/uwp/api/windows.ui.core.corewindow.getforcurrentthread)) can also be used to check modifier state when a non-modifier key is pressed. - -The following examples implement this second method while also including stub code for the first implementation. - -> [!NOTE] -> The Alt key is represented by the **VirtualKey.Menu** value. - -### Shortcut keys example - -The following example demonstrates how to implement a set of custom shortcut keys. In this example, users can control media playback using Play, Pause, and Stop buttons or Ctrl+P, Ctrl+A, and Ctrl+S keyboard shortcuts. The button XAML shows the shortcuts by using tooltips and [**AutomationProperties**](/uwp/api/Windows.UI.Xaml.Automation.AutomationProperties) properties in the button labels. This self-documentation is important to increase the usability and accessibility of your app. For more info, see [Keyboard accessibility](../accessibility/keyboard-accessibility.md). - -Note also that the page sets input focus to itself when it is loaded. Without this step, no control has initial input focus, and the app does not raise input events until the user sets the input focus manually (for example, by tabbing to or clicking a control). - -```xaml - - - - - - - - - - - - - - - - - - - - -``` - -```c++ -//showing implementations but not header definitions -void MainPage::OnNavigatedTo(NavigationEventArgs^ e) -{ - (void) e; // Unused parameter - this->Loaded+=ref new RoutedEventHandler(this,&MainPage::ProgrammaticFocus); -} -void MainPage::ProgrammaticFocus(Object^ sender, RoutedEventArgs^ e) -{ - this->Focus(Windows::UI::Xaml::FocusState::Programmatic); -} - -void KeyboardSupport::MainPage::MediaButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) -{ - FrameworkElement^ fe = safe_cast(sender); - if (fe->Name == "PlayButton") {DemoMovie->Play();} - if (fe->Name == "PauseButton") {DemoMovie->Pause();} - if (fe->Name == "StopButton") {DemoMovie->Stop();} -} - - -bool KeyboardSupport::MainPage::IsCtrlKeyPressed() -{ - auto ctrlState = CoreWindow::GetForCurrentThread()->GetKeyState(VirtualKey::Control); - return (ctrlState & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down; -} - -void KeyboardSupport::MainPage::Grid_KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e) -{ - if (e->Key == VirtualKey::Control) isCtrlKeyPressed = true; -} - - -void KeyboardSupport::MainPage::Grid_KeyUp(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e) -{ - if (IsCtrlKeyPressed()) - { - if (e->Key==VirtualKey::P) { DemoMovie->Play(); } - if (e->Key==VirtualKey::A) { DemoMovie->Pause(); } - if (e->Key==VirtualKey::S) { DemoMovie->Stop(); } - } -} -``` - -```csharp -protected override void OnNavigatedTo(NavigationEventArgs e) -{ - // Set the input focus to ensure that keyboard events are raised. - this.Loaded += delegate { this.Focus(FocusState.Programmatic); }; -} - -private void MediaButton_Click(object sender, RoutedEventArgs e) -{ - switch ((sender as Button).Name) - { - case "PlayButton": DemoMovie.Play(); break; - case "PauseButton": DemoMovie.Pause(); break; - case "StopButton": DemoMovie.Stop(); break; - } -} - -private static bool IsCtrlKeyPressed() -{ - var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control); - return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down; -} - -private void Grid_KeyDown(object sender, KeyRoutedEventArgs e) -{ - if (IsCtrlKeyPressed()) - { - switch (e.Key) - { - case VirtualKey.P: DemoMovie.Play(); break; - case VirtualKey.A: DemoMovie.Pause(); break; - case VirtualKey.S: DemoMovie.Stop(); break; - } - } -} -``` - -```VisualBasic -Private isCtrlKeyPressed As Boolean -Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs) - -End Sub - -Private Function IsCtrlKeyPressed As Boolean - Dim ctrlState As CoreVirtualKeyStates = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control); - Return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down; -End Function - -Private Sub Grid_KeyDown(sender As Object, e As KeyRoutedEventArgs) - If IsCtrlKeyPressed() Then - Select Case e.Key - Case Windows.System.VirtualKey.P - DemoMovie.Play() - Case Windows.System.VirtualKey.A - DemoMovie.Pause() - Case Windows.System.VirtualKey.S - DemoMovie.Stop() - End Select - End If -End Sub - -Private Sub MediaButton_Click(sender As Object, e As RoutedEventArgs) - Dim fe As FrameworkElement = CType(sender, FrameworkElement) - Select Case fe.Name - Case "PlayButton" - DemoMovie.Play() - Case "PauseButton" - DemoMovie.Pause() - Case "StopButton" - DemoMovie.Stop() - End Select -End Sub -``` - -> [!NOTE] -> Setting [**AutomationProperties.AcceleratorKey**](/dotnet/api/system.windows.automation.automationproperties.acceleratorkey) or [**AutomationProperties.AccessKey**](/dotnet/api/system.windows.automation.automationproperties.accesskey) in XAML provides string information, which documents the shortcut key for invoking that particular action. The information is captured by Microsoft UI Automation clients such as Narrator, and is typically provided directly to the user. -> -> Setting **AutomationProperties.AcceleratorKey** or **AutomationProperties.AccessKey** does not have any action on its own. You will still need to attach handlers for [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) or [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events in order to actually implement the keyboard shortcut behavior in your app. Also, the underline text decoration for an access key is not provided automatically. You must explicitly underline the text for the specific key in your mnemonic as inline [**Underline**](/uwp/api/Windows.UI.Xaml.Documents.Underline) formatting if you wish to show underlined text in the UI. - -  - -## Keyboard routed events - - -Certain events are routed events, including [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup). Routed events use the bubbling routing strategy. The bubbling routing strategy means that an event originates from a child object and is then routed up to successive parent objects in the object tree. This presents another opportunity to handle the same event and interact with the same event data. - -Consider the following XAML example, which handles [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events for a [**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas) and two [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) objects. In this case, if you release a key while focus is held by either **Button** object, it raises the **KeyUp** event. The event is then bubbled up to the parent **Canvas**. - -```xaml - - - - - - - -``` - -## Virtualizing Layouts - -Similar to a non-virtualizing layout, the high-level steps for a virtualizing layout are the same. The complexity is largely in determining what elements will fall within the viewport and should be realized. - -1. Derive from the base type [VirtualizingLayout](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout). -2. (Optional) Define your dependency properties that when changed will invalidate the layout. -3. Initialize any state object that will be required by the layout as part of the [InitializeForContextCore](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.initializeforcontextcore). Stash it with the host container by using the [LayoutState](/uwp/api/microsoft.ui.xaml.controls.layoutcontext.layoutstate) provided with the context. -4. Override the [MeasureOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.measureoverride) and call the [Measure](/uwp/api/windows.ui.xaml.uielement.measure) method for each child that should be realized. - 1. The [GetOrCreateElementAt](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.getorcreateelementat) method is used to retrieve a UIElement that has been prepared by the framework (for example, data bindings applied). -5. Override the [ArrangeOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.arrangeoverride) and call the [Arrange](/uwp/api/windows.ui.xaml.uielement.arrange) method for each realized child. -6. (Optional) Clean up any saved state as part of the [UninitializeForContextCore](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.uninitializeforcontextcore). - -> [!TIP] -> The value returned by the [MeasureOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout) is used as the size of the virtualized content. - -There are two general approaches to consider when authoring a virtualizing layout. Whether to choose one or the other largely depends on "how will you determine the size of an element". If its enough to know the index of an item in the data set or the data itself dictates its eventual size, then we'd consider it **data-dependent**. These are more straightforward to create. If, however, the only way to determine the size for an item is to create and measure the UI then we'd say it is **content-dependent**. These are more complex. - -### The Layout Process - -Whether you're creating a data or content-dependent layout, it's important to understand the layout process and the impact of Windows' asynchronous scrolling. - -An (over)simplified view of the steps performed by the framework from start-up to displaying UI on screen is that: - -1. It parses the markup. - -2. Generates a tree of elements. - -3. Performs a layout pass. - -4. Performs a render pass. - -With UI virtualization, creating the elements that would normally be done in step 2 is delayed or ended early once its been determined that sufficient content has been created to fill the viewport. A virtualizing container (for example, ItemsRepeater) defers to its attached layout to drive this process. It provides the attached layout with a [VirtualizingLayoutContext](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext) that surfaces the additional information that a virtualizing layout needs. - -**The RealizationRect (i.e. Viewport)** - -Scrolling on Windows happens asynchronous to the UI thread. It is not controlled by the framework's layout. Rather, the interaction and movement occurs in the system's compositor. The advantage of this approach is that panning content can always be done at 60fps. The challenge, however, is that the "viewport", as seen by the layout, might be slightly out-of-date relative to what is actually visible on screen. If a user scrolls quickly, they may outpace the speed of the UI thread to generate new content and "pan to black". For this reason, it's often necessary for a virtualizing layout to generate an additional buffer of prepared elements sufficient to fill an area larger than the viewport. When under heavier load during scrolling the user is still presented with content. - -![Realization rect](images/xaml-attached-layout-realizationrect.png) - -Since element creation is costly, virtualizing containers (for example, [ItemsRepeater](../controls/items-repeater.md)) will initially provide the attached layout with a [RealizationRect](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.realizationrect) that matches the viewport. On idle time the container may grow the buffer of prepared content by making repeated calls to the layout using an increasingly larger realization rect. This behavior is a performance optimization that attempts to strike a balance between fast startup time and a good panning experience. The maximum buffer size that the ItemsRepeater will generate is controlled by its [VerticalCacheLength](/uwp/api/microsoft.ui.xaml.controls.itemsrepeater.verticalcachelength) and [HorizontalCacheLength](/uwp/api/microsoft.ui.xaml.controls.itemsrepeater.verticalcachelength) properties. - -**Re-using Elements (Recycling)** - -The layout is expected to size and position the elements to fill the [RealizationRect](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.realizationrect) each time it is run. By default the [VirtualizingLayout](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout) will recycle any unused elements at the end of each layout pass. - -The [VirtualizingLayoutContext](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext) that is passed to the layout as part of the [MeasureOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.measureoverride) and [ArrangeOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.arrangeoverride) provides the additional information a virtualizing layout needs. Some of the most commonly used things it provides are the ability to: - -1. Query the number of items in the data ([ItemCount](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.itemcount)). -2. Retrieve a specific item using the [GetItemAt](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.getitemat) method. -3. Retrieve a [RealizationRect](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.realizationrect) that represents the viewport and buffer that the layout should fill with realized elements. -4. Request the UIElement for a specific item with the [GetOrCreateElement](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.getorcreateelementat) method. - -Requesting an element for a given index will cause that element to be marked as "in use" for that pass of the layout. If the element does not already exist, then it will be realized and automatically prepared for use (for example, inflating the UI tree defined in a DataTemplate, processing any data binding, etc.). Otherwise, it will be retrieved from a pool of existing instances. - -At the end of each measure pass, any existing, realized element that was not marked "in use" is automatically considered available for re-use unless the option to [SuppressAutoRecycle](/uwp/api/microsoft.ui.xaml.controls.elementrealizationoptions) was used when the element was retrieved via the [GetOrCreateElementAt](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.getorcreateelementat) method. The framework automatically moves it to a recycle pool and makes it available. It may subsequently be pulled for use by a different container. The framework tries to avoid this when possible as there is some cost associated with re-parenting an element. - -If a virtualizing layout knows at the beginning of each measure which elements will no longer fall within the realization rect then it can optimize its re-use. Rather than relying on the framework's default behavior. The layout can preemptively move elements to the recycle pool by using the [RecycleElement](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.recycleelement) method. Calling this method before requesting new elements causes those existing elements to be available when the layout later issues a [GetOrCreateElementAt](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.getorcreateelementat) request for an index that isn't already associated with an element. - -The VirtualizingLayoutContext provides two additional properties designed for layout authors creating a content-dependent layout. They are discussed in more detail later. - -1. A [RecommendedAnchorIndex](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.recommendedanchorindex) that provides an optional _input_ to layout. -2. A [LayoutOrigin](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.layoutorigin) that is an optional _output_ of the layout. - -## Data-dependent Virtualizing Layouts - -A virtualizing layout is easier if you know what the size of every item should be without needing to measure the content to show. In this doc we'll simply refer to this category of virtualizing layouts as **data layouts** since they usually involve inspecting the data. Based on the data an app may pick a visual representation with a known size - perhaps because its part of the data or was previously determined by design. - -The general approach is for the layout to: - -1. Calculate a size and position of every item. -2. As part of the [MeasureOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.measureoverride): - 1. Use the [RealizationRect](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.realizationrect) to determine which items should appear within the viewport. - 2. Retrieve the UIElement that should represent the item with the [GetOrCreateElementAt](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.getorcreateelementat) method. - 3. [Measure](/uwp/api/windows.ui.xaml.uielement.measure) the UIElement with the pre-calculated size. -3. As part of the [ArrangeOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.arrangeoverride), [Arrange](/uwp/api/windows.ui.xaml.uielement.arrange) each realized UIElement with the precalculated position. - -> [!NOTE] -> A data layout approach is often incompatible with _data virtualization_. Specifically, where the only data loaded into memory is that data required to fill what's visible to the user. Data virtualization isn't referring to lazy or incremental loading of data as a user scrolls down where that data remains resident. Rather, it's referring to when items are released from memory as they're scrolled out of view. Having a data layout that inspects every data item as part of a data layout would prevent data virtualization from working as expected. An exception is a layout like the UniformGridLayout which assumes that everything has the same size. - -> [!TIP] -> If you're creating a custom control for a control library that will be used by others in a wide variety of situations then a data layout may not be an option for you. - -### Example: Xbox Activity Feed layout - -The UI for the Xbox Activity Feed uses a repeating pattern where each line has a wide tile, followed by two narrow tiles that is inverted on the subsequent line. In this layout, the size for every item is a function of the item's position in the data set and the known size for the tiles (wide vs narrow). - -![Xbox activity feed](images/xaml-attached-layout-activityfeedscreenshot.png) - -The code below walks through what a custom virtualizing UI for the activity feed might be to illustrate the general approach you might take for a **data layout**. - -> [!TIP] -> If you have the **WinUI 3 Gallery** app installed, click here to [open the app and see the ItemsRepeater in action](winui3gallery:/item/ItemsRepeater). Get the app from the [Microsoft Store](https://apps.microsoft.com/detail/9P3JFPWWDZRC) or get the source code on [GitHub](https://github.com/microsoft/WinUI-Gallery). - -#### Implementation - -```csharp -///  -///  This is a custom layout that displays elements in two different sizes -///  wide (w) and narrow (n). There are two types of rows  -///  odd rows - narrow narrow wide -///  even rows - wide narrow narrow -///  This pattern repeats. -///  - -public class ActivityFeedLayout : VirtualizingLayout // STEP #1 Inherit from base attached layout -{ - // STEP #2 - Parameterize the layout - #region Layout parameters - - // We'll cache copies of the dependency properties to avoid calling GetValue during layout since that - // can be quite expensive due to the number of times we'd end up calling these. - private double _rowSpacing; - private double _colSpacing; - private Size _minItemSize = Size.Empty; - - /// - /// Gets or sets the size of the whitespace gutter to include between rows - /// - public double RowSpacing - { - get { return _rowSpacing; } - set { SetValue(RowSpacingProperty, value); } - } - - /// - /// Gets or sets the size of the whitespace gutter to include between items on the same row - /// - public double ColumnSpacing - { - get { return _colSpacing; } - set { SetValue(ColumnSpacingProperty, value); } - } - - public Size MinItemSize - { - get { return _minItemSize; } - set { SetValue(MinItemSizeProperty, value); } - } - - public static readonly DependencyProperty RowSpacingProperty = - DependencyProperty.Register( - nameof(RowSpacing), - typeof(double), - typeof(ActivityFeedLayout), - new PropertyMetadata(0, OnPropertyChanged)); - - public static readonly DependencyProperty ColumnSpacingProperty = - DependencyProperty.Register( - nameof(ColumnSpacing), - typeof(double), - typeof(ActivityFeedLayout), - new PropertyMetadata(0, OnPropertyChanged)); - - public static readonly DependencyProperty MinItemSizeProperty = - DependencyProperty.Register( - nameof(MinItemSize), - typeof(Size), - typeof(ActivityFeedLayout), - new PropertyMetadata(Size.Empty, OnPropertyChanged)); - - private static void OnPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - var layout = obj as ActivityFeedLayout; - if (args.Property == RowSpacingProperty) - { - layout._rowSpacing = (double)args.NewValue; - } - else if (args.Property == ColumnSpacingProperty) - { - layout._colSpacing = (double)args.NewValue; - } - else if (args.Property == MinItemSizeProperty) - { - layout._minItemSize = (Size)args.NewValue; - } - else - { - throw new InvalidOperationException("Don't know what you are talking about!"); - } - - layout.InvalidateMeasure(); - } - - #endregion - - #region Setup / teardown // STEP #3: Initialize state - - protected override void InitializeForContextCore(VirtualizingLayoutContext context) - { - base.InitializeForContextCore(context); - - var state = context.LayoutState as ActivityFeedLayoutState; - if (state == null) - { - // Store any state we might need since (in theory) the layout could be in use by multiple - // elements simultaneously - // In reality for the Xbox Activity Feed there's probably only a single instance. - context.LayoutState = new ActivityFeedLayoutState(); - } - } - - protected override void UninitializeForContextCore(VirtualizingLayoutContext context) - { - base.UninitializeForContextCore(context); - - // clear any state - context.LayoutState = null; - } - - #endregion - - #region Layout // STEP #4,5 - Measure and Arrange - - protected override Size MeasureOverride(VirtualizingLayoutContext context, Size availableSize) - { - if (this.MinItemSize == Size.Empty) - { - var firstElement = context.GetOrCreateElementAt(0); - firstElement.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); - - // setting the member value directly to skip invalidating layout - this._minItemSize = firstElement.DesiredSize; - } - - // Determine which rows need to be realized. We know every row will have the same height and - // only contain 3 items. Use that to determine the index for the first and last item that - // will be within that realization rect. - var firstRowIndex = Math.Max( - (int)(context.RealizationRect.Y / (this.MinItemSize.Height + this.RowSpacing)) - 1, - 0); - var lastRowIndex = Math.Min( - (int)(context.RealizationRect.Bottom / (this.MinItemSize.Height + this.RowSpacing)) + 1, - (int)(context.ItemCount / 3)); - - // Determine which items will appear on those rows and what the rect will be for each item - var state = context.LayoutState as ActivityFeedLayoutState; - state.LayoutRects.Clear(); - - // Save the index of the first realized item. We'll use it as a starting point during arrange. - state.FirstRealizedIndex = firstRowIndex * 3; - - // ideal item width that will expand/shrink to fill available space - double desiredItemWidth = Math.Max(this.MinItemSize.Width, (availableSize.Width - this.ColumnSpacing * 3) / 4); - - // Foreach item between the first and last index, - // Call GetElementOrCreateElementAt which causes an element to either be realized or retrieved - // from a recycle pool - // Measure the element using an appropriate size - // - // Any element that was previously realized which we don't retrieve in this pass (via a call to - // GetElementOrCreateAt) will be automatically cleared and set aside for later re-use. - // Note: While this work fine, it does mean that more elements than are required may be - // created because it isn't until after our MeasureOverride completes that the unused elements - // will be recycled and available to use. We could avoid this by choosing to track the first/last - // index from the previous layout pass. The diff between the previous range and current range - // would represent the elements that we can pre-emptively make available for re-use by calling - // context.RecycleElement(element). - for (int rowIndex = firstRowIndex; rowIndex < lastRowIndex; rowIndex++) - { - int firstItemIndex = rowIndex * 3; - var boundsForCurrentRow = CalculateLayoutBoundsForRow(rowIndex, desiredItemWidth); - - for (int columnIndex = 0; columnIndex < 3; columnIndex++) - { - var index = firstItemIndex + columnIndex; - var rect = boundsForCurrentRow[index % 3]; - var container = context.GetOrCreateElementAt(index); - - container.Measure( - new Size(boundsForCurrentRow[columnIndex].Width, boundsForCurrentRow[columnIndex].Height)); - - state.LayoutRects.Add(boundsForCurrentRow[columnIndex]); - } - } - - // Calculate and return the size of all the content (realized or not) by figuring out - // what the bottom/right position of the last item would be. - var extentHeight = ((int)(context.ItemCount / 3) - 1) * (this.MinItemSize.Height + this.RowSpacing) + this.MinItemSize.Height; - - // Report this as the desired size for the layout - return new Size(desiredItemWidth * 4 + this.ColumnSpacing * 2, extentHeight); - } - - protected override Size ArrangeOverride(VirtualizingLayoutContext context, Size finalSize) - { - // walk through the cache of containers and arrange - var state = context.LayoutState as ActivityFeedLayoutState; - var virtualContext = context as VirtualizingLayoutContext; - int currentIndex = state.FirstRealizedIndex; - - foreach (var arrangeRect in state.LayoutRects) - { - var container = virtualContext.GetOrCreateElementAt(currentIndex); - container.Arrange(arrangeRect); - currentIndex++; - } - - return finalSize; - } - - #endregion - #region Helper methods - - private Rect[] CalculateLayoutBoundsForRow(int rowIndex, double desiredItemWidth) - { - var boundsForRow = new Rect[3]; - - var yoffset = rowIndex * (this.MinItemSize.Height + this.RowSpacing); - boundsForRow[0].Y = boundsForRow[1].Y = boundsForRow[2].Y = yoffset; - boundsForRow[0].Height = boundsForRow[1].Height = boundsForRow[2].Height = this.MinItemSize.Height; - - if (rowIndex % 2 == 0) - { - // Left tile (narrow) - boundsForRow[0].X = 0; - boundsForRow[0].Width = desiredItemWidth; - // Middle tile (narrow) - boundsForRow[1].X = boundsForRow[0].Right + this.ColumnSpacing; - boundsForRow[1].Width = desiredItemWidth; - // Right tile (wide) - boundsForRow[2].X = boundsForRow[1].Right + this.ColumnSpacing; - boundsForRow[2].Width = desiredItemWidth * 2 + this.ColumnSpacing; - } - else - { - // Left tile (wide) - boundsForRow[0].X = 0; - boundsForRow[0].Width = (desiredItemWidth * 2 + this.ColumnSpacing); - // Middle tile (narrow) - boundsForRow[1].X = boundsForRow[0].Right + this.ColumnSpacing; - boundsForRow[1].Width = desiredItemWidth; - // Right tile (narrow) - boundsForRow[2].X = boundsForRow[1].Right + this.ColumnSpacing; - boundsForRow[2].Width = desiredItemWidth; - } - - return boundsForRow; - } - - #endregion -} - -internal class ActivityFeedLayoutState -{ - public int FirstRealizedIndex { get; set; } - - /// - /// List of layout bounds for items starting with the - /// FirstRealizedIndex. - /// - public List LayoutRects - { - get - { - if (_layoutRects == null) - { - _layoutRects = new List(); - } - - return _layoutRects; - } - } - - private List _layoutRects; -} -``` - -### (Optional) Managing the Item to UIElement Mapping - -By default, the [VirtualizingLayoutContext](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext) maintains a mapping between the realized elements and the index in the data source they represent. A layout can choose to manage this mapping itself by always requesting the option to [SuppressAutoRecycle](/uwp/api/microsoft.ui.xaml.controls.elementrealizationoptions) when retrieving an element via the [GetOrCreateElementAt](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.getorcreateelementat) method which prevents the default auto-recycling behavior. A layout may choose to do this, for example, if it will only be used when scrolling is restricted to one direction and the items it considers will always be contiguous (i.e. knowing the index of the first and last element is enough to know all the elements that should be realized). - -#### Example: Xbox Activity Feed measure - -The snippet below shows the additional logic that could be added to the MeasureOverride in the previous sample to manage the mapping. - -```csharp - protected override Size MeasureOverride(VirtualizingLayoutContext context, Size availableSize) - { - //... - - // Determine which items will appear on those rows and what the rect will be for each item - var state = context.LayoutState as ActivityFeedLayoutState; - state.LayoutRects.Clear(); - - // Recycle previously realized elements that we know we won't need so that they can be used to - // fill in gaps without requiring us to realize additional elements. - var newFirstRealizedIndex = firstRowIndex * 3; - var newLastRealizedIndex = lastRowIndex * 3 + 3; - for (int i = state.FirstRealizedIndex; i < newFirstRealizedIndex; i++) - { - context.RecycleElement(state.IndexToElementMap.Get(i)); - state.IndexToElementMap.Clear(i); - } - - for (int i = state.LastRealizedIndex; i < newLastRealizedIndex; i++) - { - context.RecycleElement(context.IndexElementMap.Get(i)); - state.IndexToElementMap.Clear(i); - } - - // ... - - // Foreach item between the first and last index, - // Call GetElementOrCreateElementAt which causes an element to either be realized or retrieved - // from a recycle pool - // Measure the element using an appropriate size - // - for (int rowIndex = firstRowIndex; rowIndex < lastRowIndex; rowIndex++) - { - int firstItemIndex = rowIndex * 3; - var boundsForCurrentRow = CalculateLayoutBoundsForRow(rowIndex, desiredItemWidth); - - for (int columnIndex = 0; columnIndex < 3; columnIndex++) - { - var index = firstItemIndex + columnIndex; - var rect = boundsForCurrentRow[index % 3]; - UIElement container = null; - if (state.IndexToElementMap.Contains(index)) - { - container = state.IndexToElementMap.Get(index); - } - else - { - container = context = context.GetOrCreateElementAt(index, ElementRealizationOptions.ForceCreate | ElementRealizationOptions.SuppressAutoRecycle); - state.IndexToElementMap.Add(index, container); - } - - container.Measure( - new Size(boundsForCurrentRow[columnIndex].Width, boundsForCurrentRow[columnIndex].Height)); - - state.LayoutRects.Add(boundsForCurrentRow[columnIndex]); - } - } - - // ... - } - -internal class ActivityFeedLayoutState -{ - // ... - Dictionary IndexToElementMap { get; set; } - // ... -} -``` - -## Content-dependent Virtualizing Layouts - -If you must first measure the UI content for an item to figure out its exact size then it is a **content-dependent layout**. You can also think of it as a layout where each item must size itself rather than the layout telling the item its size. Virtualizing layouts that fall into this category are more involved. - -> [!NOTE] -> Content-dependent layouts don't (shouldn't) break data virtualization. - -### Estimations - -Content-dependent layouts rely on estimation to guess both the size of unrealized content and the position of the realized content. As those estimates change it will cause the realized content to regularly shift positions within the scrollable area. This can lead to a very frustrating and jarring user experience if not mitigated. The potential issues and mitigations are discussed here. - -> [!NOTE] -> Data layouts that consider every item and know the exact size of all items, realized or not, and their positions can avoid these issues entirely. - -**Scroll Anchoring** - -XAML provides a mechanism to mitigate sudden viewport shifts by having scrolling controls support [scroll anchoring](/uwp/api/windows.ui.xaml.controls.iscrollanchorprovider) by implementing the [IScrollAnchorPovider](/uwp/api/windows.ui.xaml.controls.iscrollanchorprovider) interface. As the user manipulates the content, the scrolling control continually selects an element from the set of candidates that were opted-in to be tracked. If the position of the anchor element shifts during the layout then the scroll control automatically shifts its viewport to maintain the viewport. - -The value of the [RecommendedAnchorIndex](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.recommendedanchorindex) provided to the layout may reflect that currently selected anchor element chosen by the scrolling control. Alternatively, if a developer explicitly requests that an element be realized for an index with the [GetOrCreateElement](/uwp/api/microsoft.ui.xaml.controls.itemsrepeater.getorcreateelement) method on the [ItemsRepeater](/uwp/api/microsoft.ui.xaml.controls.itemsrepeater), then that index is given as the [RecommendedAnchorIndex](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.recommendedanchorindex) on the next layout pass. This enables the layout to be prepared for the likely scenario that a developer realizes an element and subsequently requests that it be brought into view via the [StartBringIntoView](/uwp/api/windows.ui.xaml.uielement.startbringintoview) method. - -The [RecommendedAnchorIndex](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.recommendedanchorindex) is the index for the item in the data source that a content-dependent layout should position first when estimating the position of its items. It should serve as the starting point for positioning other realized items. - -**Impact on ScrollBars** - -Even with scroll anchoring, if the layout's estimates vary a lot, perhaps due to significant variations in the size of content, then the position of the thumb for the ScrollBar may appear to jump around. This can be jarring for a user if the thumb doesn't appear to track the position of their mouse pointer when they're dragging it. - -The more accurate the layout can be in its estimations then the less likely a user will see the ScrollBar's thumb jumping. - -### Layout Corrections - -A content-dependent layout should be prepared to rationalize its estimate with reality. For example, as the user scrolls to the top of the content and the layout realizes the very first element, it may find that the element's anticipated position relative to the element from which it started would cause it to appear somewhere other than the origin of (x:0, y:0). When this occurs, the layout can use the [LayoutOrigin](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.layoutorigin) property to set the position it calculated as the new layout origin. The net result is similar to scroll anchoring in which the scrolling control's viewport is automatically adjusted to account for the content's position as reported by the layout. - -![Correcting the LayoutOrigin](images/xaml-attached-layout-origincorrection.png) - -### Disconnected Viewports - -The size returned from the layout's [MeasureOverride](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayout.measureoverride) method represents the best guess at the size of the content which may change with each successive layout. As a user scrolls the layout will be continually re-evaluated with an updated [RealizationRect](/uwp/api/microsoft.ui.xaml.controls.virtualizinglayoutcontext.realizationrect). - -If a user drags the thumb very quickly then its possible for the viewport, from the perspective of the layout, to appear to make large jumps where the prior position doesn't overlap the now current position. This is due to the asynchronous nature of scrolling. It's also possible for an app that is consuming the layout to request that an element be brought into view for an item that is not currently realized and is estimated to lay outside the current range tracked by the layout. - -When the layout discovers its guess is incorrect and/or sees an unexpected viewport shift, it needs to reorient its starting position. The virtualizing layouts that ship as part of the XAML controls are developed as content-dependent layouts as they place fewer restrictions on the nature of the content that will be shown. - - -### Example: Simple Virtualizing Stack Layout for Variable-Sized Items - -The sample below demonstrates a simple stack layout for variable-sized items that: - -* supports UI virtualization, -* uses estimations to guess the size of unrealized items, -* is aware of potential discontinuous viewport shifts, and -* applies layout corrections to account for those shifts. - -**Usage: Markup** - -```xaml - - - - - - - - - - - - - - - - - - - - - -``` - -**Codebehind: Main.cs** - -```csharp -string _lorem = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam laoreet erat vel massa rutrum, eget mollis massa vulputate. Vivamus semper augue leo, eget faucibus nulla mattis nec. Donec scelerisque lacus at dui ultricies, eget auctor ipsum placerat. Integer aliquet libero sed nisi eleifend, nec rutrum arcu lacinia. Sed a sem et ante gravida congue sit amet ut augue. Donec quis pellentesque urna, non finibus metus. Proin sed ornare tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam laoreet erat vel massa rutrum, eget mollis massa vulputate. Vivamus semper augue leo, eget faucibus nulla mattis nec. Donec scelerisque lacus at dui ultricies, eget auctor ipsum placerat. Integer aliquet libero sed nisi eleifend, nec rutrum arcu lacinia. Sed a sem et ante gravida congue sit amet ut augue. Donec quis pellentesque urna, non finibus metus. Proin sed ornare tellus."; - -var rnd = new Random(); -var data = new ObservableCollection(Enumerable.Range(0, 300).Select(k => - new Recipe - { - ImageUri = new Uri(string.Format("ms-appx:///Images/recipe{0}.png", k % 8 + 1)), - Description = k + " - " + _lorem.Substring(0, rnd.Next(50, 350)) - })); - -repeater.ItemsSource = data; -``` - -**Code: VirtualizingStackLayout.cs** - -```csharp -// This is a sample layout that stacks elements one after -// the other where each item can be of variable height. This is -// also a virtualizing layout - we measure and arrange only elements -// that are in the viewport. Not measuring/arranging all elements means -// that we do not have the complete picture and need to estimate sometimes. -// For example the size of the layout (extent) is an estimation based on the -// average heights we have seen so far. Also, if you drag the mouse thumb -// and yank it quickly, then we estimate what goes in the new viewport. - -// The layout caches the bounds of everything that are in the current viewport. -// During measure, we might get a suggested anchor (or start index), we use that -// index to start and layout the rest of the items in the viewport relative to that -// index. Note that since we are estimating, we can end up with negative origin when -// the viewport is somewhere in the middle of the extent. This is achieved by setting the -// LayoutOrigin property on the context. Once this is set, future viewport will account -// for the origin. -public class VirtualizingStackLayout : VirtualizingLayout -{ - // Estimation state - List m_estimationBuffer = Enumerable.Repeat(0d, 100).ToList(); - int m_numItemsUsedForEstimation = 0; - double m_totalHeightForEstimation = 0; - - // State to keep track of realized bounds - int m_firstRealizedDataIndex = 0; - List m_realizedElementBounds = new List(); - - Rect m_lastExtent = new Rect(); - - protected override Size MeasureOverride(VirtualizingLayoutContext context, Size availableSize) - { - var viewport = context.RealizationRect; - DebugTrace("MeasureOverride: Viewport " + viewport); - - // Remove bounds for elements that are now outside the viewport. - // Proactive recycling elements means we can reuse it during this measure pass again. - RemoveCachedBoundsOutsideViewport(viewport); - - // Find the index of the element to start laying out from - the anchor - int startIndex = GetStartIndex(context, availableSize); - - // Measure and layout elements starting from the start index, forward and backward. - Generate(context, availableSize, startIndex, forward:true); - Generate(context, availableSize, startIndex, forward:false); - - // Estimate the extent size. Note that this can have a non 0 origin. - m_lastExtent = EstimateExtent(context, availableSize); - context.LayoutOrigin = new Point(m_lastExtent.X, m_lastExtent.Y); - return new Size(m_lastExtent.Width, m_lastExtent.Height); - } - - protected override Size ArrangeOverride(VirtualizingLayoutContext context, Size finalSize) - { - DebugTrace("ArrangeOverride: Viewport" + context.RealizationRect); - for (int realizationIndex = 0; realizationIndex < m_realizedElementBounds.Count; realizationIndex++) - { - int currentDataIndex = m_firstRealizedDataIndex + realizationIndex; - DebugTrace("Arranging " + currentDataIndex); - - // Arrange the child. If any alignment needs to be done, it - // can be done here. - var child = context.GetOrCreateElementAt(currentDataIndex); - var arrangeBounds = m_realizedElementBounds[realizationIndex]; - arrangeBounds.X -= m_lastExtent.X; - arrangeBounds.Y -= m_lastExtent.Y; - child.Arrange(arrangeBounds); - } - - return finalSize; - } - - // The data collection has changed, since we are maintaining the bounds of elements - // in the viewport, we will update the list to account for the collection change. - protected override void OnItemsChangedCore(VirtualizingLayoutContext context, object source, NotifyCollectionChangedEventArgs args) - { - InvalidateMeasure(); - if (m_realizedElementBounds.Count > 0) - { - switch (args.Action) - { - case NotifyCollectionChangedAction.Add: - OnItemsAdded(args.NewStartingIndex, args.NewItems.Count); - break; - case NotifyCollectionChangedAction.Replace: - OnItemsRemoved(args.OldStartingIndex, args.OldItems.Count); - OnItemsAdded(args.NewStartingIndex, args.NewItems.Count); - break; - case NotifyCollectionChangedAction.Remove: - OnItemsRemoved(args.OldStartingIndex, args.OldItems.Count); - break; - case NotifyCollectionChangedAction.Reset: - m_realizedElementBounds.Clear(); - m_firstRealizedDataIndex = 0; - break; - default: - throw new NotImplementedException(); - } - } - } - - // Figure out which index to use as the anchor and start laying out around it. - private int GetStartIndex(VirtualizingLayoutContext context, Size availableSize) - { - int startDataIndex = -1; - var recommendedAnchorIndex = context.RecommendedAnchorIndex; - bool isSuggestedAnchorValid = recommendedAnchorIndex != -1; - - if (isSuggestedAnchorValid) - { - if (IsRealized(recommendedAnchorIndex)) - { - startDataIndex = recommendedAnchorIndex; - } - else - { - ClearRealizedRange(); - startDataIndex = recommendedAnchorIndex; - } - } - else - { - // Find the first realized element that is visible in the viewport. - startDataIndex = GetFirstRealizedDataIndexInViewport(context.RealizationRect); - if (startDataIndex < 0) - { - startDataIndex = EstimateIndexForViewport(context.RealizationRect, context.ItemCount); - ClearRealizedRange(); - } - } - - // We have an anchorIndex, realize and measure it and - // figure out its bounds. - if (startDataIndex != -1 & context.ItemCount > 0) - { - if (m_realizedElementBounds.Count == 0) - { - m_firstRealizedDataIndex = startDataIndex; - } - - var newAnchor = EnsureRealized(startDataIndex); - DebugTrace("Measuring start index " + startDataIndex); - var desiredSize = MeasureElement(context, startDataIndex, availableSize); - - var bounds = new Rect( - 0, - newAnchor ? - (m_totalHeightForEstimation / m_numItemsUsedForEstimation) * startDataIndex : GetCachedBoundsForDataIndex(startDataIndex).Y, - availableSize.Width, - desiredSize.Height); - SetCachedBoundsForDataIndex(startDataIndex, bounds); - } - - return startDataIndex; - } - - - private void Generate(VirtualizingLayoutContext context, Size availableSize, int anchorDataIndex, bool forward) - { - // Generate forward or backward from anchorIndex until we hit the end of the viewport - int step = forward ? 1 : -1; - int previousDataIndex = anchorDataIndex; - int currentDataIndex = previousDataIndex + step; - var viewport = context.RealizationRect; - while (IsDataIndexValid(currentDataIndex, context.ItemCount) && - ShouldContinueFillingUpSpace(previousDataIndex, forward, viewport)) - { - EnsureRealized(currentDataIndex); - DebugTrace("Measuring " + currentDataIndex); - var desiredSize = MeasureElement(context, currentDataIndex, availableSize); - var previousBounds = GetCachedBoundsForDataIndex(previousDataIndex); - Rect currentBounds = new Rect(0, - forward ? previousBounds.Y + previousBounds.Height : previousBounds.Y - desiredSize.Height, - availableSize.Width, - desiredSize.Height); - SetCachedBoundsForDataIndex(currentDataIndex, currentBounds); - previousDataIndex = currentDataIndex; - currentDataIndex += step; - } - } - - // Remove bounds that are outside the viewport, leaving one extra since our - // generate stops after generating one extra to know that we are outside the - // viewport. - private void RemoveCachedBoundsOutsideViewport(Rect viewport) - { - int firstRealizedIndexInViewport = 0; - while (firstRealizedIndexInViewport < m_realizedElementBounds.Count && - !Intersects(m_realizedElementBounds[firstRealizedIndexInViewport], viewport)) - { - firstRealizedIndexInViewport++; - } - - int lastRealizedIndexInViewport = m_realizedElementBounds.Count - 1; - while (lastRealizedIndexInViewport >= 0 && - !Intersects(m_realizedElementBounds[lastRealizedIndexInViewport], viewport)) - { - lastRealizedIndexInViewport--; - } - - if (firstRealizedIndexInViewport > 0) - { - m_firstRealizedDataIndex += firstRealizedIndexInViewport; - m_realizedElementBounds.RemoveRange(0, firstRealizedIndexInViewport); - } - - if (lastRealizedIndexInViewport >= 0 && lastRealizedIndexInViewport < m_realizedElementBounds.Count - 2) - { - m_realizedElementBounds.RemoveRange(lastRealizedIndexInViewport + 2, m_realizedElementBounds.Count - lastRealizedIndexInViewport - 3); - } - } - - private bool Intersects(Rect bounds, Rect viewport) - { - return !(bounds.Bottom < viewport.Top || - bounds.Top > viewport.Bottom); - } - - private bool ShouldContinueFillingUpSpace(int dataIndex, bool forward, Rect viewport) - { - var bounds = GetCachedBoundsForDataIndex(dataIndex); - return forward ? - bounds.Y < viewport.Bottom : - bounds.Y > viewport.Top; - } - - private bool IsDataIndexValid(int currentDataIndex, int itemCount) - { - return currentDataIndex >= 0 && currentDataIndex < itemCount; - } - - private int EstimateIndexForViewport(Rect viewport, int dataCount) - { - double averageHeight = m_totalHeightForEstimation / m_numItemsUsedForEstimation; - int estimatedIndex = (int)(viewport.Top / averageHeight); - // clamp to an index within the collection - estimatedIndex = Math.Max(0, Math.Min(estimatedIndex, dataCount)); - return estimatedIndex; - } - - private int GetFirstRealizedDataIndexInViewport(Rect viewport) - { - int index = -1; - if (m_realizedElementBounds.Count > 0) - { - for (int i = 0; i < m_realizedElementBounds.Count; i++) - { - if (m_realizedElementBounds[i].Y < viewport.Bottom && - m_realizedElementBounds[i].Bottom > viewport.Top) - { - index = m_firstRealizedDataIndex + i; - break; - } - } - } - - return index; - } - - private Size MeasureElement(VirtualizingLayoutContext context, int index, Size availableSize) - { - var child = context.GetOrCreateElementAt(index); - child.Measure(availableSize); - - int estimationBufferIndex = index % m_estimationBuffer.Count; - bool alreadyMeasured = m_estimationBuffer[estimationBufferIndex] != 0; - if (!alreadyMeasured) - { - m_numItemsUsedForEstimation++; - } - - m_totalHeightForEstimation -= m_estimationBuffer[estimationBufferIndex]; - m_totalHeightForEstimation += child.DesiredSize.Height; - m_estimationBuffer[estimationBufferIndex] = child.DesiredSize.Height; - - return child.DesiredSize; - } - - private bool EnsureRealized(int dataIndex) - { - if (!IsRealized(dataIndex)) - { - int realizationIndex = RealizationIndex(dataIndex); - Debug.Assert(dataIndex == m_firstRealizedDataIndex - 1 || - dataIndex == m_firstRealizedDataIndex + m_realizedElementBounds.Count || - m_realizedElementBounds.Count == 0); - - if (realizationIndex == -1) - { - m_realizedElementBounds.Insert(0, new Rect()); - } - else - { - m_realizedElementBounds.Add(new Rect()); - } - - if (m_firstRealizedDataIndex > dataIndex) - { - m_firstRealizedDataIndex = dataIndex; - } - - return true; - } - - return false; - } - - // Figure out the extent of the layout by getting the number of items remaining - // above and below the realized elements and getting an estimation based on - // average item heights seen so far. - private Rect EstimateExtent(VirtualizingLayoutContext context, Size availableSize) - { - double averageHeight = m_totalHeightForEstimation / m_numItemsUsedForEstimation; - - Rect extent = new Rect(0, 0, availableSize.Width, context.ItemCount * averageHeight); - - if (context.ItemCount > 0 && m_realizedElementBounds.Count > 0) - { - extent.Y = m_firstRealizedDataIndex == 0 ? - m_realizedElementBounds[0].Y : - m_realizedElementBounds[0].Y - (m_firstRealizedDataIndex - 1) * averageHeight; - - int lastRealizedIndex = m_firstRealizedDataIndex + m_realizedElementBounds.Count; - if (lastRealizedIndex == context.ItemCount - 1) - { - var lastBounds = m_realizedElementBounds[m_realizedElementBounds.Count - 1]; - extent.Y = lastBounds.Bottom; - } - else - { - var lastBounds = m_realizedElementBounds[m_realizedElementBounds.Count - 1]; - int lastRealizedDataIndex = m_firstRealizedDataIndex + m_realizedElementBounds.Count; - int numItemsAfterLastRealizedIndex = context.ItemCount - lastRealizedDataIndex; - extent.Height = lastBounds.Bottom + numItemsAfterLastRealizedIndex * averageHeight - extent.Y; - } - } - - DebugTrace("Extent " + extent + " with average height " + averageHeight); - return extent; - } - - private bool IsRealized(int dataIndex) - { - int realizationIndex = dataIndex - m_firstRealizedDataIndex; - return realizationIndex >= 0 && realizationIndex < m_realizedElementBounds.Count; - } - - // Index in the m_realizedElementBounds collection - private int RealizationIndex(int dataIndex) - { - return dataIndex - m_firstRealizedDataIndex; - } - - private void OnItemsAdded(int index, int count) - { - // Using the old indexes here (before it was updated by the collection change) - // if the insert data index is between the first and last realized data index, we need - // to insert items. - int lastRealizedDataIndex = m_firstRealizedDataIndex + m_realizedElementBounds.Count - 1; - int newStartingIndex = index; - if (newStartingIndex > m_firstRealizedDataIndex && - newStartingIndex <= lastRealizedDataIndex) - { - // Inserted within the realized range - int insertRangeStartIndex = newStartingIndex - m_firstRealizedDataIndex; - for (int i = 0; i < count; i++) - { - // Insert null (sentinel) here instead of an element, that way we do not - // end up creating a lot of elements only to be thrown out in the next layout. - int insertRangeIndex = insertRangeStartIndex + i; - int dataIndex = newStartingIndex + i; - // This is to keep the contiguousness of the mapping - m_realizedElementBounds.Insert(insertRangeIndex, new Rect()); - } - } - else if (index <= m_firstRealizedDataIndex) - { - // Items were inserted before the realized range. - // We need to update m_firstRealizedDataIndex; - m_firstRealizedDataIndex += count; - } - } - - private void OnItemsRemoved(int index, int count) - { - int lastRealizedDataIndex = m_firstRealizedDataIndex + m_realizedElementBounds.Count - 1; - int startIndex = Math.Max(m_firstRealizedDataIndex, index); - int endIndex = Math.Min(lastRealizedDataIndex, index + count - 1); - bool removeAffectsFirstRealizedDataIndex = (index <= m_firstRealizedDataIndex); - - if (endIndex >= startIndex) - { - ClearRealizedRange(RealizationIndex(startIndex), endIndex - startIndex + 1); - } - - if (removeAffectsFirstRealizedDataIndex && - m_firstRealizedDataIndex != -1) - { - m_firstRealizedDataIndex -= count; - } - } - - private void ClearRealizedRange(int startRealizedIndex, int count) - { - m_realizedElementBounds.RemoveRange(startRealizedIndex, count); - if (startRealizedIndex == 0) - { - m_firstRealizedDataIndex = m_realizedElementBounds.Count == 0 ? 0 : m_firstRealizedDataIndex + count; - } - } - - private void ClearRealizedRange() - { - m_realizedElementBounds.Clear(); - m_firstRealizedDataIndex = 0; - } - - private Rect GetCachedBoundsForDataIndex(int dataIndex) - { - return m_realizedElementBounds[RealizationIndex(dataIndex)]; - } - - private void SetCachedBoundsForDataIndex(int dataIndex, Rect bounds) - { - m_realizedElementBounds[RealizationIndex(dataIndex)] = bounds; - } - - private Rect GetCachedBoundsForRealizationIndex(int relativeIndex) - { - return m_realizedElementBounds[relativeIndex]; - } - - void DebugTrace(string message, params object[] args) - { - Debug.WriteLine(message, args); - } -} -``` - -## Related articles - -- [ItemsRepeater](/uwp/api/microsoft.ui.xaml.controls.itemsrepeater) -- [ScrollViewer](/uwp/api/windows.ui.xaml.controls.scrollviewer) diff --git a/hub/apps/design/layout/boxpanel-example-custom-panel.md b/hub/apps/design/layout/boxpanel-example-custom-panel.md deleted file mode 100644 index bc30d37e39..0000000000 --- a/hub/apps/design/layout/boxpanel-example-custom-panel.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -description: Learn to write code for a custom Panel class, implementing ArrangeOverride and MeasureOverride methods, and using the Children property. -MS-HAID: dev\_ctrl\_layout\_txt.boxpanel\_example\_custom\_panel -MSHAttr: PreferredLib:/library/windows/apps -Search.Product: eADQiWindows 10XVcnh -title: BoxPanel, an example custom panel (Windows apps) -ms.assetid: 981999DB-81B1-4B9C-A786-3025B62B74D6 -label: BoxPanel, an example custom panel -template: detail.hbs -op-migration-status: ready -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# BoxPanel, an example custom panel - - - -Learn to write code for a custom [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) class, implementing [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride) and [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) methods, and using the [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) property. - -> **Important APIs**: [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel), [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride),[**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) - -The example code shows a custom panel implementation, but we don't devote a lot of time explaining the layout concepts that influence how you can customize a panel for different layout scenarios. If you want more info about these layout concepts and how they might apply to your particular layout scenario, see [XAML custom panels overview](custom-panels-overview.md). - -A *panel* is an object that provides a layout behavior for child elements it contains, when the XAML layout system runs and your app UI is rendered. You can define custom panels for XAML layout by deriving a custom class from the [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) class. You provide behavior for your panel by overriding the [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride) and [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) methods, supplying logic that measures and arranges the child elements. This example derives from **Panel**. When you start from **Panel**, **ArrangeOverride** and **MeasureOverride** methods don't have a starting behavior. Your code is providing the gateway by which child elements become known to the XAML layout system and get rendered in the UI. So, it's really important that your code accounts for all child elements and follows the patterns the layout system expects. - -## Your layout scenario - -When you define a custom panel, you're defining a layout scenario. - -A layout scenario is expressed through: - -- What the panel will do when it has child elements -- When the panel has constraints on its own space -- How the logic of the panel determines all the measurements, placement, positions, and sizings that eventually result in a rendered UI layout of children - -With that in mind, the `BoxPanel` shown here is for a particular scenario. In the interest of keeping the code foremost in this example, we won't explain the scenario in detail yet, and instead concentrate on the steps needed and the coding patterns. If you want to know more about the scenario first, skip ahead to ["The scenario for `BoxPanel`"](#the-scenario-for-boxpanel), and then come back to the code. - -## Start by deriving from **Panel** - -Start by deriving a custom class from [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel). Probably the easiest way to do this is to define a separate code file for this class, using the **Add** | **New Item** | **Class** context menu options for a project from the **Solution Explorer** in Microsoft Visual Studio. Name the class (and file) `BoxPanel`. - -The template file for a class doesn't start with many **using** statements because it's not specifically for Windows apps. So first, add **using** statements. The template file also starts with a few **using** statements that you probably don't need, and can be deleted. Here's a suggested list of **using** statements that can resolve types you'll need for typical custom panel code: - -```CSharp -using System; -using System.Collections.Generic; // if you need to cast IEnumerable for iteration, or define your own collection properties -using Windows.Foundation; // Point, Size, and Rect -using Windows.UI.Xaml; // DependencyObject, UIElement, and FrameworkElement -using Windows.UI.Xaml.Controls; // Panel -using Windows.UI.Xaml.Media; // if you need Brushes or other utilities -``` - -Now that you can resolve [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel), make it the base class of `BoxPanel`. Also, make `BoxPanel` public: - -```CSharp -public class BoxPanel : Panel -{ -} -``` - -At the class level, define some **int** and **double** values that will be shared by several of your logic functions, but which won't need to be exposed as public API. In the example, these are named: `maxrc`, `rowcount`, `colcount`, `cellwidth`, `cellheight`, `maxcellheight`, `aspectratio`. - -After you've done this, the complete code file looks like this (removing comments on **using**, now that you know why we have them): - -```CSharp -using System; -using System.Collections.Generic; -using Windows.Foundation; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Media; - -public class BoxPanel : Panel -{ - int maxrc, rowcount, colcount; - double cellwidth, cellheight, maxcellheight, aspectratio; -} -``` - -From here on out, we'll be showing you one member definition at a time, be that a method override or something supporting such as a dependency property. You can add these to the skeleton above in any order. - -## **MeasureOverride** - -```CSharp -protected override Size MeasureOverride(Size availableSize) -{ - // Determine the square that can contain this number of items. - maxrc = (int)Math.Ceiling(Math.Sqrt(Children.Count)); - // Get an aspect ratio from availableSize, decides whether to trim row or column. - aspectratio = availableSize.Width / availableSize.Height; - - // Now trim this square down to a rect, many times an entire row or column can be omitted. - if (aspectratio > 1) - { - rowcount = maxrc; - colcount = (maxrc > 2 && Children.Count <= maxrc * (maxrc - 1)) ? maxrc - 1 : maxrc; - } - else - { - rowcount = (maxrc > 2 && Children.Count <= maxrc * (maxrc - 1)) ? maxrc - 1 : maxrc; - colcount = maxrc; - } - - // Now that we have a column count, divide available horizontal, that's our cell width. - cellwidth = (int)Math.Floor(availableSize.Width / colcount); - // Next get a cell height, same logic of dividing available vertical by rowcount. - cellheight = Double.IsInfinity(availableSize.Height) ? Double.PositiveInfinity : availableSize.Height / rowcount; - - foreach (UIElement child in Children) - { - child.Measure(new Size(cellwidth, cellheight)); - maxcellheight = (child.DesiredSize.Height > maxcellheight) ? child.DesiredSize.Height : maxcellheight; - } - return LimitUnboundedSize(availableSize); -} -``` - -The necessary pattern of a [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) implementation is the loop through each element in [**Panel.Children**](/uwp/api/windows.ui.xaml.controls.panel.children). Always call the [**Measure**](/uwp/api/windows.ui.xaml.uielement.measure) method on each of these elements. **Measure** has a parameter of type [**Size**](/uwp/api/Windows.Foundation.Size). What you're passing here is the size that your panel is committing to have available for that particular child element. So, before you can do the loop and start calling **Measure**, you need to know how much space each cell can devote. From the **MeasureOverride** method itself, you have the *availableSize* value. That is the size that the panel's parent used when it called **Measure**, which was the trigger for this **MeasureOverride** being called in the first place. So a typical logic is to devise a scheme whereby each child element divides the space of the panel's overall *availableSize*. You then pass each division of size to **Measure** of each child element. - -How `BoxPanel` divides size is fairly simple: it divides its space into a number of boxes that's largely controlled by the number of items. Boxes are sized based on row and column count and the available size. Sometimes one row or column from a square isn't needed, so it's dropped and the panel becomes a rectangle rather than square in terms of its row : column ratio. For more info about how this logic was arrived at, skip ahead to ["The scenario for BoxPanel"](#the-scenario-for-boxpanel). - -So what does the measure pass do? It sets a value for the read-only [**DesiredSize**](/uwp/api/windows.ui.xaml.uielement.desiredsize) property on each element where [**Measure**](/uwp/api/windows.ui.xaml.uielement.measure) was called. Having a **DesiredSize** value is possibly important once you get to the arrange pass, because the **DesiredSize** communicates what the size can or should be when arranging and in the final rendering. Even if you don't use **DesiredSize** in your own logic, the system still needs it. - -It's possible for this panel to be used when the height component of *availableSize* is unbounded. If that's true, the panel doesn't have a known height to divide. In this case, the logic for the measure pass informs each child that it doesn't have a bounded height, yet. It does so by passing a [**Size**](/uwp/api/Windows.Foundation.Size) to the [**Measure**](/uwp/api/windows.ui.xaml.uielement.measure) call for children where [**Size.Height**](/uwp/api/windows.foundation.size.height) is infinite. That's legal. When **Measure** is called, the logic is that the [**DesiredSize**](/uwp/api/windows.ui.xaml.uielement.desiredsize) is set as the minimum of these: what was passed to **Measure**, or that element's natural size from factors such as explicitly-set [**Height**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Height) and [**Width**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Width). - -> [!NOTE] -> The internal logic of [**StackPanel**](/uwp/api/Windows.UI.Xaml.Controls.StackPanel) also has this behavior: **StackPanel** passes an infinite dimension value to [**Measure**](/uwp/api/windows.ui.xaml.uielement.measure) on children, indicating that there is no constraint on children in the orientation dimension. **StackPanel** typically sizes itself dynamically, to accommodate all children in a stack that grows in that dimension. - -However, the panel itself can't return a [**Size**](/uwp/api/Windows.Foundation.Size) with an infinite value from [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride); that throws an exception during layout. So, part of the logic is to find out the maximum height that any child requests, and use that height as the cell height in case that isn't coming from the panel's own size constraints already. Here's the helper function `LimitUnboundedSize` that was referenced in previous code, which then takes that maximum cell height and uses it to give the panel a finite height to return, as well as assuring that `cellheight` is a finite number before the arrange pass is initiated: - -```CSharp -// This method limits the panel height when no limit is imposed by the panel's parent. -// That can happen to height if the panel is close to the root of main app window. -// In this case, base the height of a cell on the max height from desired size -// and base the height of the panel on that number times the #rows. -Size LimitUnboundedSize(Size input) -{ - if (Double.IsInfinity(input.Height)) - { - input.Height = maxcellheight * colcount; - cellheight = maxcellheight; - } - return input; -} -``` - -## **ArrangeOverride** - -```CSharp -protected override Size ArrangeOverride(Size finalSize) -{ - int count = 1; - double x, y; - foreach (UIElement child in Children) - { - x = (count - 1) % colcount * cellwidth; - y = ((int)(count - 1) / colcount) * cellheight; - Point anchorPoint = new Point(x, y); - child.Arrange(new Rect(anchorPoint, child.DesiredSize)); - count++; - } - return finalSize; -} -``` - -The necessary pattern of an [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride) implementation is the loop through each element in [**Panel.Children**](/uwp/api/windows.ui.xaml.controls.panel.children). Always call the [**Arrange**](/uwp/api/windows.ui.xaml.uielement.arrange) method on each of these elements. - -Note how there aren't as many calculations as in [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride); that's typical. The size of children is already known from the panel's own **MeasureOverride** logic, or from the [**DesiredSize**](/uwp/api/windows.ui.xaml.uielement.desiredsize) value of each child set during the measure pass. However, we still need to decide the location within the panel where each child will appear. In a typical panel, each child should render at a different position. A panel that creates overlapping elements isn't desirable for typical scenarios (although it's not out of the question to create panels that have purposeful overlaps, if that's really your intended scenario). - -This panel arranges by the concept of rows and columns. The number of rows and columns was already calculated (it was necessary for measurement). So now the shape of the rows and columns plus the known sizes of each cell contribute to the logic of defining a rendering position (the `anchorPoint`) for each element that this panel contains. That [**Point**](/uwp/api/Windows.Foundation.Point), along with the [**Size**](/uwp/api/Windows.Foundation.Size) already known from measure, are used as the two components that construct a [**Rect**](/uwp/api/Windows.Foundation.Rect). **Rect** is the input type for [**Arrange**](/uwp/api/windows.ui.xaml.uielement.arrange). - -Panels sometimes need to clip their content. If they do, the clipped size is the size that's present in [**DesiredSize**](/uwp/api/windows.ui.xaml.uielement.desiredsize), because the [**Measure**](/uwp/api/windows.ui.xaml.uielement.measure) logic sets it as the minimum of what was passed to **Measure**, or other natural size factors. So you don't typically need to specifically check for clipping during [**Arrange**](/uwp/api/windows.ui.xaml.uielement.arrange); the clipping just happens based on passing the **DesiredSize** through to each **Arrange** call. - -You don't always need a count while going through the loop if all the info you need for defining the rendering position is known by other means. For example, in [**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas) layout logic, the position in the [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) collection doesn't matter. All the info needed to position each element in a **Canvas** is known by reading [**Canvas.Left**](/dotnet/api/system.windows.controls.canvas.left) and [**Canvas.Top**](/dotnet/api/system.windows.controls.canvas.top) values of children as part of the arrange logic. The `BoxPanel` logic happens to need a count to compare to the *colcount* so it's known when to begin a new row and offset the *y* value. - -It's typical that the input *finalSize* and the [**Size**](/uwp/api/Windows.Foundation.Size) you return from a [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride) implementation are the same. For more info about why, see "**ArrangeOverride**" section of [XAML custom panels overview](custom-panels-overview.md). - -## A refinement: controlling the row vs. column count - -You could compile and use this panel just as it is now. However, we'll add one more refinement. In the code just shown, the logic puts the extra row or column on the side that's longest in aspect ratio. But for greater control over the shapes of cells, it might be desirable to choose a 4x3 set of cells instead of 3x4 even if the panel's own aspect ratio is "portrait." So we'll add an optional dependency property that the panel consumer can set to control that behavior. Here's the dependency property definition, which is very basic: - -```CSharp -// Property -public Orientation Orientation -{ - get { return (Orientation)GetValue(OrientationProperty); } - set { SetValue(OrientationProperty, value); } -} - -// Dependency Property Registration -public static readonly DependencyProperty OrientationProperty = - DependencyProperty.Register(nameof(Orientation), typeof(Orientation), typeof(BoxPanel), new PropertyMetadata(null, OnOrientationChanged)); - -// Changed callback so we invalidate our layout when the property changes. -private static void OnOrientationChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args) -{ - if (dependencyObject is BoxPanel panel) - { - panel.InvalidateMeasure(); - } -} -``` - -And below is how using `Orientation` impacts the measure logic in `MeasureOverride`. Really all it's doing is changing how `rowcount` and `colcount` are derived from `maxrc` and the true aspect ratio, and there are corresponding size differences for each cell because of that. When `Orientation` is **Vertical** (default), it inverts the value of the true aspect ratio before using it for row and column counts for our "portrait" rectangle layout. - -```CSharp -// Get an aspect ratio from availableSize, decides whether to trim row or column. -aspectratio = availableSize.Width / availableSize.Height; - -// Transpose aspect ratio based on Orientation property. -if (Orientation == Orientation.Vertical) { aspectratio = 1 / aspectratio; } -``` - -## The scenario for BoxPanel - -The particular scenario for `BoxPanel` is that it's a panel where one of the main determinants of how to divide space is by knowing the number of child items, and dividing the known available space for the panel. Panels are innately rectangle shapes. Many panels operate by dividing that rectangle space into further rectangles; that's what [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) does for its cells. In **Grid**'s case, the size of the cells is set by [**ColumnDefinition**](/uwp/api/Windows.UI.Xaml.Controls.ColumnDefinition) and [**RowDefinition**](/uwp/api/Windows.UI.Xaml.Controls.RowDefinition) values, and elements declare the exact cell they go into with [**Grid.Row**](/dotnet/api/system.windows.controls.grid.row) and [**Grid.Column**](/dotnet/api/system.windows.controls.grid.column) attached properties. Getting good layout from a **Grid** usually requires knowing the number of child elements beforehand, so that there are enough cells and each child element sets its attached properties to fit into its own cell. - -But what if the number of children is dynamic? That's certainly possible; your app code can add items to collections, in response to any dynamic run-time condition you consider to be important enough to be worth updating your UI. If you're using data binding to backing collections/business objects, getting such updates and updating the UI is handled automatically, so that's often the preferred technique (see [Data binding in depth](/windows/uwp/data-binding/data-binding-in-depth)). - -But not all app scenarios lend themselves to data binding. Sometimes, you need to create new UI elements at runtime and make them visible. `BoxPanel` is for this scenario. A changing number of child items is no problem for `BoxPanel` because it's using the child count in calculations, and adjusts both the existing and new child elements into a new layout so they all fit. - -An advanced scenario for extending `BoxPanel` further (not shown here) could both accommodate dynamic children and use a child's [**DesiredSize**](/uwp/api/windows.ui.xaml.uielement.desiredsize) as a stronger factor for the sizing of individual cells. This scenario might use varying row or column sizes or non-grid shapes so that there's less "wasted" space. This requires a strategy for how multiple rectangles of various sizes and aspect ratios can all fit into a containing rectangle both for aesthetics and smallest size. `BoxPanel` doesn't do that; it's using a simpler technique for dividing space. `BoxPanel`'s technique is to determine the least square number that's greater than the child count. For example, 9 items would fit in a 3x3 square. 10 items require a 4x4 square. However, you can often fit items while still removing one row or column of the starting square, to save space. In the count=10 example, that fits in a 4x3 or 3x4 rectangle. - -You might wonder why the panel wouldn't instead choose 5x2 for 10 items, because that fits the item number neatly. However, in practice, panels are sized as rectangles that seldom have a strongly oriented aspect ratio. The least-squares technique is a way to bias the sizing logic to work well with typical layout shapes and not encourage sizing where the cell shapes get odd aspect ratios. - -## Related topics - -**Reference** - -* [**FrameworkElement.ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride) -* [**FrameworkElement.MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) -* [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) - -**Concepts** - -* [Alignment, margin, and padding](alignment-margin-padding.md) diff --git a/hub/apps/design/layout/custom-panels-overview.md b/hub/apps/design/layout/custom-panels-overview.md deleted file mode 100644 index b5ed609885..0000000000 --- a/hub/apps/design/layout/custom-panels-overview.md +++ /dev/null @@ -1,195 +0,0 @@ ---- -description: You can define custom panels for XAML layout by deriving a custom class from the Panel class. -MS-HAID: dev\_ctrl\_layout\_txt.xaml\_custom\_panels\_overview -MSHAttr: PreferredLib:/library/windows/apps -Search.Product: eADQiWindows 10XVcnh -title: XAML custom panels overview -ms.assetid: 0CD395CD-E2AB-429D-BB49-56A71C5CC35D -label: XAML custom panels overview (Windows apps) -template: detail.hbs -op-migration-status: ready -ms.date: 05/19/2017 -ms.topic: concept-article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# XAML custom panels overview - - - -A *panel* is an object that provides a layout behavior for child elements it contains, when the Extensible Application Markup Language (XAML) layout system runs and your app UI is rendered. - - -> **Important APIs**: [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel), [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride), [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) - -You can define custom panels for XAML layout by deriving a custom class from the [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) class. You provide behavior for your panel by overriding the [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) and [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride), supplying logic that measures and arranges the child elements. - -## The **Panel** base class - - -To define a custom panel class, you can either derive from the [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) class directly, or derive from one of the practical panel classes that aren't sealed, such as [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) or [**StackPanel**](/uwp/api/Windows.UI.Xaml.Controls.StackPanel). It's easier to derive from **Panel**, because it can be difficult to work around the existing layout logic of a panel that already has layout behavior. Also, a panel with behavior might have existing properties that aren't relevant for your panel's layout features. - -From [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel), your custom panel inherits these APIs: - -- The [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) property. -- The [**Background**](/uwp/api/windows.ui.xaml.controls.panel.background), [**ChildrenTransitions**](/uwp/api/windows.ui.xaml.controls.panel.childrentransitions) and [**IsItemsHost**](/uwp/api/windows.ui.xaml.controls.panel.isitemshost) properties, and the dependency property identifiers. None of these properties are virtual, so you don't typically override or replace them. You don't typically need these properties for custom panel scenarios, not even for reading values. -- The layout override methods [**MeasureOverride**](/uwp/api/windows.ui.xaml.frameworkelement.measureoverride) and [**ArrangeOverride**](/uwp/api/windows.ui.xaml.frameworkelement.arrangeoverride). These were originally defined by [**FrameworkElement**](/uwp/api/Windows.UI.Xaml.FrameworkElement). The base [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) class doesn't override these, but practical panels like [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) do have override implementations that are implemented as native code and are run by the system. Providing new (or additive) implementations for **ArrangeOverride** and **MeasureOverride** is the bulk of the effort you need to define a custom panel. -- All the other APIs of [**FrameworkElement**](/uwp/api/Windows.UI.Xaml.FrameworkElement), [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) and [**DependencyObject**](/uwp/api/Windows.UI.Xaml.DependencyObject), such as [**Height**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Height), [**Visibility**](/uwp/api/windows.ui.xaml.uielement.visibility) and so on. You sometimes reference values of these properties in your layout overrides, but they aren't virtual so you don't typically override or replace them. - -This focus here is to describe XAML layout concepts, so you can consider all the possibilities for how a custom panel can and should behave in layout. If you'd rather jump right in and see an example custom panel implementation, see [BoxPanel, an example custom panel](boxpanel-example-custom-panel.md). - -## The **Children** property - - -The [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) property is relevant to a custom panel because all classes derived from [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) use the **Children** property as the place to store their contained child elements in a collection. **Children** is designated as the XAML content property for the **Panel** class, and all classes derived from **Panel** can inherit the XAML content property behavior. If a property is designated the XAML content property, that means that XAML markup can omit a property element when specifying that property in markup, and the values are set as immediate markup children (the "content"). For example, if you derive a class named **CustomPanel** from **Panel** that defines no new behavior, you can still use this markup: - -```XAML - - - -``` - -For more info about attached properties, see [Attached properties overview](/windows/uwp/xaml-platform/attached-properties-overview). - -### Panel borders - -The RelativePanel, StackPanel, and Grid panels define border properties that let you draw a border around the panel without wrapping them in an additional Border element. The border properties are **BorderBrush**, **BorderThickness**, **CornerRadius**, and **Padding**. - -Here’s an example of how to set border properties on a Grid. - -```xaml - - - -``` - -![A Grid with borders](images/layout-panel-grid-border.png) - -Using the built-in border properties reduces the XAML element count, which can improve the UI performance of your app. For more info about layout panels and UI performance, see [Optimize your XAML layout](/windows/uwp/debug-test-perf/optimize-your-xaml-layout). - -## RelativePanel - -[**RelativePanel**](/uwp/api/Windows.UI.Xaml.Controls.RelativePanel) lets you layout UI elements by specifying where they go in relation to other elements and in relation to the panel. By default, an element is positioned in the upper left corner of the panel. You can use RelativePanel with [**VisualStateManager**](/uwp/api/Windows.UI.Xaml.VisualStateManager) and [**AdaptiveTrigger**](/uwp/api/Windows.UI.Xaml.AdaptiveTrigger) to rearrange your UI for different window sizes. - -This table shows the attached properties you can use to align an element in relation to the panel or other elements. - -Panel alignment | Sibling alignment | Sibling position -----------------|-------------------|----------------- -[**AlignTopWithPanel**](/uwp/api/windows.ui.xaml.controls.relativepanel.aligntopwithpanelproperty) | [**AlignTopWith**](/uwp/api/windows.ui.xaml.controls.relativepanel.aligntopwithproperty) | [**Above**](/uwp/api/windows.ui.xaml.controls.relativepanel) -[**AlignBottomWithPanel**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignbottomwithpanelproperty) | [**AlignBottomWith**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignbottomwithproperty) | [**Below**](/uwp/api/windows.ui.xaml.controls.relativepanel.belowproperty) -[**AlignLeftWithPanel**](/uwp/api/windows.ui.xaml.controls.relativepanel) | [**AlignLeftWith**](/uwp/api/windows.ui.xaml.controls.relativepanel.getalignleftwith) | [**LeftOf**](/uwp/api/windows.ui.xaml.controls.relativepanel.leftofproperty) -[**AlignRightWithPanel**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignrightwithpanelproperty) | [**AlignRightWith**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignrightwithproperty) | [**RightOf**](/uwp/api/windows.ui.xaml.controls.relativepanel.setrightof) -[**AlignHorizontalCenterWithPanel**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignhorizontalcenterwithpanelproperty) | [**AlignHorizontalCenterWith**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignhorizontalcenterwithproperty) |   -[**AlignVerticalCenterWithPanel**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignverticalcenterwithpanelproperty) | [**AlignVerticalCenterWith**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignverticalcenterwithproperty) |   - - -This XAML shows how to arrange elements in a RelativePanel. - -```xaml - - - - - - - -``` - -The result looks like this. - -![Relative panel](images/layout-panel-relative-panel.png) - -Here are a few things to note about the sizing of the rectangles: -- The red rectangle is given an explicit size of 44x44. It's placed in the upper left corner of the panel, which is the default position. -- The green rectangle is given an explicit height of 44. Its left side is aligned with the red rectangle, and its right side is aligned with the blue rectangle, which determines its width. -- The orange rectangle isn't given an explicit size. Its left side is aligned with the blue rectangle. Its right and bottom edges are aligned with the edge of the panel. Its size is determined by these alignments and it will resize as the panel resizes. - -## StackPanel - -[**StackPanel**](/uwp/api/Windows.UI.Xaml.Controls.StackPanel) arranges its child elements into a single line that can be oriented horizontally or vertically. StackPanel is typically used to arrange a small subsection of the UI on a page. - -You can use the [**Orientation**](/uwp/api/windows.ui.xaml.controls.stackpanel.orientation) property to specify the direction of the child elements. The default orientation is [**Vertical**](/uwp/api/Windows.UI.Xaml.Controls.Orientation). - -The following XAML shows how to create a vertical StackPanel of items. - -```xaml - - - - - - -``` - - -The result looks like this. - -![Stack panel](images/layout-panel-stack-panel.png) - -In a StackPanel, if a child element's size is not set explicitly, it stretches to fill the available width (or height if the Orientation is **Horizontal**). In this example, the width of the rectangles is not set. The rectangles expand to fill the entire width of the StackPanel. - -## Grid - -The [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) panel supports fluid layouts and allows you to arrange controls in multi-row and multi-column layouts. You specify a Grid's rows and columns by using the [**RowDefinitions**](/uwp/api/windows.ui.xaml.controls.grid.rowdefinitions) and [**ColumnDefinitions**](/uwp/api/windows.ui.xaml.controls.grid.columndefinitions) properties. - -To position objects in specific cells of the Grid, use the [**Grid.Column**](/dotnet/api/system.windows.controls.grid.column) and [**Grid.Row**](/dotnet/api/system.windows.controls.grid.row) attached properties. - -To make content span across multiple rows and columns, use the [**Grid.RowSpan**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms605035(v=vs.95)) and [**Grid.ColumnSpan**](/dotnet/api/system.windows.controls.grid.columnspan) attached properties. - -This XAML example shows how to create a Grid with two rows and two columns. - -```xaml - - - - - - - - - - - - - - -``` - - -The result looks like this. - -![Grid](images/layout-panel-grid.png) - -In this example, the sizing works like this: -- The second row has an explicit height of 44 effective pixels. By default, the height of the first row fills whatever space is left over. -- The width of the first column is set to **Auto**, so it's as wide as needed for its children. In this case, it's 44 effective pixels wide to accommodate the width of the red rectangle. -- There are no other size constraints on the rectangles, so each one stretches to fill the grid cell it's in. - -You can distribute space within a column or a row by using **Auto** or star sizing. You use auto sizing to let UI elements resize to fit their content or parent container. You can also use auto sizing with the rows and columns of a grid. To use auto sizing, set the Height and/or Width of UI elements to **Auto**. - -You use proportional sizing, also called *star sizing*, to distribute available space among the rows and columns of a grid by weighted proportions. In XAML, star values are expressed as \* (or *n*\* for weighted star sizing). For example, to specify that one column is 5 times wider than the second column in a 2-column layout, use "5\*" and "\*" for the [**Width**](/uwp/api/windows.ui.xaml.controls.columndefinition.width) properties in the [**ColumnDefinition**](/uwp/api/Windows.UI.Xaml.Controls.ColumnDefinition) elements. - -This example combines fixed, auto, and proportional sizing in a [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) with 4 columns. - -| Column | Sizing | Description | -| ------ | ------ | ----------- | -Column_1 | **Auto** | The column will size to fit its content. -Column_2 | * | After the Auto columns are calculated, the column gets part of the remaining width. Column_2 will be one-half as wide as Column_4. -Column_3 | **44** | The column will be 44 pixels wide. -Column_4 | **2**\* | After the Auto columns are calculated, the column gets part of the remaining width. Column_4 will be twice as wide as Column_2. - -The default column width is "*", so you don't need to explicitly set this value for the second column. - -```xaml - - - - - - - - - -``` - -In the Visual Studio XAML designer, the result looks like this. - -![A 4 column grid in the Visual Studio designer](images/xaml-layout-grid-in-designer.png) - -## VariableSizedWrapGrid - -[**VariableSizedWrapGrid**](/uwp/api/Windows.UI.Xaml.Controls.VariableSizedWrapGrid) is a Grid-style layout panel where rows or columns automatically wrap to a new row or column when the [**MaximumRowsOrColumns**](/uwp/api/windows.ui.xaml.controls.variablesizedwrapgrid.maximumrowsorcolumns) value is reached. - -The [**Orientation**](/uwp/api/windows.ui.xaml.controls.variablesizedwrapgrid.orientation) property specifies whether the grid adds its items in rows or columns before wrapping. The default orientation is **Vertical**, which means the grid adds items from top to bottom until a column is full, then wraps to a new column. When the value is **Horizontal**, the grid adds items from left to right, then wraps to a new row. - -Cell dimensions are specified by the [**ItemHeight**](/uwp/api/windows.ui.xaml.controls.variablesizedwrapgrid.itemheight) and [**ItemWidth**](/uwp/api/windows.ui.xaml.controls.variablesizedwrapgrid.itemwidth). Each cell is the same size. If ItemHeight or ItemWidth is not specified, then the first cell sizes to fit its content, and every other cell is the size of the first cell. - -You can use the [**VariableSizedWrapGrid.ColumnSpan**](/uwp/api/windows.ui.xaml.controls.variablesizedwrapgrid) and [**VariableSizedWrapGrid.RowSpan**](/uwp/api/windows.ui.xaml.controls.variablesizedwrapgrid.getrowspan) attached properties to specify how many adjacent cells a child element should fill. - -Here's how to use a VariableSizedWrapGrid in XAML. - -```xaml - - - - - - -``` - - -The result looks like this. - -![Variable size wrap grid](images/layout-panel-variable-size-wrap-grid.png) - -In this example, the maximum number of rows in each column is 3. The first column contains only 2 items (the red and blue rectangles) because the blue rectangle spans 2 rows. The green rectangle then wraps to the top of the next column. - -## Canvas - -The [**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas) panel positions its child elements using fixed coordinate points and does not support fluid layouts. You specify the points on individual child elements by setting the [**Canvas.Left**](/dotnet/api/system.windows.controls.canvas.left) and [**Canvas.Top**](/dotnet/api/system.windows.controls.canvas.top) attached properties on each element. The parent Canvas reads these attached property values from its children during the [Arrange](/uwp/api/windows.ui.xaml.uielement.arrange) pass of layout. - -Objects in a Canvas can overlap, where one object is drawn on top of another object. By default, the Canvas renders child objects in the order in which they’re declared, so the last child is rendered on top (each element has a default z-index of 0). This is the same as other built-in panels. However, Canvas also supports the [**Canvas.ZIndex**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/cc190397(v=vs.95)) attached property that you can set on each of the child elements. You can set this property in code to change the draw order of elements during run time. The element with the highest Canvas.ZIndex value draws last and therefore draws over any other elements that share the same space or overlap in any way. Note that alpha value (transparency) is respected, so even if elements overlap, the contents shown in overlap areas might be blended if the top one has a non-maximum alpha value. - -The Canvas does not do any sizing of its children. Each element must specify its size. - -Here's an example of a Canvas in XAML. - -```xaml - - - - - - -``` - -The result looks like this. - -![Canvas](images/layout-panel-canvas.png) - -Use the Canvas panel with discretion. While it's convenient to be able to precisely control positions of elements in UI for some scenarios, a fixed positioned layout panel causes that area of your UI to be less adaptive to overall app window size changes. App window resize might come from device orientation changes, split app windows, changing monitors, and a number of other user scenarios. - -## Panels for ItemsControl - -There are several special-purpose panels that can be used only as an [**ItemsPanel**](/uwp/api/windows.ui.xaml.controls.itemscontrol.itemspanel) to display items in an [**ItemsControl**](/uwp/api/Windows.UI.Xaml.Controls.ItemsControl). These are [**ItemsStackPanel**](/uwp/api/Windows.UI.Xaml.Controls.ItemsStackPanel), [**ItemsWrapGrid**](/uwp/api/Windows.UI.Xaml.Controls.ItemsWrapGrid), [**VirtualizingStackPanel**](/uwp/api/Windows.UI.Xaml.Controls.VirtualizingStackPanel), and [**WrapGrid**](/uwp/api/Windows.UI.Xaml.Controls.WrapGrid). You can't use these panels for general UI layout. - -## Get the sample code - -- [WinUI 2 Gallery sample](https://github.com/Microsoft/WinUI-Gallery) - See all the XAML controls in an interactive format. diff --git a/hub/apps/design/layout/layouts-with-xaml.md b/hub/apps/design/layout/layouts-with-xaml.md deleted file mode 100644 index 9169c8480d..0000000000 --- a/hub/apps/design/layout/layouts-with-xaml.md +++ /dev/null @@ -1,347 +0,0 @@ ---- -description: Learn how to use the XAML flexible layout system with automatic sizing, layout panels, visual states, and separate UI definitions to create a responsive UI. -title: Responsive layouts with XAML -ms.date: 09/26/2024 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium -dev_langs: - - csharp - - cppwinrt ---- -# Responsive layouts with XAML - -The XAML layout system provides automatic sizing of elements, layout panels, and visual states to help you create a responsive UI. With a responsive layout, you can make your app look great on screens with different app window sizes, resolutions, pixel densities, and orientations. You can also use XAML to reposition, resize, reflow, show/hide, replace, or re-architect your app's UI, as discussed in [Responsive design techniques](responsive-design.md). Here, we discuss how to implement responsive layouts with XAML. - -## Fluid layouts with properties and panels - -The foundation of a responsive layout is the appropriate use of XAML layout properties and panels to reposition, resize, and reflow content in a fluid manner. - -The XAML layout system supports both static and fluid layouts. In a static layout, you give controls explicit pixel sizes and positions. When the user changes the resolution or orientation of their device, the UI doesn't change. Static layouts can become clipped across different form factors and display sizes. On the other hand, fluid layouts shrink, grow, and reflow to respond to the visual space available on a device. - -In practice, you use a combination of static and fluid elements to create your UI. You still use static elements and values in some places, but make sure that the overall UI is responsive to different resolutions, screen sizes, and views. - -Here, we discuss how to use XAML properties and layout panels to create a fluid layout. - -### Layout properties - -Layout properties control the size and position of an element. To create a fluid layout, use automatic or proportional sizing for elements, and allow layout panels to position their children as needed. - -Here are some common layout properties and how to use them to create fluid layouts. - -**Height and Width** - -The [**Height**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.height) and [**Width**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.width) properties specify the size of an element. You can use fixed values measured in effective pixels, or you can use auto or proportional sizing. - -Auto sizing resizes UI elements to fit their content or parent container. You can also use auto sizing with the rows and columns of a grid. To use auto sizing, set the Height and/or Width of UI elements to **Auto**. - -> [!NOTE] -> Whether an element resizes to its content or its container depends on how the parent container handles sizing of its children. For more info, see [Layout panels](#layout-panels) later in this article. - -Proportional sizing, also called *star sizing*, distributes available space among the rows and columns of a grid by weighted proportions. In XAML, star values are expressed as \* (or *n*\* for weighted star sizing). For example, to specify that one column is 5 times wider than the second column in a 2-column layout, use "5\*" and "\*" for the [**Width**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.columndefinition.width) properties in the [**ColumnDefinition**](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ColumnDefinition) elements. - -This example combines fixed, auto, and proportional sizing in a [**Grid**](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.Grid) with 4 columns. - -| Column | Sizing | Description | -| ------ | ------ | ----------- | -| Column_1 | **Auto** | The column will size to fit its content. | -| Column_2 | * | After the Auto columns are calculated, the column gets part of the remaining width. Column_2 will be one-half as wide as Column_4. | -| Column_3 | **44** | The column will be 44 pixels wide. | -| Column_4 | **2**\* | After the Auto columns are calculated, the column gets part of the remaining width. Column_4 will be twice as wide as Column_2. | - -The default column width is "*", so you don't need to explicitly set this value for the second column. - -```xaml - - - - - - - - - -``` - -In the Visual Studio XAML designer, the result looks like this. - -![A 4 column grid in the Visual Studio designer](images/xaml-layout-grid-in-designer.png) - -To get the size of an element at runtime, use the read-only [**ActualHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.actualheight) and [**ActualWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.actualwidth) properties instead of Height and Width. - -**Size constraints** - -When you use auto sizing in your UI, you might still need to place constraints on the size of an element. You can set the [**MinWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.minwidth)/[**MaxWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.maxwidth) and [**MinHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.minheight)/[**MaxHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.maxheight) properties to specify values that constrain the size of an element while allowing fluid resizing. - -In a Grid, MinWidth/MaxWidth can also be used with column definitions, and MinHeight/MaxHeight can be used with row definitions. - -**Alignment** - -Use the [**HorizontalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.verticalalignment) properties to specify how an element should be positioned within its parent container. - -- The values for **HorizontalAlignment** are **Left**, **Center**, **Right**, and **Stretch**. -- The values for **VerticalAlignment** are **Top**, **Center**, **Bottom**, and **Stretch**. - -With the **Stretch** alignment, elements fill all the space they're provided in the parent container. Stretch is the default for both alignment properties. However, some controls, like [**Button**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button), override this value in their default style. -Any element that can have child elements can treat the Stretch value for HorizontalAlignment and VerticalAlignment properties uniquely. For example, an element using the default Stretch values placed in a Grid stretches to fill the cell that contains it. The same element placed in a Canvas sizes to its content. For more info about how each panel handles the Stretch value, see the [Layout panels](layout-panels.md) article. - -For more info, see the [Alignment, margin, and padding](alignment-margin-padding.md) article, and the [**HorizontalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.verticalalignment) reference pages. - -**Visibility** - -You can reveal or hide an element by setting its [**Visibility**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.visibility) property to one of the [**Visibility** enumeration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visibility) values: **Visible** or **Collapsed**. When an element is Collapsed, it doesn't take up any space in the UI layout. - -You can change an element's Visibility property in code or in a visual state. When the Visibility of an element is changed, all of its child elements are also changed. You can replace sections of your UI by revealing one panel while collapsing another. - -> [!TIP] -> When you have elements in your UI that are **Collapsed** by default, the objects are still created at startup, even though they aren't visible. You can defer loading these elements until they are shown by using the **x:Load attribute** to delay the creation of the objects. This can improve startup performance. For more info, see [x:Load attribute](/windows/uwp/xaml-platform/x-load-attribute). - -### Style resources - -You don't have to set each property value individually on a control. It's typically more efficient to group property values into a [**Style**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.style) resource and apply the Style to a control. This is especially true when you need to apply the same property values to many controls. For more info about using styles, see [Styling controls](../../develop/platform/xaml/xaml-styles.md). - -### Layout panels - -To position visual objects, you must put them in a panel or other container object. The XAML framework provides various panel classes, such as [**Canvas**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.canvas), [**Grid**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.grid), [**RelativePanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.relativepanel) and [**StackPanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.stackpanel), which serve as containers and enable you to position and arrange the UI elements within them. - -The main thing to consider when choosing a layout panel is how the panel positions and sizes its child elements. You might also need to consider how overlapping child elements are layered on top of each other. - -Here's a comparison of the main features of the panel controls provided in the XAML framework. - -| Panel Control | Description | -|--------------|------------| -| [**Canvas**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.canvas) | **Canvas** doesn't support fluid UI; you control all aspects of positioning and sizing child elements. You typically use it for special cases like creating graphics or to define small static areas of a larger adaptive UI. You can use code or visual states to reposition elements at runtime.
  • Elements are positioned absolutely using Canvas.Top and Canvas.Left attached properties.
  • Layering can be explicitly specified using the Canvas.ZIndex attached property.
  • Stretch values for HorizontalAlignment/VerticalAlignment are ignored. If an element's size is not set explicitly, it sizes to its content.
  • Child content is not visually clipped if larger than the panel.
  • Child content is not constrained by the bounds of the panel.
  • | -| [**Grid**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.grid) | **Grid** supports fluid resizing of child elements. You can use code or visual states to reposition and reflow elements.
  • Elements are arranged in rows and columns using Grid.Row and Grid.Column attached properties.
  • Elements can span multiple rows and columns using Grid.RowSpan and Grid.ColumnSpan attached properties.
  • Stretch values for HorizontalAlignment/VerticalAlignment are respected. If an element's size is not set explicitly, it stretches to fill the available space in the grid cell.
  • Child content is visually clipped if larger than the panel.
  • Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
  • | -| [**RelativePanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.relativepanel) |
  • Elements are arranged in relation to the edge or center of the panel, and in relation to each other.
  • Elements are positioned using a variety of attached properties that control panel alignment, sibling alignment, and sibling position.
  • Stretch values for HorizontalAlignment/VerticalAlignment are ignored unless RelativePanel attached properties for alignment cause stretching (for example, an element is aligned to both the right and left edges of the panel). If an element's size is not set explicitly and it's not stretched, it sizes to its content.
  • Child content is visually clipped if larger than the panel.
  • Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
  • | -| [**StackPanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.stackpanel) |
  • Elements are stacked in a single line either vertically or horizontally.
  • Stretch values for HorizontalAlignment/VerticalAlignment are respected in the direction opposite the Orientation property. If an element's size is not set explicitly, it stretches to fill the available width (or height if the Orientation is Horizontal). In the direction specified by the Orientation property, an element sizes to its content.
  • Child content is visually clipped if larger than the panel.
  • Content size is not constrained by the bounds of the panel in the direction specified by the Orientation property, so scrollable content stretches beyond the panel bounds and doesn't show scrollbars. You must explicitly constrain the height (or width) of the child content to make its scrollbars show.
  • | -| [**VariableSizedWrapGrid**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.variablesizedwrapgrid) |
  • Elements are arranged in rows or columns that automatically wrap to a new row or column when the MaximumRowsOrColumns value is reached.
  • Whether elements are arranged in rows or columns is specified by the Orientation property.
  • Elements can span multiple rows and columns using VariableSizedWrapGrid.RowSpan and VariableSizedWrapGrid.ColumnSpan attached properties.
  • Stretch values for HorizontalAlignment and VerticalAlignment are ignored. Elements are sized as specified by the ItemHeight and ItemWidth properties. If these properties are not set, they take their values from the size of the first cell.
  • Child content is visually clipped if larger than the panel.
  • Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
  • | - -For detailed information and examples of these panels, see [Layout panels](layout-panels.md). - -Layout panels let you organize your UI into logical groups of controls. When you use them with appropriate property settings, you get some support for automatic resizing, repositioning, and reflowing of UI elements. However, most UI layouts need further modification when there are significant changes to the window size. For this, you can use visual states. - -## Adaptive layouts with visual states and state triggers - -Use visual states to make significant alterations to your UI based on window size or other changes. - -When your app window grows or shrinks beyond a certain amount, you might want to alter layout properties to reposition, resize, reflow, reveal, or replace sections of your UI. You can define different visual states for your UI, and apply them when the window width or window height crosses a specified threshold. - -A [**VisualState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstate) defines property values that are applied to an element when it's in a particular state. You group visual states in a [**VisualStateManager**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager) that applies the appropriate VisualState when the specified conditions are met. An [**AdaptiveTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.adaptivetrigger) provides an easy way to set the threshold (also called 'breakpoint') where a state is applied in XAML. Or, you can call the [**VisualStateManager.GoToState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager.gotostate) method in your code to apply the visual state. Examples of both ways are shown in the next sections. - -### Set visual states in code - -To apply a visual state from code, you call the [**VisualStateManager.GoToState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager.gotostate) method. For example, to apply a state when the app window is a particular size, handle the [**SizeChanged**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.window.sizechanged) event and call **GoToState** to apply the appropriate state. - -Here, a [**VisualStateGroup**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstategroup) contains two VisualState definitions. The first, `DefaultState`, is empty. When it's applied, the values defined in the XAML page are applied. The second, `WideState`, changes the [**DisplayMode**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitview.displaymode) property of the [**SplitView**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitview) to **Inline** and opens the pane. This state is applied in the SizeChanged event handler if the window width is greater than 640 effective pixels. - -> [!NOTE] -> Windows doesn't provide a way for your app to detect the specific device your app is running on. It can tell you the device family (desktop, etc) the app is running on, the effective resolution, and the amount of screen space available to the app (the size of the app's window). We recommend defining visual states for [screen sizes and break points](screen-sizes-and-breakpoints-for-responsive-design.md). - -```xaml - - - - - - - - - - - - - - - Inline - - - - - - - - - - - - - - - - - - - - -``` - -```csharp -private void CurrentWindow_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e) -{ - if (e.Size.Width > 640) - VisualStateManager.GoToState(this, "WideState", false); - else - VisualStateManager.GoToState(this, "DefaultState", false); -} -``` - -```cppwinrt -// YourPage.h -void CurrentWindow_SizeChanged(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::SizeChangedEventArgs const& e); - -// YourPage.cpp -void YourPage::CurrentWindow_SizeChanged(IInspectable const& sender, SizeChangedEventArgs const& e) -{ - if (e.NewSize.Width > 640) - VisualStateManager::GoToState(*this, "WideState", false); - else - VisualStateManager::GoToState(*this, "DefaultState", false); -} - -``` - -### Set visual states in XAML markup - -Prior to Windows 10, VisualState definitions required [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard) objects for property changes, and you had to call **GoToState** in code to apply the state. This is shown in the previous example. You will still see many examples that use this syntax, or you might have existing code that uses it. - -Starting in Windows 10, you can use the simplified [**Setter**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.setter) syntax shown here, and you can use a [**StateTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.statetrigger) in your XAML markup to apply the state. You use state triggers to create simple rules that automatically trigger visual state changes in response to an app event. - -This example does the same thing as the previous example, but uses the simplified **Setter** syntax instead of a Storyboard to define property changes. And instead of calling GoToState, it uses the built in [**AdaptiveTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.adaptivetrigger) state trigger to apply the state. When you use state triggers, you don't need to define an empty `DefaultState`. The default settings are reapplied automatically when the conditions of the state trigger are no longer met. - -```xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -> [!IMPORTANT] -> In the previous example, the VisualStateManager.VisualStateGroups attached property is set on the **Grid** element. When you use StateTriggers, always ensure that VisualStateGroups is attached to the first child of the root in order for the triggers to take effect automatically. (Here, **Grid** is the first child of the root **Page** element.) - -### Attached property syntax - -In a VisualState, you typically set a value for a control property, or for one of the attached properties of the panel that contains the control. When you set an attached property, use parentheses around the attached property name. - -This example shows how to set the [**RelativePanel.AlignHorizontalCenterWithPanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.relativepanel.alignhorizontalcenterwithpanelproperty) attached property on a TextBox named `myTextBox`. The first XAML uses [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.objectanimationusingkeyframes) syntax and the second uses **Setter** syntax. - -```xaml - - - - - - - -``` - -### Custom state triggers - -You can extend the [**StateTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.statetrigger) class to create custom triggers for a wide range of scenarios. For example, you can create a StateTrigger to trigger different states based on input type, then increase the margins around a control when the input type is touch. Or create a StateTrigger to apply different states based on the device family the app is run on. For examples of how to build custom triggers and use them to create optimized UI experiences from within a single XAML view, see the [State triggers sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlStateTriggers). - -### Visual states and styles - -You can use Style resources in visual states to apply a set of property changes to multiple controls. For more info about using styles, see [Styling controls](../../develop/platform/xaml/xaml-styles.md). - -In this simplified XAML from the State triggers sample, a Style resource is applied to a Button to adjust the size and margins for mouse or touch input. For the complete code and the definition of the custom state trigger, see the [State triggers sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlStateTriggers). - -```xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -## Related topics - -- [State triggers sample (GitHub)](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlStateTriggers) -- [Tailored multiple views sample (GitHub)](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlTailoredMultipleViews) diff --git a/hub/apps/design/layout/responsive-design.md b/hub/apps/design/layout/responsive-design.md deleted file mode 100644 index 9e754e7f37..0000000000 --- a/hub/apps/design/layout/responsive-design.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -description: Learn responsive design techniques to tailor your app for specific devices -title: Responsive design techniques -template: detail.hbs -op-migration-status: ready -ms.date: 09/25/2024 -ms.topic: article -keywords: windows 10, uwp -localizationpriority: medium -ms.custom: RS5 ---- -# Responsive design techniques - -_Responsive_ design uses just one layout where the content is fluid and can adapt to changing window sizes. Responsive design lets you build a feature one time and expect it to work across all screen sizes. _Adaptive_ design is similar, but replaces one layout with another layout. - -XAML apps use effective pixels to guarantee that your UI will be legible and usable on all Windows-powered devices. So, why would you ever want to customize your app's UI for a specific device or screen size? - -- **To make the most effective use of space and reduce the need to navigate** - - If you design an app to look good on a device that has a small screen, such as a tablet, the app will be usable on a PC with a much bigger display, but there will probably be some wasted space. You can customize the app to display more content when the screen is above a certain size. For example, a shopping app might display one merchandise category at a time on a tablet, but show multiple categories and products simultaneously on a PC or laptop. - - By putting more content on the screen, you reduce the amount of navigation that the user needs to perform. - -- **To take advantage of devices' capabilities** - - Certain devices are more likely to have certain device capabilities. For example, laptops are likely to have a location sensor and a camera, while a TV might not have either. Your app can detect which capabilities are available and enable features that use them. - -- **To optimize for input** - - The universal control library works with all input types (touch, pen, keyboard, mouse), but you can still optimize for certain input types by re-arranging your UI elements. - -When you optimize your app's UI for specific screen widths, we say that you're creating a responsive design. Here are some responsive design techniques you can use to customize your app's UI. - -## Reposition - -You can alter the location and position of UI elements to make the most of the window size. In this example, the smaller window stacks elements vertically. When the app translates to a larger window, elements can take advantage of the wider window width. - -![Reposition](images/rsp-design/rspd-reposition2.gif) - -In this example design for a photo app, the photo app repositions its content on larger screens. - -## Resize - -You can optimize for the window size by adjusting the margins and size of UI elements. For example, this could augment the reading experience on a larger screen by simply growing the content frame. - -![Resizing design elements](images/rsp-design/rspd-resize2.gif) - -## Reflow - -By changing the flow of UI elements based on device and orientation, your app can offer an optimal display of content. For instance, when going to a larger screen, it might make sense to add columns, use larger containers, or generate list items in a different way. - -This example shows how a single column of vertically scrolling content on a smaller screen that can be reflowed on a larger screen to display two columns of text. - -![Reflowing design elements](images/rsp-design/rspd_reflow.gif) - -## Show/hide - -You can show or hide UI elements based on screen real estate, or when the device supports additional functionality, specific situations, or preferred screen orientations. - -![Hiding design elements](images/rsp-design/rspd-revealhide.gif) - -For example, media player controls reduce the button set on smaller screens and expand on larger screens. The media player on a larger window can handle far more on-screen functionality than it can on a smaller window. - -Part of the reveal-or-hide technique includes choosing when to display more metadata. With smaller windows, it's best to show a minimal amount of metadata. With larger windows, a significant amount of metadata can be surfaced. Some examples of when to show or hide metadata include: - -- In an email app, you can display the user's avatar. -- In a music app, you can display more info about an album or artist. -- In a video app, you can display more info about a film or a show, such as showing cast and crew details. -- In any app, you can break apart columns and reveal more details. -- In any app, you can take something that's vertically stacked and lay it out horizontally. When going from a small window to a larger window, stacked list items can change to reveal rows of list items and columns of metadata. - -## Re-architect - -You can collapse or fork the architecture of your app to better target specific devices. In this example, expanding the window shows the entire list/details pattern. - -![an example of re-architecting a user interface](images/rsp-design/rspd-rearchitect.gif) - -## Adaptive layout - -An adaptive layout is similar to responsive layout, but entirely replaces UI based on the format it's presented in. Adaptive design has multiple fixed layout sizes and triggers the page to load a given layout based on the available space. - -This technique lets you switch the user interface for a specific breakpoints. In this example, the nav pane and its compact, transient UI works well for a smaller screen, but on a larger screen, tabs might be a better choice. - -![Replacing design elements](images/rsp-design/rspd-replace.gif) - -The [NavigationView](../controls/navigationview.md) control supports this technique by letting users set the pane position to either top or left. - -## Related topics - -- [Fluent Design - Layout](https://fluent2.microsoft.design/layout) -- [Screen sizes and breakpoints](screen-sizes-and-breakpoints-for-responsive-design.md) -- [Responsive layouts with XAML](layouts-with-xaml.md) -- [XAML controls](../controls/index.md) diff --git a/hub/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md b/hub/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md deleted file mode 100644 index 9391b21961..0000000000 --- a/hub/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Screen sizes and break points for responsive design. -description: Rather than optimizing your UI for the many devices across the Windows ecosystem, we recommended designing for a few key width categories called breakpoints. -ms.date: 11/21/2024 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium -ms.custom: RS5 ---- -# Screen sizes and breakpoints - -Windows apps can run on any device running Windows, which includes tablets, desktops, TVs, and more. With a huge number of device targets and screen sizes across the Windows ecosystem, rather than optimizing your UI for each device, we recommended designing for a few key width categories (also called "breakpoints"): - -- Small (smaller than 640px) -- Medium (641px to 1007px) -- Large (1008px and larger) - -> [!TIP] -> When designing for specific breakpoints, design for the amount of screen space available to your app (the app's window), not the screen size. When the app is running full-screen, the app window is the same size as the screen, but when the app is not full-screen, the window is smaller than the screen. - -## Breakpoints - -This table describes the different size classes and breakpoints. - -![Responsive design breakpoints](images/breakpoints/size-classes.svg) - -| Size class | Breakpoints | Typical screen size | Devices | Window Sizes | -|------------|---------------|----------------------|-------------|--------------| -| Small | up to 640px | 20" to 65" | TVs | 320x569, 360x640, 480x854 | -| Medium | 641 - 1007px | 7" to 12" | Tablets | 960x540 | -| Large | 1008px and up | 13" and up | PCs, Laptops, Surface Hub | 1024x640, 1366x768, 1920x1080 | - -## Why are TVs considered "small"? - -While most TVs are physically quite large (40 to 65 inches is common) and have high resolutions (HD or 4k), designing for a 1080P TV that you view from 10 feet away is different from designing for a 1080p monitor sitting a foot away on your desk. When you account for distance, the TV's 1080 pixels are more like a 540-pixel monitor that's much closer. - -XAML's effective pixel system automatically takes viewing distance in account for you. When you specify a size for a control or a breakpoint range, you're actually using "effective" pixels. For example, if you create responsive code for 1080 pixels or more, a 1080 monitor will use that code, but a 1080p TV will not--because although a 1080p TV has 1080 physical pixels, it only has 540 effective pixels. Which makes designing for a TV similar to designing for a small screen. - -## Effective pixels and scale factor - -XAML helps by automatically adjusting UI elements so that they're legible and easy to interact with on all devices and screen sizes. - -When your app runs on a device, the system uses an algorithm to normalize the way UI elements display on the screen. This scaling algorithm takes into account viewing distance and screen density (pixels per inch) to optimize for perceived size (rather than physical size). The scaling algorithm ensures that a 24 px font on a large presentation screen 10 feet away is just as legible to the user as a 24 px font on a small portable screen that's a few inches away. - -:::image type="content" source="images/scaling-chart.png" alt-text="Content is scaled differently on different devices based on how far away the user is expected to be from the device's screen"::: - -Because of how the scaling system works, when you design your XAML app, you're designing in effective pixels, not actual physical pixels. Effective pixels (epx) are a virtual unit of measurement, and they're used to express layout dimensions and spacing, independent of screen density. (In our guidelines, epx, ep, and px are used interchangeably.) - -You can ignore the pixel density and the actual screen resolution when designing. Instead, design for the effective resolution (the resolution in effective pixels) for a size class. - -> [!TIP] -> When creating screen mockups in image editing programs, set the DPI to 72 and set the image dimensions to the effective resolution for the size class you're targeting. - -## Multiples of Four - -:::image type="content" source="images/4epx.svg" alt-text="A 4 epx image being scaled to many dimensions without fractional pixels."::: - -The sizes, margins, and positions of UI elements should always be in multiples of 4 epx in your XAML apps. - -XAML scales across a range of devices with scaling plateaus of 100%, 125%, 150%, 175%, 200%, 225%, 250%, 300%, 350%, and 400%. The base unit is 4 because it can be scaled to these plateaus as a whole number (for example; 4 x 125% = 5, 4 x 150% = 6). Using multiples of four aligns all UI elements with whole pixels and ensures UI elements have crisp, sharp edges. (Note that text doesn't have this requirement; text can have any size and position.) - -## Related topics - -- [Fluent Design - Layout](https://fluent2.microsoft.design/layout) -- [Responsive design](responsive-design.md) -- [Responsive layouts with XAML](layouts-with-xaml.md) -- [XAML controls](../controls/index.md) diff --git a/hub/apps/design/motion/connected-animation.md b/hub/apps/design/motion/connected-animation.md deleted file mode 100644 index 6397899b99..0000000000 --- a/hub/apps/design/motion/connected-animation.md +++ /dev/null @@ -1,325 +0,0 @@ ---- -description: Connected animations let you create a dynamic and compelling navigation experience by animating the transition of an element between two different views. -title: Connected animation -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -pm-contact: stmoy -design-contact: conrwi -doc-status: Published -ms.localizationpriority: medium ---- -# Connected animation for Windows apps - -Connected animations let you create a dynamic and compelling navigation experience by animating the transition of an element between two different views. This helps the user maintain their context and provides continuity between the views. - -In a connected animation, an element appears to "continue" between two views during a change in UI content, flying across the screen from its location in the source view to its destination in the new view. This emphasizes the common content between the views and creates a beautiful and dynamic effect as part of a transition. - -> **Important APIs**: [ConnectedAnimation class](/uwp/api/windows.ui.xaml.media.animation.connectedanimation), [ConnectedAnimationService class](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) - - -## Examples - - - - - - -
    WinUI 2 Gallery -
    WinUI Gallery -

    If you have the WinUI 2 Gallery app installed, click here to open the app and see Connected Animation in action.

    - -
    - -In this short video, an app uses a connected animation to animate an item image as it "continues" to become part of the header of the next page. The effect helps maintain user context across the transition. - -![Connected Animation](images/connected-animations/example.gif) - -## Connected animation and the Fluent Design System - - The Fluent Design System helps you create modern, bold UI that incorporates light, depth, motion, material, and scale. Connected animation is a Fluent Design System component that adds motion to your app. To learn more, see the [Fluent Design overview](../index.md). - -## Why connected animation? - -When navigating between pages, it’s important for the user to understand what new content is being presented after the navigation and how it relates to their intent when navigating. Connected animations provide a powerful visual metaphor that emphasizes the relationship between two views by drawing the user’s focus to the content shared between them. Additionally, connected animations add visual interest and polish to page navigation that can help differentiate the motion design of your app. - -## When to use connected animation - -Connected animations are generally used when changing pages, though they can be applied to any experience where you are changing content in a UI and want the user to maintain context. You should consider using a connected animation instead of a [drill in navigation transition](/uwp/api/Windows.UI.Xaml.Media.Animation.NavigationThemeTransition) whenever there is an image or other piece of UI shared between the source and destination views. - -## Configure connected animation - -> [!IMPORTANT] -> This feature requires that your app's Target version be Windows 10, version 1809 ([SDK 17763](https://developer.microsoft.com/windows/downloads/windows-10-sdk)) or later. The Configuration property is not available in earlier SDKs. You can target a Minimum version lower than SDK 17763 using adaptive code or conditional XAML. For more info, see [Version adaptive apps](/windows/uwp/debug-test-perf/version-adaptive-apps). - -Starting in Windows 10, version 1809, connected animations further embody Fluent design by providing animation configurations tailored specifically for forward and backwards page navigation. - -You specify an animation configuration by setting the Configuration property on the ConnectedAnimation. (We’ll show examples of this in the next section.) - -This table describes the available configurations. For more information about the motion principles applied in these animations, see [Directionality and gravity](index.md). - -| [GravityConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.gravityconnectedanimationconfiguration) | -| - | -| This is the default configuration, and is recommended for forward navigation. | -As the user navigates forward in the app (A to B), the connected element appears to physically “pull off the page”. In doing so, the element appears to move forward in z-space and drops a bit as an effect of gravity taking hold. To overcome the effects of gravity, the element gains velocity and accelerates into its final position. The result is a “scale and dip” animation. | - -| [DirectConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.directconnectedanimationconfiguration) | -| - | -| As the user navigates backwards in the app (B to A), the animation is more direct. The connected element linearly translates from B to A using a decelerate cubic Bezier easing function. The backwards visual affordance returns the user to their previous state as fast as possible while still maintaining the context of the navigation flow. | - -| [BasicConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.basicconnectedanimationconfiguration) | -| - | -| This is the default (and only) animation used in versions prior to Windows 10, version 1809 ([SDK 17763](https://developer.microsoft.com/windows/downloads/windows-10-sdk)). | - -### ConnectedAnimationService configuration - -The [ConnectedAnimationService](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) class has two properties that apply to the individual animations rather than the overall service. - -- [DefaultDuration](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.defaultduration) -- [DefaultEasingFunction](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.defaulteasingfunction) - -To achieve the various effects, some configurations ignore these properties on ConnectedAnimationService and use their own values instead, as described in this table. - -| Configuration | Respects DefaultDuration? | Respects DefaultEasingFunction? | -| - | - | - | -| Gravity | Yes | Yes*
    **The basic translation from A to B uses this easing function, but the "gravity dip" has its own easing function.* | -| Direct | No
    *Animates over 150ms.*| No
    *Uses the Decelerate easing function.* | -| Basic | Yes | Yes | - -## How to implement connected animation - -Setting up a connected animation involves two steps: - -1. *Prepare* an animation object on the source page, which indicates to the system that the source element will participate in the connected animation. -1. *Start* the animation on the destination page, passing a reference to the destination element. - -When navigating from the source page, call [ConnectedAnimationService.GetForCurrentView](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.getforcurrentview) to get an instance of ConnectedAnimationService. To prepare an animation, call [PrepareToAnimate](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.preparetoanimate) on this instance, and pass in a unique key and the UI element you want to use in the transition. The unique key lets you retrieve the animation later on the destination page. - -```csharp -ConnectedAnimationService.GetForCurrentView() - .PrepareToAnimate("forwardAnimation", SourceImage); -``` - -When the navigation occurs, start the animation in the destination page. To start the animation, call [ConnectedAnimation.TryStart](/uwp/api/windows.ui.xaml.media.animation.connectedanimation.trystart). You can retrieve the right animation instance by calling [ConnectedAnimationService.GetAnimation](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.getanimation) with the unique key you provided when creating the animation. - -```csharp -ConnectedAnimation animation = - ConnectedAnimationService.GetForCurrentView().GetAnimation("forwardAnimation"); -if (animation != null) -{ - animation.TryStart(DestinationImage); -} -``` - -### Forward navigation - -This example shows how to use ConnectedAnimationService to create a transition for forward navigation between two pages (Page_A to Page_B). - -The recommended animation configuration for forward navigation is [GravityConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.gravityconnectedanimationconfiguration). This is the default, so you don't need to set the [Configuration](/uwp/api/windows.ui.xaml.media.animation.connectedanimation.configuration) property unless you want to specify a different configuration. - -Set up the animation in the source page. - -```xaml - - - -``` - -```csharp -// Page_A.xaml.cs - -private void SourceImage_PointerPressed(object sender, PointerRoutedEventArgs e) -{ - // Navigate to detail page. - // Suppress the default animation to avoid conflict with the connected animation. - Frame.Navigate(typeof(Page_B), null, new SuppressNavigationTransitionInfo()); -} - -protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) -{ - ConnectedAnimationService.GetForCurrentView() - .PrepareToAnimate("forwardAnimation", SourceImage); - // You don't need to explicitly set the Configuration property because - // the recommended Gravity configuration is default. - // For custom animation, use: - // animation.Configuration = new BasicConnectedAnimationConfiguration(); -} -``` - -Start the animation in the destination page. - -```xaml - - - -``` - -```csharp -// Page_B.xaml.cs - -protected override void OnNavigatedTo(NavigationEventArgs e) -{ - base.OnNavigatedTo(e); - - ConnectedAnimation animation = - ConnectedAnimationService.GetForCurrentView().GetAnimation("forwardAnimation"); - if (animation != null) - { - animation.TryStart(DestinationImage); - } -} -``` - -### Back navigation - -For back navigation (Page_B to Page_A), you follow the same steps, but the source and destination pages are reversed. - -When the user navigates back, they expect the app to be returned to the previous state as soon as possible. Therefore, the recommended configuration is [DirectConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.directconnectedanimationconfiguration). This animation is quicker, more direct, and uses the decelerate easing. - -Set up the animation in the source page. - -```csharp -// Page_B.xaml.cs - -protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) -{ - if (e.NavigationMode == NavigationMode.Back) - { - ConnectedAnimation animation = - ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("backAnimation", DestinationImage); - - // Use the recommended configuration for back animation. - animation.Configuration = new DirectConnectedAnimationConfiguration(); - } -} -``` - -Start the animation in the destination page. - -```csharp -// Page_A.xaml.cs - -protected override void OnNavigatedTo(NavigationEventArgs e) -{ - base.OnNavigatedTo(e); - - ConnectedAnimation animation = - ConnectedAnimationService.GetForCurrentView().GetAnimation("backAnimation"); - if (animation != null) - { - animation.TryStart(SourceImage); - } -} -``` - -Between the time that the animation is set up and when it's started, the source element appears frozen above other UI in the app. This lets you perform any other transition animations simultaneously. For this reason, you shouldn't wait more than ~250 milliseconds in between the two steps because the presence of the source element may become distracting. If you prepare an animation and do not start it within three seconds, the system will dispose of the animation and any subsequent calls to [TryStart](/uwp/api/windows.ui.xaml.media.animation.connectedanimation.trystart) will fail. - -## Connected animation in list and grid experiences - -Often, you will want to create a connected animation from or to a list or grid control. You can use the two methods on [ListView](/uwp/api/windows.ui.xaml.controls.listview) and [GridView](/uwp/api/windows.ui.xaml.controls.gridview), [PrepareConnectedAnimation](/uwp/api/windows.ui.xaml.controls.listviewbase.prepareconnectedanimation) and [TryStartConnectedAnimationAsync](/uwp/api/windows.ui.xaml.controls.listviewbase.trystartconnectedanimationasync), to simplify this process. - -For example, say you have a **ListView** that contains an element with the name "PortraitEllipse" in its data template. - -```xaml - - - - - … - - - - - -``` - -To prepare a connected animation with the ellipse corresponding to a given list item, call the [PrepareConnectedAnimation](/uwp/api/windows.ui.xaml.controls.listviewbase.prepareconnectedanimation) method with a unique key, the item, and the name "PortraitEllipse". - -```csharp -void PrepareAnimationWithItem(ContactsItem item) -{ - ContactsListView.PrepareConnectedAnimation("portrait", item, "PortraitEllipse"); -} -``` - -To start an animation with this element as the destination, such as when navigating back from a detail view, use [TryStartConnectedAnimationAsync](/uwp/api/windows.ui.xaml.controls.listviewbase.trystartconnectedanimationasync). If you have just loaded the data source for the ListView, TryStartConnectedAnimationAsync will wait to start the animation until the corresponding item container has been created. - -```csharp -private async void ContactsListView_Loaded(object sender, RoutedEventArgs e) -{ - ContactsItem item = GetPersistedItem(); // Get persisted item - if (item != null) - { - ContactsListView.ScrollIntoView(item); - ConnectedAnimation animation = - ConnectedAnimationService.GetForCurrentView().GetAnimation("portrait"); - if (animation != null) - { - await ContactsListView.TryStartConnectedAnimationAsync( - animation, item, "PortraitEllipse"); - } - } -} -``` - -## Coordinated animation - -![Coordinated Animation](images/connected-animations/coordinated_example.gif) - -A *coordinated animation* is a special type of entrance animation where an element appears along with the connected animation target, animating in tandem with the connected animation element as it moves across the screen. Coordinated animations can add more visual interest to a transition and further draw the user’s attention to the context that is shared between the source and destination views. In these images, the caption UI for the item is animating using a coordinated animation. - -When a coordinated animation uses the gravity configuration, gravity is applied to both the connected animation element and the coordinated elements. The coordinated elements will "swoop" alongside the connected element so the elements stay truly coordinated. - -Use the two-parameter overload of **TryStart** to add coordinated elements to a connected animation. This example demonstrates a coordinated animation of a Grid layout named "DescriptionRoot" that enters in tandem with a connected animation element named "CoverImage". - -```xaml - - - - - -``` - -```csharp -// DestinationPage.xaml.cs -void OnNavigatedTo(NavigationEventArgs e) -{ - var animationService = ConnectedAnimationService.GetForCurrentView(); - var animation = animationService.GetAnimation("coverImage"); - - if (animation != null) - { - // Don’t need to capture the return value as we are not scheduling any subsequent - // animations - animation.TryStart(CoverImage, new UIElement[] { DescriptionRoot }); - } -} -``` - -## Do’s and don’ts - -- Use a connected animation in page transitions where an element is shared between the source and destination pages. -- Use [GravityConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.gravityconnectedanimationconfiguration) for forward navigation. -- Use [DirectConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.directconnectedanimationconfiguration) for back navigation. -- Don't wait on network requests or other long-running asynchronous operations in between preparing and starting a connected animation. You may need to pre-load the necessary information to run the transition ahead of time, or use a low-resolution placeholder image while a high-resolution image loads in the destination view. -- Use [SuppressNavigationTransitionInfo](/uwp/api/windows.ui.xaml.media.animation.suppressnavigationtransitioninfo) to prevent a transition animation in a **Frame** if you are using **ConnectedAnimationService**, since connected animations aren't meant to be used simultaneously with the default navigation transitions. See [NavigationThemeTransition](/uwp/api/Windows.UI.Xaml.Media.Animation.NavigationThemeTransition) for more info on how to use navigation transitions. - -## Related articles - -[ConnectedAnimation](/uwp/api/windows.ui.xaml.media.animation.connectedanimation) - -[ConnectedAnimationService](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) - -[NavigationThemeTransition](/uwp/api/Windows.UI.Xaml.Media.Animation.NavigationThemeTransition) \ No newline at end of file diff --git a/hub/apps/design/motion/content-transition-animations.md b/hub/apps/design/motion/content-transition-animations.md deleted file mode 100644 index 5eb69c1394..0000000000 --- a/hub/apps/design/motion/content-transition-animations.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -description: Content transition animations let you change the content of an area of the screen while keeping the container or background constant. New content fades in. If there is existing content to be replaced, that content fades out. -title: Guidelines for content transition animations -ms.assetid: 0188FDB4-E183-466f-8A03-EE3FF5C474B1 -template: detail.hbs -ms.date: 05/19/2017 -ms.topic: article -keywords: windows 10, uwp -pm-contact: stmoy -design-contact: conrwi -doc-status: Published -ms.localizationpriority: medium ---- -# Content transition animations - - - -Content transition animations let you change the content of an area of the screen while keeping the container or background constant. New content fades in. If there is existing content to be replaced, that content fades out. - -> **Important APIs**: [**ContentThemeTransition class (XAML)**](/uwp/api/windows.ui.xaml.media.animation.contentthemetransition) - -## Do's and don'ts - - -- Use an entrance animation when there is a set of new items to bring into an empty container. For example, after the initial load of an app, part of the app's content might not be immediately available for display. When that content is ready to be shown, use a content transition animation to bring that late content into the view. -- Use content transitions to replace one set of content with another set of content that already resides in the same container within a view. -- When bringing in new content, slide that content up (from bottom to top) into the view against the general page flow or reading order. -- Introduce new content in a logical manner, for example, introduce the most important piece of content last. -- If you have more than one container whose content is to be updated, trigger all of the transition animations simultaneously without any staggering or delay. -- Don't use content transition animations when the entire page is changing. In that case, use the page transition animations instead. -- Don't use content transition animations if the content is only refreshing. Content transition animations are meant to show movement. For refreshes, use fade animations. - - - -## Related articles - -**For developers (XAML)** -* [Animations overview](./xaml-animation.md) -* [Animating content transitions](/previous-versions/windows/apps/jj649426(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**ContentThemeTransition class**](/uwp/api/windows.ui.xaml.media.animation.contentthemetransition) - -  - -  diff --git a/hub/apps/design/motion/directionality-and-gravity.md b/hub/apps/design/motion/directionality-and-gravity.md deleted file mode 100644 index 5d96eafe81..0000000000 --- a/hub/apps/design/motion/directionality-and-gravity.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Directionality and gravity - animation in Windows apps -description: Learn about using direction of movement, direction of navigation, and gravity in animated scenes by viewing examples. -label: Directionality and gravity -template: detail.hbs -ms.date: 09/18/2024 -ms.topic: article -doc-status: Published -ms.localizationpriority: medium -ms.custom: RS5 ---- -# Directionality and gravity - -Directional signals help to solidify the mental model of the journey a user takes across experiences. It is important that the direction of any motion support both the continuity of the space as well as the integrity of the objects in the space. - -​Directional movement is subject to forces like gravity. Applying forces to movement reinforces the natural feel of the motion.​ - -## Direction of movement​ - -:::row::: - :::column::: -Direction of movement corresponds to physical motion. Just like in nature, objects can move in any world axis - X,Y,Z. This is how we think of the movement of objects on the screen. -When you move objects, avoid unnatural collisions. ​Keep in mind where objects come from and go to, and always support higher level constructs that may be used in the scene, such as scroll direction or layout hierarchy.​ - :::column-end::: - :::column::: - ![Short video showing a circle and then the addition of an X axis, a Y axis, and a Z axis.](images/direction.gif) - :::column-end::: -:::row-end::: - -## Direction of navigation​ - -The direction of navigation between scenes in your app is conceptual. Users navigate forward and back. Scenes move in and out of view. These concepts combine with physical movement to guide the user. - -When navigation causes an object to travel from the previous scene to the new scene, the object makes a simple A-to-B move on the screen. To ensure that the movement feels more physical, the standard easing is added, as well as the feeling of gravity. - -For back navigation, the move is reversed (B-to-A). When the user navigates back, they have an expectation to be returned to the previous state as soon as possible. The timing is quicker, more direct, and uses the decelerate easing. - -Here, these principles are applied as the selected item stays on screen during forward and back navigation. - -![UI example of continuous motion](images/continuous3.gif) - -When navigation causes items on the screen to be replaced, its important to show where the exiting scene went to, and where the new scene is coming from. - -This has several benefits: -​ -- It solidifies the user's mental model of the space. -- The duration of the exiting scene provides more time to prepare content to be animated in for the incoming scene.​ -- It improves the perceived performance of the app.​ - -There are 4 discreet directions of navigation to consider​. - -:::row::: - :::column::: -**Forward-In** -Celebrate content entering the scene in a manner that does not collide with outgoing content. Content decelerates into the scene. - :::column-end::: - :::column::: - ![direction forward in](images/forward-in.gif) - :::column-end::: -:::row-end::: -:::row::: - :::column::: -**Forward-Out** -Content exits quickly. Objects accelerate off screen. - :::column-end::: - :::column::: - ![direction forward out](images/forward-out.gif) - :::column-end::: -:::row-end::: -:::row::: - :::column::: -**Backward-In** -Same as Forward-In, but reversed. - :::column-end::: - :::column::: - ![Short video showing a circle entering from the right of the frame and stopping in the middle of the frame.](images/backward-in.gif) - :::column-end::: -:::row-end::: -:::row::: - :::column::: -**Backward-Out** -Same as Forward-Out, but reversed. - :::column-end::: - :::column::: - ![direction backward out](images/backward-out.gif) - :::column-end::: -:::row-end::: - -## Gravity - -Gravity makes your experiences feel more natural. Objects that move on the Z-axis and are not anchored to the scene by an onscreen affordance have the potential to be affected by gravity.​ As an object breaks free of the scene and before it reaches escape velocity, gravity pulls down on the object, creating a more natural curve of the object trajectory as it moves. - -Gravity typically manifests when an object must jump from one scene to another.​ Because of this, connected animation uses the concept of gravity. - -Here, an element in the top row of the grid is affected by gravity, causing it to drop slightly as it leaves its place and moves to the front. - -![Short video showing a rectangle element leaving the top row of a grid, dropping lightly, and then zooming to the front of the window.](images/continuity-photos.gif) - -## Related articles - -- [Motion overview](../signature-experiences/motion.md) -- [Timing and easing](timing-and-easing.md) diff --git a/hub/apps/design/motion/images/150ms-alt.gif b/hub/apps/design/motion/images/150ms-alt.gif deleted file mode 100644 index 13ed73b203..0000000000 Binary files a/hub/apps/design/motion/images/150ms-alt.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/300ms.gif b/hub/apps/design/motion/images/300ms.gif deleted file mode 100644 index 0ee7b53fea..0000000000 Binary files a/hub/apps/design/motion/images/300ms.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/500ms.gif b/hub/apps/design/motion/images/500ms.gif deleted file mode 100644 index 3c55557db1..0000000000 Binary files a/hub/apps/design/motion/images/500ms.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/Contextual.gif b/hub/apps/design/motion/images/Contextual.gif deleted file mode 100644 index 3b5413dde1..0000000000 Binary files a/hub/apps/design/motion/images/Contextual.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/Continuous3.gif b/hub/apps/design/motion/images/Continuous3.gif deleted file mode 100644 index ec2b4312ad..0000000000 Binary files a/hub/apps/design/motion/images/Continuous3.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/Direction.gif b/hub/apps/design/motion/images/Direction.gif deleted file mode 100644 index 709543a2b7..0000000000 Binary files a/hub/apps/design/motion/images/Direction.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/Functional.gif b/hub/apps/design/motion/images/Functional.gif deleted file mode 100644 index c1f888cfb3..0000000000 Binary files a/hub/apps/design/motion/images/Functional.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/Physical.gif b/hub/apps/design/motion/images/Physical.gif deleted file mode 100644 index d89903e65f..0000000000 Binary files a/hub/apps/design/motion/images/Physical.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/ProgressBar.psd b/hub/apps/design/motion/images/ProgressBar.psd deleted file mode 100644 index 0b6c1db20a..0000000000 Binary files a/hub/apps/design/motion/images/ProgressBar.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/RadioButton.psd b/hub/apps/design/motion/images/RadioButton.psd deleted file mode 100644 index a671004680..0000000000 Binary files a/hub/apps/design/motion/images/RadioButton.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/Scrollbar.psd b/hub/apps/design/motion/images/Scrollbar.psd deleted file mode 100644 index b89582eaae..0000000000 Binary files a/hub/apps/design/motion/images/Scrollbar.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/Slider.psd b/hub/apps/design/motion/images/Slider.psd deleted file mode 100644 index ca9b62f735..0000000000 Binary files a/hub/apps/design/motion/images/Slider.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/TextButtons.psd b/hub/apps/design/motion/images/TextButtons.psd deleted file mode 100644 index da2c30319e..0000000000 Binary files a/hub/apps/design/motion/images/TextButtons.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/TextInput.psd b/hub/apps/design/motion/images/TextInput.psd deleted file mode 100644 index b0e65ac9af..0000000000 Binary files a/hub/apps/design/motion/images/TextInput.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/ToggleSwitch.psd b/hub/apps/design/motion/images/ToggleSwitch.psd deleted file mode 100644 index 43ccbc2c87..0000000000 Binary files a/hub/apps/design/motion/images/ToggleSwitch.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/accel-ease.gif b/hub/apps/design/motion/images/accel-ease.gif deleted file mode 100644 index 6991fb114b..0000000000 Binary files a/hub/apps/design/motion/images/accel-ease.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/alignment.psd b/hub/apps/design/motion/images/alignment.psd deleted file mode 100644 index a614d8bbf4..0000000000 Binary files a/hub/apps/design/motion/images/alignment.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/animation-child-rectangles.gif b/hub/apps/design/motion/images/animation-child-rectangles.gif deleted file mode 100644 index 62b9d23ae0..0000000000 Binary files a/hub/apps/design/motion/images/animation-child-rectangles.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/backward-in.gif b/hub/apps/design/motion/images/backward-in.gif deleted file mode 100644 index 326885e2fa..0000000000 Binary files a/hub/apps/design/motion/images/backward-in.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/backward-out.gif b/hub/apps/design/motion/images/backward-out.gif deleted file mode 100644 index ef074ca64e..0000000000 Binary files a/hub/apps/design/motion/images/backward-out.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/character-count.psd b/hub/apps/design/motion/images/character-count.psd deleted file mode 100644 index ea13de93e0..0000000000 Binary files a/hub/apps/design/motion/images/character-count.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/clipping.psd b/hub/apps/design/motion/images/clipping.psd deleted file mode 100644 index 54a89f182c..0000000000 Binary files a/hub/apps/design/motion/images/clipping.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/connected-animations/coordinated_example.gif b/hub/apps/design/motion/images/connected-animations/coordinated_example.gif deleted file mode 100644 index 701fb94597..0000000000 Binary files a/hub/apps/design/motion/images/connected-animations/coordinated_example.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/connected-animations/example.gif b/hub/apps/design/motion/images/connected-animations/example.gif deleted file mode 100644 index e225aca369..0000000000 Binary files a/hub/apps/design/motion/images/connected-animations/example.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/continuity-photos.gif b/hub/apps/design/motion/images/continuity-photos.gif deleted file mode 100644 index fa7b9540ba..0000000000 Binary files a/hub/apps/design/motion/images/continuity-photos.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/control.gif b/hub/apps/design/motion/images/control.gif deleted file mode 100644 index 98c770c9cf..0000000000 Binary files a/hub/apps/design/motion/images/control.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/decel-ease.gif b/hub/apps/design/motion/images/decel-ease.gif deleted file mode 100644 index a9418213be..0000000000 Binary files a/hub/apps/design/motion/images/decel-ease.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/desktop.ini b/hub/apps/design/motion/images/desktop.ini deleted file mode 100644 index 547ff62635..0000000000 --- a/hub/apps/design/motion/images/desktop.ini +++ /dev/null @@ -1,3 +0,0 @@ -[LocalizedFileNames] -NestedListContent.png=@NestedListContent.png,0 -RevealExamples_Collage.png=@RevealExamples_Collage.png,0 diff --git a/hub/apps/design/motion/images/drill.gif b/hub/apps/design/motion/images/drill.gif deleted file mode 100644 index df85bf0c97..0000000000 Binary files a/hub/apps/design/motion/images/drill.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/easing.gif b/hub/apps/design/motion/images/easing.gif deleted file mode 100644 index d1498586f6..0000000000 Binary files a/hub/apps/design/motion/images/easing.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/edgevsreposition.png b/hub/apps/design/motion/images/edgevsreposition.png deleted file mode 100644 index 2abdcc1918..0000000000 Binary files a/hub/apps/design/motion/images/edgevsreposition.png and /dev/null differ diff --git a/hub/apps/design/motion/images/feature.psd b/hub/apps/design/motion/images/feature.psd deleted file mode 100644 index 72a0132d10..0000000000 Binary files a/hub/apps/design/motion/images/feature.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/forward-in.gif b/hub/apps/design/motion/images/forward-in.gif deleted file mode 100644 index 59839ead03..0000000000 Binary files a/hub/apps/design/motion/images/forward-in.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/forward-out.gif b/hub/apps/design/motion/images/forward-out.gif deleted file mode 100644 index 4a84e6ea7b..0000000000 Binary files a/hub/apps/design/motion/images/forward-out.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/hanging-text-alignment.psd b/hub/apps/design/motion/images/hanging-text-alignment.psd deleted file mode 100644 index 871a9ed6a6..0000000000 Binary files a/hub/apps/design/motion/images/hanging-text-alignment.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/kerning-tracking.psd b/hub/apps/design/motion/images/kerning-tracking.psd deleted file mode 100644 index 09855d18a3..0000000000 Binary files a/hub/apps/design/motion/images/kerning-tracking.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/line-endings.psd b/hub/apps/design/motion/images/line-endings.psd deleted file mode 100644 index ce991af35e..0000000000 Binary files a/hub/apps/design/motion/images/line-endings.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/line-height-stacking.psd b/hub/apps/design/motion/images/line-height-stacking.psd deleted file mode 100644 index f7478145c9..0000000000 Binary files a/hub/apps/design/motion/images/line-height-stacking.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/line-spacing.psd b/hub/apps/design/motion/images/line-spacing.psd deleted file mode 100644 index 7673f594eb..0000000000 Binary files a/hub/apps/design/motion/images/line-spacing.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/news_and_weather_patterns_16_progress_bar.psd b/hub/apps/design/motion/images/news_and_weather_patterns_16_progress_bar.psd deleted file mode 100644 index 2dfc23e52c..0000000000 Binary files a/hub/apps/design/motion/images/news_and_weather_patterns_16_progress_bar.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/page-refresh.gif b/hub/apps/design/motion/images/page-refresh.gif deleted file mode 100644 index 8247c1f901..0000000000 Binary files a/hub/apps/design/motion/images/page-refresh.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/paragraphs.psd b/hub/apps/design/motion/images/paragraphs.psd deleted file mode 100644 index d376b260ff..0000000000 Binary files a/hub/apps/design/motion/images/paragraphs.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/parallax-v2.gif b/hub/apps/design/motion/images/parallax-v2.gif deleted file mode 100644 index 95b1d64263..0000000000 Binary files a/hub/apps/design/motion/images/parallax-v2.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/productivity_6_list_layout_new.psd b/hub/apps/design/motion/images/productivity_6_list_layout_new.psd deleted file mode 100644 index ac5748576d..0000000000 Binary files a/hub/apps/design/motion/images/productivity_6_list_layout_new.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/progress_changing.psd b/hub/apps/design/motion/images/progress_changing.psd deleted file mode 100644 index 5d355f1a58..0000000000 Binary files a/hub/apps/design/motion/images/progress_changing.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/radiobutton_vs_dropdownlist.psd b/hub/apps/design/motion/images/radiobutton_vs_dropdownlist.psd deleted file mode 100644 index 91560a9a15..0000000000 Binary files a/hub/apps/design/motion/images/radiobutton_vs_dropdownlist.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/segoe-sample.psd b/hub/apps/design/motion/images/segoe-sample.psd deleted file mode 100644 index 6ae94fec7c..0000000000 Binary files a/hub/apps/design/motion/images/segoe-sample.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/shades.psd b/hub/apps/design/motion/images/shades.psd deleted file mode 100644 index 97c6a02cee..0000000000 Binary files a/hub/apps/design/motion/images/shades.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/spellcheck.psd b/hub/apps/design/motion/images/spellcheck.psd deleted file mode 100644 index 089345d2cf..0000000000 Binary files a/hub/apps/design/motion/images/spellcheck.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/standard-ease.gif b/hub/apps/design/motion/images/standard-ease.gif deleted file mode 100644 index 23e3f54173..0000000000 Binary files a/hub/apps/design/motion/images/standard-ease.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/time.gif b/hub/apps/design/motion/images/time.gif deleted file mode 100644 index 3b46a065a6..0000000000 Binary files a/hub/apps/design/motion/images/time.gif and /dev/null differ diff --git a/hub/apps/design/motion/images/type-ramp.psd b/hub/apps/design/motion/images/type-ramp.psd deleted file mode 100644 index 3d8265df1c..0000000000 Binary files a/hub/apps/design/motion/images/type-ramp.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/weights.psd b/hub/apps/design/motion/images/weights.psd deleted file mode 100644 index 73e49b048e..0000000000 Binary files a/hub/apps/design/motion/images/weights.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/word-letter.psd b/hub/apps/design/motion/images/word-letter.psd deleted file mode 100644 index 1a0b218cea..0000000000 Binary files a/hub/apps/design/motion/images/word-letter.psd and /dev/null differ diff --git a/hub/apps/design/motion/images/xaml-controls-gallery-app-icon.png b/hub/apps/design/motion/images/xaml-controls-gallery-app-icon.png deleted file mode 100644 index d9651d1ae7..0000000000 Binary files a/hub/apps/design/motion/images/xaml-controls-gallery-app-icon.png and /dev/null differ diff --git a/hub/apps/design/motion/key-frame-and-easing-function-animations.md b/hub/apps/design/motion/key-frame-and-easing-function-animations.md deleted file mode 100644 index a365e16122..0000000000 --- a/hub/apps/design/motion/key-frame-and-easing-function-animations.md +++ /dev/null @@ -1,269 +0,0 @@ ---- -title: Key-frame animations and easing function animations -ms.assetid: D8AF24CD-F4C2-4562-AFD7-25010955D677 -description: Linear key-frame animations, key-frame animations with a KeySpline value, or easing functions are three different techniques for approximately the same scenario. -ms.date: 02/08/2017 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Key-frame animations and easing function animations - - - -Linear key-frame animations, key-frame animations with a **KeySpline** value, or easing functions are three different techniques for approximately the same scenario: creating a storyboarded animation that's a bit more complex, and that uses a nonlinear animation behavior from a starting state to an end state. - -## Prerequisites - -Make sure you've read the [Storyboarded animations](storyboarded-animations.md) topic. This topic builds on the animation concepts that were explained in [Storyboarded animations](storyboarded-animations.md) and won't go over them again. For example, [Storyboarded animations](storyboarded-animations.md) describes how to target animations, storyboards as resources, the [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) property values such as [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration), [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior), and so on. - -## Animating using key-frame animations - -Key-frame animations permit more than one target value that is reached at a point along the animation timeline. In other words, each key frame can specify a different intermediate value, and the last key frame reached is the final animation value. By specifying multiple values to animate, you can make more complex animations. Key-frame animations also enable different interpolation logic, which are each implemented as a different **KeyFrame** subclass per animation type. Specifically, each key-frame animation type has a **Discrete**, **Linear**, **Spline** and **Easing** variation of its **KeyFrame** class for specifying its key frames. For example, to specify an animation that targets a [**Double**](/dotnet/api/system.double) and uses key frames, you could declare key frames with [**DiscreteDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteDoubleKeyFrame), [**LinearDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.LinearDoubleKeyFrame), [**SplineDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.SplineDoubleKeyFrame), and [**EasingDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.EasingDoubleKeyFrame). You can use any and all of these types within a single **KeyFrames** collection, to change the interpolation each time a new key frame is reached. - -For interpolation behavior, each key frame controls the interpolation until its **KeyTime** time is reached. Its **Value** is reached at that time also. If there are more key frames beyond, the value then becomes the starting value for the next key frame in a sequence. - -At the start of the animation, if no key frame with **KeyTime** of "0:0:0" exists, the starting value is whatever the non-animated value of the property is. This is similar to how a **From**/**To**/**By** animation acts if there is no **From**. - -The duration of a key-frame animation is implicitly the duration equal to the highest **KeyTime** value set in any of its key frames. You can set an explicit [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) if you want, but be careful it's not shorter than a **KeyTime** in your own key frames or you'll cut off part of the animation. - -In addition to [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration), you can set all the [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) based properties on a key-frame animation, like you can with a **From**/**To**/**By** animation, because the key-frame animation classes also derive from **Timeline**. These are: - -- [**AutoReverse**](/uwp/api/windows.ui.xaml.media.animation.timeline.autoreverse): once the last key frame is reached, the frames are repeated in reverse order from the end. This doubles the apparent duration of the animation. -- [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime): delays the start of the animation. The timeline for the **KeyTime** values in the frames doesn't start counting until **BeginTime** is reached, so there's no risk of cutting off frames -- [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior): controls what happens when the last key frame is reached. **FillBehavior** has no effect on any intermediate key frames. -- [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehaviorproperty): - - If set to **Forever**, then the key frames and their timeline repeat infinitely. - - If set to an iteration count, the timeline repeats that many times. - - If set to a [**Duration**](/uwp/api/Windows.UI.Xaml.Duration), the timeline repeats until that time is reached. This might truncate the animation part way through the key frame sequence, if it's not an integer factor of the timeline's implicit duration. -- [**SpeedRatio**](/uwp/api/windows.ui.xaml.media.animation.timeline.speedratioproperty) (not commonly used) - -### Linear key frames - -Linear key frames result in a simple linear interpolation of the value until the frame's **KeyTime** is reached. This interpolation behavior is the most similar to the simpler **From**/**To**/**By** animations described in the [Storyboarded animations](storyboarded-animations.md) topic. - -Here's how to use a key-frame animation to scale the render height of a rectangle, using linear key frames. This example runs an animation where the height of the rectangle increases slightly and linearly for the first 4 seconds, then scales rapidly for the last second until the rectangle is double the starting height. - -```xml - - - - - - - - - - - -``` - -### Discrete key frames - -Discrete key frames don't use any interpolation at all. When a **KeyTime** is reached, the new **Value** is simply applied. Depending on which UI property is being animated, this often produces an animation that appears to "jump". Be certain that this is the aesthetic behavior that you really want. You can minimize the apparent jumps by increasing the number of key frames you declare, but if a smooth animation is your goal, you might be better off using linear or spline key frames instead. - -> [!NOTE] -> Discrete key frames are the only way to animate a value that isn't of type [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), and [**Color**](/uwp/api/Windows.UI.Color), with a [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame). We'll discuss this in more detail later in this topic. - -### Spline key frames - -A spline key frame creates a variable transition between values according to the value of the **KeySpline** property. This property specifies the first and second control points of a Bezier curve, which describes the acceleration of the animation. Basically, a [**KeySpline**](/uwp/api/Windows.UI.Xaml.Media.Animation.KeySpline) defines a function-over-time relationship where the function-time graph is the shape of that Bezier curve. You typically specify a **KeySpline** value in a XAML shorthand attribute string that has four [**Double**](/dotnet/api/system.double) values separated by spaces or commas. These values are "X,Y" pairs for two control points of the Bezier curve. "X" is time and "Y" is the function modifier to the value. Each value should always be between 0 and 1 inclusive. Without control point modification to a **KeySpline**, the straight line from 0,0 to 1,1 is the representation of a function over time for a linear interpolation. Your control points change the shape of that curve and thus the behavior of the function over time for the spline animation. It's probably best to see this visually as a graph. You can run the [Silverlight key-spline visualizer sample](https://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=KeySplineExample) in a browser to see how the control points modify the curve and how a sample animation runs when using it as a **KeySpline** value. - -This next example shows three different key frames applied to an animation, with the last one being a key spline animation for a [**Double**](/dotnet/api/system.double) value ([**SplineDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.SplineDoubleKeyFrame)). Note the string "0.6,0.0 0.9,0.00" applied for **KeySpline**. This produces a curve where the animation appears to run slowly at first but then rapidly reaches the value just before the **KeyTime** is reached. - -```xml - - - - - - - - - - - - - - -``` - -### Easing key frames - -An easing key frame is a key frame where interpolation is being applied, and the function over time of the interpolation is controlled by several pre-defined mathematical formulas. You can actually produce much the same result with a spline key frame as you can with some of the easing function types, but there are also some easing functions, such as [**BackEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BackEase), that you can't reproduce with a spline. - -To apply an easing function to an easing key frame, you set the **EasingFunction** property as a property element in XAML for that key frame. For the value, specify an object element for one of the easing function types. - -This example applies a [**CubicEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CubicEase) and then a [**BounceEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BounceEase) as successive key frames to a [**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation) to create a bouncing effect. - -```xml - - - - - - - - - - - - - - - - - - -``` - -This is just one easing function example. We'll cover more in the next section. - -## Easing functions - -Easing functions allow you to apply custom mathematical formulas to your animations. Mathematical operations are often useful to produce animations that simulate real-world physics in a 2-D coordinate system. For example, you may want an object to realistically bounce or behave as though it were on a spring. You could use key frame or even **From**/**To**/**By** animations to approximate these effects but it would take a significant amount of work and the animation would be less accurate than using a mathematical formula. - -Easing functions can be applied to animations in three ways: - -- By using an easing keyframe in a keyframe animation, as described in the previous section. Use [**EasingColorKeyFrame.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.easingcolorkeyframe.easingfunction), [**EasingDoubleKeyFrame.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.easingdoublekeyframe.easingfunction), or [**EasingPointKeyFrame.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.easingpointkeyframe.easingfunction). -- By setting the **EasingFunction** property on one of the **From**/**To**/**By** animation types. Use [**ColorAnimation.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.coloranimation.easingfunction), [**DoubleAnimation.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.doubleanimation.easingfunction) or [**PointAnimation.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.pointanimation.easingfunction). -- By setting [**GeneratedEasingFunction**](/uwp/api/windows.ui.xaml.visualtransition.generatedeasingfunction) as part of a [**VisualTransition**](/uwp/api/Windows.UI.Xaml.VisualTransition). This is specific to defining visual states for controls; for more info, see [**GeneratedEasingFunction**](/uwp/api/windows.ui.xaml.visualtransition.generatedeasingfunction) or [Storyboards for visual states](/previous-versions/windows/apps/jj819808(v=win.10)). - -Here is a list of the easing functions: - -- [**BackEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BackEase): Retracts the motion of an animation slightly before it begins to animate in the path indicated. -- [**BounceEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BounceEase): Creates a bouncing effect. -- [**CircleEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CircleEase): Creates an animation that accelerates or decelerates using a circular function. -- [**CubicEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CubicEase): Creates an animation that accelerates or decelerates using the formula f(t) = t3. -- [**ElasticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.ElasticEase): Creates an animation that resembles a spring oscillating back and forth until it comes to rest. -- [**ExponentialEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.ExponentialEase): Creates an animation that accelerates or decelerates using an exponential formula. -- [**PowerEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.PowerEase): Creates an animation that accelerates or decelerates using the formula f(t) = tp where p is equal to the [**Power**](/uwp/api/windows.ui.xaml.media.animation.powerease.power) property. -- [**QuadraticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuadraticEase): Creates an animation that accelerates or decelerates using the formula f(t) = t2. -- [**QuarticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuarticEase): Creates an animation that accelerates or decelerates using the formula f(t) = t4. -- [**QuinticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuinticEase): Create an animation that accelerates or decelerates using the formula f(t) = t5. -- [**SineEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.SineEase): Creates an animation that accelerates or decelerates using a sine formula. - -Some of the easing functions have their own properties. For example, [**BounceEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BounceEase) has two properties [**Bounces**](/uwp/api/windows.ui.xaml.media.animation.bounceease.bounces) and [**Bounciness**](/uwp/api/windows.ui.xaml.media.animation.bounceease.bounciness) that modify the function-over-time behavior of that particular **BounceEase**. Other easing functions such as [**CubicEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CubicEase) don't have properties other than the [**EasingMode**](/uwp/api/windows.ui.xaml.media.animation.easingfunctionbase.easingmode) property that all easing functions share, and always produce the same function-over-time behavior. - -Some of these easing functions have a bit of overlap, depending on how you set properties on the easing functions that have properties. For example, [**QuadraticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuadraticEase) is exactly the same as a [**PowerEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.PowerEase) with [**Power**](/uwp/api/windows.ui.xaml.media.animation.powerease.power) equal to 2. And [**CircleEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CircleEase) is basically a default-value [**ExponentialEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.ExponentialEase). - -The [**BackEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BackEase) easing function is unique because it can change the value outside of the normal range as set by **From**/**To** or values of key frames. It starts the animation by changing the value in the opposite direction as would be expected from a normal **From**/**To** behavior, goes back to the **From** or starting value again, and then runs the animation as normal. - -In an earlier example, we showed how to declare an easing function for a key-frame animation. This next sample applies an easing function to a **From**/**To**/**By** animation. - -```xml - - - - - - - - - - - - -``` - -When an easing function is applied to a **From**/**To**/**By** animation, it's changing the function- over-time characteristics of how the value interpolates between the **From** and **To** values over the [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) of the animation. Without an easing function, that would be a linear interpolation. - -## Discrete object value animations - -One type of animation deserves special mention because it's the only way you can apply an animated value to properties that aren't of type [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), or [**Color**](/uwp/api/Windows.UI.Color). This is the key-frame animation [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames). Animating using [**Object**](/dotnet/api/system.object) values is different because there's no possibility of interpolating the values between the frames. When the frame's [**KeyTime**](/uwp/api/windows.ui.xaml.media.animation.objectkeyframe.keytime) is reached, the animated value is immediately set to the value specified in the key frame's **Value**. Because there's no interpolation, there's only one key frame you use in the **ObjectAnimationUsingKeyFrames** key frames collection: [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame). - -The [**Value**](/uwp/api/windows.ui.xaml.media.animation.objectkeyframe.value) of a [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame) is often set using property element syntax, because the object value you are trying to set often is not expressible as a string to fill **Value** in attribute syntax. You can still use attribute syntax if you use a reference such as [StaticResource](/windows/uwp/xaml-platform/staticresource-markup-extension). - -One place you'll see an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) used in the default templates is when a template property references a [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush) resource. These resources are [**SolidColorBrush**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush) objects, not just a [**Color**](/uwp/api/Windows.UI.Color) value, and they use resources that are defined as system themes ([**ThemeDictionaries**](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries)). They can be assigned directly to a **Brush**-type value such as [**TextBlock.Foreground**](/uwp/api/windows.ui.xaml.controls.textblock.foreground) and don't need to use indirect targeting. But because a **SolidColorBrush** is not [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), or **Color**, you have to use a **ObjectAnimationUsingKeyFrames** to use the resource. - -```xml - -``` - -You also might use [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) to animate properties that use an enumeration value. Here's another example from a named style that comes from the Windows Runtime default templates. Note how it sets the [**Visibility**](/uwp/api/windows.ui.xaml.uielement.visibility) property that takes a [**Visibility**](/uwp/api/Windows.UI.Xaml.Visibility) enumeration constant. In this case you can set the value using attribute syntax. You only need the unqualified constant name from an enumeration for setting a property with an enumeration value, for example "Collapsed". - -```xml - -``` - -You can use more than one [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame) for an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) frame set. This might be an interesting way to create a "slide show" animation by animating the value of [**Image.Source**](/uwp/api/windows.ui.xaml.controls.image.source), as an example scenario for where multiple object values might be useful. - - ## Related topics - -* [Property-path syntax](/windows/uwp/xaml-platform/property-path-syntax) -* [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview) -* [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) -* [**Storyboard.TargetProperty**](/uwp/api/windows.ui.xaml.media.animation.storyboard.targetpropertyproperty) diff --git a/hub/apps/design/motion/motion-dragdrop.md b/hub/apps/design/motion/motion-dragdrop.md deleted file mode 100644 index 8aca49ec61..0000000000 --- a/hub/apps/design/motion/motion-dragdrop.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -description: Use drag-and-drop animations when users move objects, such as moving an item within a list, or dropping an item on top of another. -title: Drag animations -ms.assetid: 6064755F-6E24-4901-A4FF-263F05F0DFD6 -label: Motion--Drag and drop -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Drag animations - - - - -Use drag-and-drop animations when users move objects, such as moving an item within a list, or dropping an item on top of another. - -> **Important APIs**: [**DragItemThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.dragitemthemeanimation) - - -## Do's and don'ts - - -**Drag start animation** - -- Use the drag start animation when the user begins to move an object. -- Include affected objects in the animation if and only if there are other objects that can be affected by the drag-and-drop operation. -- Use the drag end animation to complete any animation sequence that began with the drag start animation. This reverses the size change in the dragged object that was caused by the drag start animation. - -**Drag end animation** - -- Use the drag end animation when the user drops a dragged object. -- Use the drag end animation in combination with add and delete animations for lists. -- Include affected objects in the drag end animation if and only if you included those same affected objects in the drag start animation. -- Don't use the drag end animation if you have not first used the drag start animation. You need to use both animations to return objects to their original sizes after the drag sequence is complete. - -**Drag between enter animation** - -- Use the drag between enter animation when the user drags the drag source into a drop area where it can be dropped between two other objects. -- Choose a reasonable drop target area. This area should not be so small that it is difficult for the user to position the drag source for the drop. -- The recommended direction to move affected objects to show the drop area is directly apart from each other. Whether they move vertically or horizontally depends on the orientation of the affected objects to each other. -- Don't use the drag between enter animation if the drag source cannot be dropped in an area. The drag between enter animation tells the user that the drag source can be dropped between the affected objects. - -**Drag between leave animation** - -- Use the drag between leave animation when the user drags an object away from an area where it could have been dropped between two other objects. -- Don't use the drag between leave animation if you have not first used the drag between enter animation. - - -## Related articles - -**For developers** -* [Animations overview](./xaml-animation.md) -* [Animating drag-and-drop sequences](/previous-versions/windows/apps/jj649427(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**DragItemThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.dragitemthemeanimation) -* [**DropTargetItemThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.droptargetitemthemeanimation) -* [**DragOverThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.dragoverthemeanimation) - - -  diff --git a/hub/apps/design/motion/motion-edgebased.md b/hub/apps/design/motion/motion-edgebased.md deleted file mode 100644 index 530851c442..0000000000 --- a/hub/apps/design/motion/motion-edgebased.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -description: Edge-based animations show or hide UI that originates from the edge of the screen. -title: Edge-based UI animations -ms.assetid: 5A8F73B1-F4F6-424b-9EDF-A9766C5DEAE8 -label: Motion--edge-based UI -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Edge-based UI animations - - - - - -Edge-based animations show or hide UI that originates from the edge of the screen. The show and hide actions can be initiated either by the user or by the app. The UI can either overlay the app or be part of the main app surface. If the UI is part of the app surface, the rest of the app might need to be resized to accommodate it. - -> **Important APIs**: [**EdgeUIThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.EdgeUIThemeTransition) - - -## Do's and don'ts - - -- Use edge UI animations to show or hide a custom message or error bar that does not extend far into the screen. -- Use panel animations to show UI that slides a significant distance into the screen, such as a task pane or a custom soft keyboard. -- Slide the UI in from the same edge it will be attached to. -- Slide the UI out to the same edge it came from. -- If the contents of the app need to resize in response to the UI sliding in or out, use fade animations for the resize. - - If the UI is sliding in, use a fade animation after the edge UI or panel animation. - - If the UI is sliding out, use a fade animation at the same time as the edge UI or panel animation. -- Don't apply these animations to notifications. Notifications should not be housed within edge-based UI. -- Don't apply the edge UI or panel animations to any UI container or control that is not at the edge of the screen. These animations are used only for showing, resizing, and dismissing UI at the edges of the screen. To move other types of UI, use reposition animations. - - ![illustrates when to use edge ui or panel animations and when to use reposition.](images/edgevsreposition.png) - -## Related articles - - -**For developers** -* [Animations overview](./xaml-animation.md) -* [Animating edge-based UI](/previous-versions/windows/apps/jj649428(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**EdgeUIThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.EdgeUIThemeTransition) -* [**PaneThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PaneThemeTransition) -* [Animating fades](/previous-versions/windows/apps/jj649429(v=win.10)) -* [Animating repositions](/previous-versions/windows/apps/jj649434(v=win.10)) - -  - -  diff --git a/hub/apps/design/motion/motion-fade.md b/hub/apps/design/motion/motion-fade.md deleted file mode 100644 index 613282f176..0000000000 --- a/hub/apps/design/motion/motion-fade.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -description: Use fade animations to bring items into a view or to take items out of a view. The two common fade animations are fade-in and fade-out. -title: Fade animations -ms.assetid: 975E5EE3-EFBE-4159-8D10-3C94143DD07F -label: Motion--fades -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Fade animations - - - -Use fade animations to bring items into a view or to take items out of a view. The two common fade animations are fade-in and fade-out. - -> **Important APIs**: [**FadeInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation), [**FadeOutThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) - - -## Do's and don'ts - - -- When your app transitions between unrelated or text-heavy elements, use a fade-out followed by a fade-in. This allows the outgoing object to completely disappear before the incoming object is visible. -- Fade in the incoming element or elements on top of the outgoing elements if the size of the elements remains constant, and if you want the user to feel that they're looking at the same item. Once the fade-in is complete, the outgoing item can be removed. This is only a viable option when the outgoing item will be completely covered by the incoming item. -- Avoid fade animations to add or delete items in a list. Instead, use the list animations created for that purpose. -- Avoid fade animations to change the entire contents of a page. Instead, use the page transition animations created for that purpose. -- Fade-out is a subtle way to remove an element. -## Related articles - -* [Animations overview](./xaml-animation.md) -* [Animating fades](/previous-versions/windows/apps/jj649429(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**FadeInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) -* [**FadeOutThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) - -  - -  diff --git a/hub/apps/design/motion/motion-in-practice.md b/hub/apps/design/motion/motion-in-practice.md deleted file mode 100644 index 2cb908eeaa..0000000000 --- a/hub/apps/design/motion/motion-in-practice.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Motion in practice - animation in Windows apps -description: Learn how Fluent motion fundamentals like timing, easing, directionality, and gravity come together in your app. -label: Motion in practice -template: detail.hbs -ms.date: 09/18/2024 -ms.topic: how-to -doc-status: Published -ms.localizationpriority: medium -ms.custom: RS5 ---- -# Bringing it together - -Timing, easing, directionality, and gravity work together to form the foundation of Fluent motion. Each has to be considered in the context of the others, and applied appropriately in the context of your app. - -Here are 3 ways to apply Fluent motion fundamentals in your app. - -- **Implicit animation**
    -Automatic tween and timing between values in a parameter change to achieve very simple Fluent motion using the standardized values. -- **Built-in animation**
    -System components, such as common controls and shared motion, are "Fluent by default". Fundamentals have been applied in a manner consistent with their implied usage. -- **Custom animation following guidance recommendations**
    -There may be times when the system does not yet provide an exact motion solution for your scenario. In those cases, use the baseline fundamental recommendations as a starting point for your experiences. - -**_Transition example_** - -![functional animation](images/page-refresh.gif) - -:::row::: - :::column::: -Direction Forward Out:
    -Fade out: 150m; Easing: Default Accelerate -Direction Forward In:
    -Slide up 150px: 300ms; Easing: Default Decelerate - :::column-end::: - :::column::: -Direction Backward Out:
    -Slide down 150px: 150ms; Easing: Default Accelerate -Direction Backward In:
    -Fade in: 300ms; Easing: Default Decelerate - :::column-end::: -:::row-end::: - -**_Object example_** - - ![300ms motion](images/control.gif) - -:::row::: - :::column::: -Direction Expand:
    -Grow: 300ms; Easing: Standard - :::column-end::: - :::column::: -Direction Contract:
    -Grow: 150ms; Easing: Default Accelerate - :::column-end::: -:::row-end::: - -### Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see Implicit Transitions in action](winui3gallery://item/ImplicitTransition) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -## Implicit Animations - -Implicit animations are a simple way to achieve Fluent motion by automatically interpolating between the old and new values during a parameter change. - -You can implicitly animate changes to the following properties: - -- [UIElement](/uwp/api/windows.ui.xaml.uielement) - - **Opacity** - - **Rotation** - - **Scale** - - **Translation** - -- [Border](/uwp/api/windows.ui.xaml.controls.border), [ContentPresenter](/uwp/api/windows.ui.xaml.controls.contentpresenter), or [Panel](/uwp/api/windows.ui.xaml.controls.panel) - - **Background** - -Each property that can have changes implicitly animated has a corresponding _transition_ property. To animate the property, you assign a transition type to the corresponding _transition_ property. This table shows the _transition_ properties and the transition type to use for each one. - -| Animated property | Transition property | Implicit transition type | -| -- | -- | -- | -| [UIElement.Opacity](/uwp/api/windows.ui.xaml.uielement.opacity) | [OpacityTransition](/uwp/api/windows.ui.xaml.uielement.opacitytransition) | [ScalarTransition](/uwp/api/windows.ui.xaml.scalartransition) | -| [UIElement.Rotation](/uwp/api/windows.ui.xaml.uielement.rotation) | [RotationTransition](/uwp/api/windows.ui.xaml.uielement.rotationtransition) | [ScalarTransition](/uwp/api/windows.ui.xaml.scalartransition) | -| [UIElement.Scale](/uwp/api/windows.ui.xaml.uielement.scale) | [ScaleTransition](/uwp/api/windows.ui.xaml.uielement.scaletransition) | [Vector3Transition](/uwp/api/windows.ui.xaml.vector3transition) | -| [UIElement.Translation](/uwp/api/windows.ui.xaml.uielement.translation) | [TranslationTransition](/uwp/api/windows.ui.xaml.uielement.translationtransition) | [Vector3Transition](/uwp/api/windows.ui.xaml.vector3transition) | -| [Border.Background](/uwp/api/windows.ui.xaml.controls.border.background) | [BackgroundTransition](/uwp/api/windows.ui.xaml.controls.border.backgroundtransition) | [BrushTransition](/uwp/api/windows.ui.xaml.brushtransition) | -| [ContentPresenter.Background](/uwp/api/windows.ui.xaml.controls.contentpresenter.background) | [BackgroundTransition](/uwp/api/windows.ui.xaml.controls.contentpresenter.backgroundtransition) | [BrushTransition](/uwp/api/windows.ui.xaml.brushtransition) | -| [Panel.Background](/uwp/api/windows.ui.xaml.controls.panel.background) | [BackgroundTransition](/uwp/api/windows.ui.xaml.controls.panel.backgroundtransition) | [BrushTransition](/uwp/api/windows.ui.xaml.brushtransition) | - -This example shows how to use the Opacity property and transition to make a button fade in when the control is enabled and fade out when it's disabled. - -```xaml - -``` - -```csharp -public double OpaqueIfEnabled(bool IsEnabled) -{ - return IsEnabled ? 1.0 : 0.2; -} -``` - -## UWP and WinUI 2 - -[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)] - -> [!div class="checklist"] -> -> - **UWP APIs:** [Windows.UI.Xaml.Media.Animation Namespace](/uwp/api/windows.ui.xaml.media.animation), [Windows.UI.Xaml.Controls namespace](/uwp/api/windows.ui.xaml.controls.ratingcontrol) -> - **WinUI 2 Apis:** [Microsoft.UI.Xaml.Controls namespace](/windows/winui/api/microsoft.ui.xaml.controls) -> - [Open the WinUI 2 Gallery app and see Implicit Transitions in action](winui2gallery://item/ImplicitTransition). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)] - -Implicit animations require Windows 10, version 1809 ([SDK 17763](https://developer.microsoft.com/windows/downloads/windows-10-sdk)) or later. - -## Related articles - -- [Motion overview](index.md) -- [Timing and easing](timing-and-easing.md) -- [Directionality and gravity](directionality-and-gravity.md) diff --git a/hub/apps/design/motion/motion-list.md b/hub/apps/design/motion/motion-list.md deleted file mode 100644 index bda5a03429..0000000000 --- a/hub/apps/design/motion/motion-list.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: List animations let you insert or remove single or multiple items from a collection, such as a photo album or a list of search results. -title: Add and delete animations -ms.assetid: A85006AE-4992-457a-B514-500B8BEF5DC8 -label: Motion--add and delete animations -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Add and delete animations - - - -List animations let you insert or remove single or multiple items from a collection, such as a photo album or a list of search results. - -> **Important APIs**: [**AddDeleteThemeTransition class**](/uwp/api/windows.ui.xaml.media.animation.adddeletethemetransition) - - -## Do's and don'ts - - -- Use list animations to add a single new item to an existing set of items. For example, use them when a new email arrives or when a new photo is imported into an existing set. -- Use list animations to add several items to a set at one time. For example, use them when you import a new set of photos to an existing collection. The addition or deletion of multiple items should happen at the same time, with no delay between the action on the individual objects. -- Use add and delete list animations as a pair. Whenever you use one of these animations, use the corresponding animation for the opposite action. -- Use list animations with a list of items to which you can add or delete one element or group of elements at once. -- Don't use list animations to display or remove a container. These animations are for members of a collection or set that is already being displayed. Use pop-up animations to show or hide a transient container on top of the app surface. Use content transition animations to display or replace a container that is part of the app surface. -- Don't use list animations on an entire set of items. Use the content transition animations to add or remove an entire collection within your container. - - - -## Related articles - -* [Animations overview](./xaml-animation.md) -* [Animating list additions and deletions](/previous-versions/windows/apps/jj649430(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**AddDeleteThemeTransition class**](/uwp/api/windows.ui.xaml.media.animation.adddeletethemetransition) - -  - -  diff --git a/hub/apps/design/motion/motion-pointer.md b/hub/apps/design/motion/motion-pointer.md deleted file mode 100644 index 45fc5dec6b..0000000000 --- a/hub/apps/design/motion/motion-pointer.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -description: Use pointer animations to provide users with visual feedback when the user taps on an item. -title: Pointer click animations -ms.assetid: EEB10A2C-629A-4705-8468-4D019D74DDFF -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Pointer click animations - - - -Use pointer animations to provide users with visual feedback when the user taps on an item. The pointer down animation slightly shrinks and tilts the pressed item, and plays when an item is first tapped. The pointer up animation, which restores the item to its original position, is played when the user releases the pointer. - - -> **Important APIs**: [**PointerUpThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerUpThemeAnimation), [**PointerDownThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerDownThemeAnimation) - - -## Do's and don'ts - -- When you use a pointer up animation, immediately trigger the animation when the user releases the pointer. This provides instant feedback to the user that their action has been recognized, even if the action triggered by the tap (such as navigating to a new page) is slower to respond. - -## Related articles - -* [Animations overview](./xaml-animation.md) -* [Animating pointer clicks](/previous-versions/windows/apps/jj649432(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**PointerUpThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerUpThemeAnimation) -* [**PointerDownThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerDownThemeAnimation) - -  - -  diff --git a/hub/apps/design/motion/motion-popup-animations.md b/hub/apps/design/motion/motion-popup-animations.md deleted file mode 100644 index 078b4e67c7..0000000000 --- a/hub/apps/design/motion/motion-popup-animations.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -description: Use pop-up animations to show and hide pop-up UI for flyouts or custom pop-up UI elements. Pop-up elements are containers that appear over the app's content and are dismissed if the user taps or clicks outside of the pop-up element. -title: Pop-up UI animations -ms.assetid: 4E9025CE-FC90-4d4c-9DE6-EC6B6F2AD9DF -label: Motion--Pop-up animations -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Pop-up UI animations - - - -Use pop-up animations to show and hide pop-up UI for flyouts or custom pop-up UI elements. Pop-up elements are containers that appear over the app's content and are dismissed if the user taps or clicks outside of the pop-up element. - -> **Important APIs**: [**PopInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopInThemeAnimation), [**PopupThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopupThemeTransition) - - -## Do's and don'ts - - -- Use pop-up animations to show or hide custom pop-up UI elements that aren't a part of the app page itself. The common controls provided by Windows already have these animations built in. -- Don't use pop-up animations for tooltips or dialogs. -- Don't use pop-up animations to show or hide UI within the main content of your app; only use pop-up animations to show or hide a pop-up container that displays on top of the main app content. - -## Related articles - -* [Animations overview](./xaml-animation.md) -* [Animating pop-up UI](/previous-versions/windows/apps/jj649433(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**PopInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopInThemeAnimation) -* [**PopOutThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopOutThemeAnimation) -* [**PopupThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopupThemeTransition) - -  - -  diff --git a/hub/apps/design/motion/motion-reposition.md b/hub/apps/design/motion/motion-reposition.md deleted file mode 100644 index ff01601b24..0000000000 --- a/hub/apps/design/motion/motion-reposition.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -description: Use the reposition animation to move an element or elements into a new position. -title: Reposition animations -ms.assetid: 25D1EE31-5C25-4F21-B34C-FBD8FB1C8FFF -label: Motion--Reposition -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Reposition animations - - - -Use the reposition animation to move an element or elements into a new position. - -> **Important APIs**: [**RepositionThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeAnimation), [**RepositionThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeTransition) - -## Do's and don'ts - - -- If you're showing or hiding edge-based UI, use [edge-based UI animations](motion-edgebased.md). Edge-based UI is an element or container that is anchored at one edge of the screen. - - -## Related articles - -* [Animations overview](./xaml-animation.md) -* [Animating repositions](/previous-versions/windows/apps/jj649434(v=win.10)) -* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10)) -* [**RepositionThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeAnimation) -* [**RepositionThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeTransition) - - -  diff --git a/hub/apps/design/motion/page-transitions.md b/hub/apps/design/motion/page-transitions.md deleted file mode 100644 index abbffa5abb..0000000000 --- a/hub/apps/design/motion/page-transitions.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Page transitions -description: Learn how to use Universal Windows Platform (UWP) page transitions to give users feedback about the relationship between pages in your app. -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: how-to -keywords: windows 10, uwp -pm-contact: stmoy -ms.localizationpriority: medium -ms.custom: RS5 ---- -# Page transitions - -Page transitions navigate users between pages in an app, providing feedback as the relationship between pages. Page transitions help users understand if they are at the top of a navigation hierarchy, moving between sibling pages, or navigating deeper into the page hierarchy. - -Two different animations are provided for navigation between pages in an app, *Page refresh* and *Drill*, and are represented by subclasses of [**NavigationTransitionInfo**](/uwp/api/windows.ui.xaml.media.animation.navigationtransitioninfo). - -## Examples - - - - - - -
    WinUI 2 Gallery -
    WinUI Gallery -

    If you have the WinUI 2 Gallery app installed, click here to open the app and see Page Transitions in action.

    - -
    - -## Page refresh - -Page refresh is a combination of a slide up animation and a fade in animation for the incoming content. Use page refresh when the user is taken to the top of a navigational stack, such as navigating between tabs or left-nav items. - -The desired feeling is that the user has started over. - -![page refresh animation](images/page-refresh.gif) - -The page refresh animation is represented by the [**EntranceNavigationTransitionInfoClass**](/uwp/api/windows.ui.xaml.media.animation.entrancenavigationtransitioninfo). - -```csharp -// Explicitly play the page refresh animation -myFrame.Navigate(typeof(Page2), null, new EntranceNavigationTransitionInfo()); - -``` - -**Note**: A [**Frame**](/uwp/api/windows.ui.xaml.controls.frame) automatically uses [**NavigationThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.navigationthemetransition) to animate navigation between two pages. By default, the animation is page refresh. - -## Drill - -Use drill when users navigate deeper into an app, such as displaying more information after selecting an item. - -The desired feeling is that the user has gone deeper into the app. - -![drill animation](images/drill.gif) - -The drill animation is represented by the [**DrillInNavigationTransitionInfo**](/uwp/api/windows.ui.xaml.media.animation.drillinnavigationtransitioninfo) class. - -```csharp -// Play the drill in animation -myFrame.Navigate(typeof(Page2), null, new DrillInNavigationTransitionInfo()); -``` - -## Horizontal slide - -Use horizontal slide to show that sibling pages appear next to each other. The [NavigationView](../controls/navigationview.md) control automatically uses this animation for top nav, but if you are building your own horizontal navigation experience, then you can implement horizontal slide with SlideNavigationTransitionInfo. - -The desired feeling is that the user is navigating between pages that are next to each other. - -```csharp -// Navigate to the right, ie. from LeftPage to RightPage -myFrame.Navigate(typeof(RightPage), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight } ); - -// Navigate to the left, ie. from RightPage to LeftPage -myFrame.Navigate(typeof(LeftPage), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromLeft } ); -``` - -## Suppress - -To avoid playing any animation during navigation, use [**SuppressNavigationTransitionInfo**](/uwp/api/windows.ui.xaml.media.animation.suppressnavigationtransitioninfo) in the place of other **NavigationTransitionInfo** subtypes. - -```csharp -// Suppress the default animation -myFrame.Navigate(typeof(Page2), null, new SuppressNavigationTransitionInfo()); -``` - -Suppressing the animation is useful if you are building your own transition using [Connected Animations](connected-animation.md) or implicit show/hide animations. - -## Backwards navigation - -You can use `Frame.GoBack(NavigationTransitionInfo)` to play a specific transition when navigating backwards. - -This can be useful when you modify navigation behavior dynamically based on screen size; for example, in a responsive list/detail scenario. - -## Related topics - -- [Navigate between two pages](../basics/navigate-between-two-pages.md) -- [Motion in UWP apps](index.md) diff --git a/hub/apps/design/motion/parallax.md b/hub/apps/design/motion/parallax.md deleted file mode 100644 index f9fc87f146..0000000000 --- a/hub/apps/design/motion/parallax.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Use parallax to add depth and movement to your app. -description: Learn how to use the ParallaxView control to create a visual effect where items closer to the viewer move faster than items in the background. -ms.assetid: -label: Parallax View -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: article -doc-status: Published -ms.localizationpriority: medium ---- -# Parallax - -Parallax is a visual effect where items closer to the viewer move faster than items in the background. Parallax creates a feeling of depth, perspective, and movement. In a UWP app, you can use the ParallaxView control to create a parallax effect. - -> **WinUI APIs:** [ParallaxView class](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview), [VerticalShift property](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview.VerticalShift), [HorizontalShift property](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview.HorizontalShift) -> -> **Platform APIs**: [ParallaxView class](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview), [VerticalShift property](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.VerticalShift), [HorizontalShift property](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.HorizontalShift) - -## Examples - - - - - - -
    WinUI 2 Gallery -
    WinUI Gallery -

    If you have the WinUI 2 Gallery app installed, click here to open the app and see the ParallaxView in action.

    - -
    - -## Parallax and the Fluent Design System - - The Fluent Design System helps you create modern, bold UI that incorporates light, depth, motion, material, and scale. Parallax is a Fluent Design System component that adds motion, depth, and scale to your app. To learn more, see the [Fluent Design overview](../index.md). - -## How it works in a user interface - -In a UI, you can create a parallax effect by moving different objects at different rates when the UI scrolls or pans. To demonstrate, let's look at two layers of content, a list and a background image. The list is placed on top of the background image which already gives the illusion that the list might be closer to the viewer. Now, to achieve the parallax effect, we want the object closest to us to travel "faster" than the object that is farther away. As the user scrolls the interface, the list moves at a faster rate than the background image, which creates the illusion of depth. - - ![An example of parallax with a list and background image](images/parallax-v2.gif) - - -## Using the ParallaxView control to create a parallax effect - -To create a parallax effect, you use the [ParallaxView](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview) control. This control ties the scroll position of a foreground element, such as a list, to a background element, such as an image. As you scroll through the foreground element, it animates the background element to create a parallax effect. - -To use the ParallaxView control, you provide a Source element, a background element, and set the [VerticalShift](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.VerticalShift) (for vertical scrolling) and/or [HorizontalShift](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.HorizontalShift) (for horizontal scrolling) properties to a value greater than zero. -* The Source property takes a reference to the foreground element. For the parallax effect to occur, the foreground should be a [ScrollViewer](/uwp/api/Windows.UI.Xaml.Controls.ScrollViewer) or an element that contains a ScrollViewer, such as a [ListView](/uwp/api/windows.ui.xaml.controls.listview) or a [RichTextBox](/uwp/api/Windows.UI.Xaml.Controls.RichEditBox). - -* To set the background element, you add that element as a child of the ParallaxView control. The background element can be any [UIElement](/uwp/api/windows.ui.xaml.uielement), such as an [Image](/uwp/api/Windows.UI.Xaml.Controls.Image) or a panel that contains additional UI elements. - -To create a parallax effect, the ParallaxView must be behind the foreground element. The [Grid](/uwp/api/windows.ui.xaml.controls.grid) and [Canvas](/uwp/api/windows.ui.xaml.controls.canvas) panels let you layer items on top of each other, so they work well with the ParallaxView control. - -This example creates a parallax effect for a list: - -```xaml - - - - - - - - - - Item 1 - Item 2 - Item 3 - Item 4 - Item 5 - Item 6 - Item 7 - Item 8 - Item 9 - Item 10 - Item 11 - Item 13 - Item 14 - Item 15 - Item 16 - Item 17 - Item 18 - Item 19 - Item 20 - Item 21 - - -``` - -The ParallaxView automatically adjusts the size of the image so it works for the parallax operation so you don't have to worry about the image scrolling out of view. - -## Customizing the parallax effect - -The VerticalShift and HorizontalShift properties let you control degree of the parallax effect. - -* The VerticalShift property specifies how far we want the background to vertically shift during the entire parallax operation. A value of 0 means the background doesn't move at all. -* The HorizontalShift property specifies how far we want the background to horizontally shift during the entire parallax operation. A value of 0 means the background doesn't move at all. - -Larger values create a more dramatic effect. - -For the complete list of ways to customize parallax, see the ParallaxView class. - -## Do's and don'ts - -- Use parallax in lists with a background image -- Consider using parallax in ListViewItems when ListViewItems contain an image -- Don't use it everywhere, overuse can diminish its impact - -## Related articles - -- [ParallaxView class](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview) -- [Fluent Design for UWP](../index.md) -- [Science in the System: Fluent Design and Depth](https://medium.com/microsoft-design/science-in-the-system-fluent-design-and-depth-fb6d0f23a53f) \ No newline at end of file diff --git a/hub/apps/design/motion/storyboarded-animations.md b/hub/apps/design/motion/storyboarded-animations.md deleted file mode 100644 index 62127398ae..0000000000 --- a/hub/apps/design/motion/storyboarded-animations.md +++ /dev/null @@ -1,340 +0,0 @@ ---- -ms.assetid: 0CBCEEA0-2B0E-44A1-A09A-F7A939632F3A -title: Storyboarded animations -description: Learn how to use storyboarded animations to change the value of a dependency property as a function of time. -ms.date: 07/13/2018 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Storyboarded animations - -Storyboarded animations are not just animations in the visual sense. A storyboarded animation is a way to change the value of a dependency property as a function of time. One of the main reasons you might need a storyboarded animation that's not from the animation library is to define the visual state for a control, as part of a control template or page definition. - -## Differences with Silverlight and WPF - -If you are familiar with Microsoft Silverlight or Windows Presentation Foundation (WPF), read this section; otherwise, you can skip it. - -In general, creating storyboarded animations in a Windows Runtime app is like Silverlight or WPF. But there are a number of important differences: - -- Storyboarded animations are not the only way to visually animate a UI, nor are they necessarily the easiest way for app developers to do so. Rather than using storyboarded animations it's often a better design practice to use theme animations and transition animations. These can quickly create recommended UI animations without getting into the intricacies of animation property targeting. For more info see [Animations overview](xaml-animation.md). -- In the Windows Runtime, many XAML controls include theme animations and transition animations as part of their built-in behavior. For the most part, WPF and Silverlight controls didn't have a default animation behavior. -- Not all custom animations you create can run by default in a Windows Runtime app, if the animation system determines that the animation might cause bad performance in your UI. Animations where the system determines there could be a performance impact are called *dependent animations*. It's dependent because the clocking of your animation is directly working against the UI thread, which is also where active user input and other updates are trying to apply the runtime changes to UI. A dependent animation that's consuming extensive system resources on the UI thread can make the app appear unresponsive in certain situations. If your animation causes a layout change or otherwise has the potential to impact performance on the UI thread, you often need to explicitly enable the animation to see it run. That's what the **EnableDependentAnimation** property on specific animation classes is for. See [Dependent and independent animations](./storyboarded-animations.md#dependent-and-independent-animations) for more info. -- Custom easing functions are not currently supported in the Windows Runtime. - -## Defining storyboarded animations - -A storyboarded animation is a way to change the value of a dependency property as a function of time. The property you are animating is not always a property that directly affects the UI of your app. But since XAML is about defining UI for an app, usually it is a UI-related property you are animating. For example, you can animate the angle of a [**RotateTransform**](/uwp/api/Windows.UI.Xaml.Media.RotateTransform), or the color value of a button's background. - -One of the main reasons you might be defining a storyboarded animation is if you are a control author or are re-templating a control, and you are defining visual states. For more info, see [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)). - -Whether you are defining visual states or a custom animation for an app, the concepts and APIs for storyboarded animations that are described in this topic mostly apply to either. - -In order to be animated, the property you are targeting with a storyboarded animation must be a *dependency property*. A dependency property is a key feature of the Windows Runtime XAML implementation. The writeable properties of most common UI elements are typically implemented as dependency properties, so that you can animate them, apply data-bound values, or apply a [**Style**](/uwp/api/Windows.UI.Xaml.Style) and target the property with a [**Setter**](/uwp/api/Windows.UI.Xaml.Setter). For more info about how dependency properties work, see [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview). - -Most of the time, you define a storyboarded animation by writing XAML. If you use a tool such as Microsoft Visual Studio, it will produce the XAML for you. It's possible to define a storyboarded animation using code too, but that's less common. - -Let's look at a simple example. In this XAML example, the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property is animated on a particular [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) object. - -```xaml - - - - - - - - - - - - - -``` - -### Identifying the object to animate - -In the previous example, the storyboard was animating the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property of a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle). You don't declare the animations on the object itself. Instead, you do this within the animation definition of a storyboard. Storyboards are usually defined in XAML that's not in the immediate vicinity of the XAML UI definition of the object to animate. Instead, they're usually set up as a XAML resource. - -To connect an animation to a target, you reference the target by its identifying programming name. You should always apply the [x:Name attribute](/windows/uwp/xaml-platform/x-name-attribute) in the XAML UI definition to name the object that you want to animate. You then target the object to animate by setting [**Storyboard.TargetName**](/dotnet/api/system.windows.media.animation.storyboard.targetname) within the animation definition. For the value of **Storyboard.TargetName**, you use the name string of the target object, which is what you set earlier and elsewhere with x:Name attribute. - -### Targeting the dependency property to animate - -You set a value for [**Storyboard.TargetProperty**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms616983(v=vs.95)) in the animation. This determines which specific property of the targeted object is animated. - -Sometimes you need to target a property that's not an immediate property of the target object, but that is nested more deeply in an object-property relationship. You often need to do this in order to drill down into a set of contributing object and property values until you can reference a property type that can be animated ([**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), [**Color**](/uwp/api/Windows.UI.Color)). This concept is called *indirect targeting*, and the syntax for targeting a property in this way is known as a *property path*. - -Here's an example. One common scenario for a storyboarded animation is to change the color of a part of an app UI or control in order to represent that the control is in a particular state. Say you want to animate the [**Foreground**](/uwp/api/windows.ui.xaml.controls.textblock.foreground) of a [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock), so that it turns from red to green. You'd expect that a [**ColorAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.ColorAnimation) is involved, and that's correct. However, none of the properties on UI elements that affect the object's color are actually of type [**Color**](/uwp/api/Windows.UI.Color). Instead, they're of type [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush). So what you actually need to target for animation is the [**Color**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush.Color) property of the [**SolidColorBrush**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush) class, which is a **Brush**-derived type that's typically used for these color-related UI properties. And here's what that looks like in terms of forming a property path for your animation's property targeting: - -```xaml - - - -``` - -Here's how to think of this syntax in terms of its parts: - -- Each set of () parentheses encloses a property name. -- Within the property name, there's a dot, and that dot separates a type name and a property name, so that the property you're identifying is unambiguous. -- The dot in the middle, the one that's not inside parentheses, is a step. This is interpreted by the syntax to mean, take the value of the first property (which is an object), step into its object model, and target a specific sub-property of the first property's value. - -Here's a list of animation targeting scenarios where you'll probably be using indirect property targeting, and some property path strings that approximates the syntax you'll use: - -- Animating the [**X**](/uwp/api/windows.ui.xaml.media.translatetransform.x) value of a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform), as applied to a [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform): `(UIElement.RenderTransform).(TranslateTransform.X)` -- Animating a [**Color**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush.Color) within a [**GradientStop**](/uwp/api/Windows.UI.Xaml.Media.GradientStop) of a [**LinearGradientBrush**](/uwp/api/Windows.UI.Xaml.Media.LinearGradientBrush), as applied to a [**Fill**](/uwp/api/Windows.UI.Xaml.Shapes.Shape.Fill): `(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)` -- Animating the [**X**](/uwp/api/windows.ui.xaml.media.translatetransform.x) value of a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform), which is 1 of 4 transforms in a [**TransformGroup**](/uwp/api/Windows.UI.Xaml.Media.TransformGroup), as applied to a [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform):`(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)` - -You'll notice some of these examples use square brackets around numbers. This is an indexer. It indicates that the property name preceding it has a collection as value, and that you want an item (as identified by a zero-based index) from within that collection. - -You can also animate XAML attached properties. Always enclose the full attached property name in parentheses, for example `(Canvas.Left)`. For more info, see [Animating XAML attached properties](./storyboarded-animations.md#animating-xaml-attached-properties). - -For more info on how to use a property path for indirect targeting of the property to animate, see [Property-path syntax](/windows/uwp/xaml-platform/property-path-syntax) or [**Storyboard.TargetProperty attached property**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms616983(v=vs.95)). - -### Animation types - -The Windows Runtime animation system has three specific types that storyboarded animations can apply to: - -- [**Double**](/dotnet/api/system.double), can be animated with any [**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation) -- [**Point**](/uwp/api/Windows.Foundation.Point), can be animated with any [**PointAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointAnimation) -- [**Color**](/uwp/api/Windows.UI.Color), can be animated with any [**ColorAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.ColorAnimation) - -There's also a generalized [**Object**](/dotnet/api/system.object) animation type for object reference values, which we'll discuss later. - -### Specifying the animated values - -So far we've shown you how to target the object and the property to animate, but haven't yet described what the animation does to the property value when it runs. - -The animation types we've described are sometimes referred to as **From**/**To**/**By** animations. This means that the animation is changing the value of a property, over time, using one or more of these inputs that come from the animation definition: - -- The value starts at the **From** value. If you don't specify a **From** value, the starting value is whatever value the animated property has at the time before the animation runs. This might be a default value, a value from a style or template, or a value specifically applied by a XAML UI definition or app code. -- At the end of the animation, the value is the **To** value. -- Or, to specify an ending value relative to the starting value, set the **By** property. You'd set this instead of the **To** property. -- If you don't specify a **To** value or a **By** value, the ending value is whatever value the animated property has at the time before the animation runs. In this case you'd better have a **From** value because otherwise the animation won't change the value at all; its starting and ending values are both the same. -- An animation typically has at least one of **From**, **By** or **To** but never all three. - -Let's revisit the earlier XAML example and look again at the **From** and **To** values, and the **Duration**. The example is animating the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property, and the property type of **Opacity** is [**Double**](/dotnet/api/system.double). So the animation to use here is [**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation). - -`From="1.0" To="0.0"` specifies that when the animation runs, the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property starts at a value of 1 and animates to 0. In other words, in terms of what these [**Double**](/dotnet/api/system.double) values mean to the **Opacity** property, this animation will cause the object to start opaque and then fade to transparent. - -```xaml -... - - - -... -``` - -`Duration="0:0:1"` specifies how long the animation lasts, that is, how fast the rectangle fades. A [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) property is specified in the form of *hours*:*minutes*:*seconds*. The time duration in this example is one second. - -For more info about [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) values and the XAML syntax, see [**Duration**](/uwp/api/Windows.UI.Xaml.Duration). - -> [!NOTE] -> For the example we showed, if you were sure that the starting state of the object being animated has [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) always equal to 1, either through the default or an explicit set, you could omit the **From** value, the animation would use the implicit starting value, and the result would be the same. - -### From/To/By are nullable - -We mentioned previously that you can omit **From**, **To** or **By** and thus use current non-animated values as substitutes for a missing value. **From**, **To**, or **By** properties of an animation aren't of the type you might guess. For example the type of the [**DoubleAnimation.To**](/uwp/api/windows.ui.xaml.media.animation.doubleanimation.easingfunction) property isn't [**Double**](/dotnet/api/system.double). Instead, it's a [**Nullable**](/dotnet/api/system.nullable-1) for **Double**. And its default value is **null**, not 0. That **null** value is how the animation system distinguishes that you haven't specifically set a value for a **From**, **To**, or **By** property. Visual C++ component extensions (C++/CX) doesn't have a **Nullable** type, so it uses [**IReference**](/uwp/api/Windows.Foundation.IReference_T_) instead. - -### Other properties of an animation - -The next properties described in this section are all optional in that they have defaults that are appropriate for most animations. - -### **AutoReverse** - -If you don't specify either [**AutoReverse**](/uwp/api/windows.ui.xaml.media.animation.timeline.autoreverse) or [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior) on an animation, that animation will run once, and run for the time specified as the [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration). - -The [**AutoReverse**](/uwp/api/windows.ui.xaml.media.animation.timeline.autoreverse) property specifies whether a timeline plays in reverse after it reaches the end of its [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration). If you set it to **true**, the animation reverses after it reaches the end of its declared [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration), changing the value from its ending value (**To**) back to its starting value (**From**). This means that the animation effectively runs for double the time of its [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration). - -### **RepeatBehavior** - -The [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior) property specifies either how many times a timeline plays, or a larger duration that the timeline should repeat within. By default, a timeline has an iteration count of "1x", which means it plays one time for its [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) and does not repeat. - -You can cause the animation to run multiple iterations. For example, a value of "3x" causes the animation to run three times. Or, you can specify a different [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) for [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior). That **Duration** should be longer than the **Duration** of the animation itself to be effective. For example, if you specify a **RepeatBehavior** of "0:0:10", for an animation that has a [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) of "0:0:2", that animation repeats five times. If these don't divide evenly, the animation gets truncated at the time that the **RepeatBehavior** time is reached, which might be partway through. Finally, you can specify the special value "Forever", which causes the animation to run infinitely until it's deliberately stopped. - -For more info about [**RepeatBehavior**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepeatBehavior) values and the XAML syntax, see [**RepeatBehavior**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepeatBehavior). - -### **FillBehavior="Stop"** - -By default, when an animation ends, the animation leaves the property value as the final **To** or **By**-modified value even after its duration is surpassed. However, if you set the value of the [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior) property to [**FillBehavior.Stop**](/uwp/api/Windows.UI.Xaml.Media.Animation.FillBehavior), the value of the animated value reverts to whatever the value was before the animation was applied, or more precisely to the current effective value as determined by the dependency property system (for more info on this distinction, see [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview)). - -### **BeginTime** - -By default, the [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime) of an animation is "0:0:0", so it begins as soon as its containing [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) runs. You might change this if the **Storyboard** contains more than one animation and you want to stagger the start times of the others versus an initial animation, or to create a deliberate short delay. - -### **SpeedRatio** - -If you have more than one animation in a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) you can change the time rate of one or more of the animations relative to the **Storyboard**. It's the parent **Storyboard** that ultimately controls how the [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) time elapses while the animations run. This property isn't used very often. For more info see [**SpeedRatio**](/uwp/api/windows.ui.xaml.media.animation.timeline.speedratio). - -## Defining more than one animation in a **Storyboard** - -The contents of a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) can be more than one animation definition. You might have more than one animation if you are applying related animations to two properties of the same target object. For example, you might change both the [**TranslateX**](/uwp/api/windows.ui.xaml.media.compositetransform.translatex) and [**TranslateY**](/uwp/api/windows.ui.xaml.media.compositetransform.translatey) properties of a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform) used as the [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform) of a UI element; this will cause the element to translate diagonally. You need two different animations to accomplish that, but you might want the animations to be part of the same **Storyboard** because you always want those two animations to be run together. - -The animations don't have to be the same type, or target the same object. They can have different durations, and don't have to share any property values. - -When the parent [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) runs, each of the animations within will run too. - -The [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) class actually has a lot of the same animation properties as the animation types do, because both share the [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) base class. Thus, a **Storyboard** can have a [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior), or a [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime). You don't usually set these on a **Storyboard** though unless you want all the contained animations to have that behavior. As a general rule, any **Timeline** property as set on a **Storyboard** applies to all its child animations. If let unset, the **Storyboard** has an implicit duration that's calculated from the longest [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) value of the contained animations. An explicitly set [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) on a **Storyboard** that's shorter than one of its child animations will cause that animation to get cut off, which isn't usually desirable. - -A storyboard can't contain two animations that attempt to target and animate the same property on the same object. If you try this, you'll get a runtime error when the storyboard tries to run. This restriction applies even if the animations don't overlap in time because of deliberately different [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime) values and durations. If you really want to apply a more complex animation timeline to the same property in a single storyboard, the way to do this is to use a key-frame animation. See [Key-frame and easing function animations](key-frame-and-easing-function-animations.md). - -The animation system can apply more than one animation to the value of a property, if those inputs come from multiple storyboards. Using this behavior deliberately for simultaneously running storyboards isn't common. However it's possible that an app-defined animation that you apply to a control property will be modifying the **HoldEnd** value of an animation that was previously run as part of the control's visual state model. - -## Defining a storyboard as a resource - -A [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) is the container that you put animation objects in. You typically define the **Storyboard** as a resource that is available to the object that you want to animate, either in page-level [**Resources**](/uwp/api/windows.ui.xaml.frameworkelement.resources) or [**Application.Resources**](/uwp/api/windows.ui.xaml.application.resources). - -This next example shows how the previous example [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) would be contained in a page-level [**Resources**](/uwp/api/windows.ui.xaml.frameworkelement.resources) definition, where the **Storyboard** is a keyed resource of the root [**Page**](/uwp/api/Windows.UI.Xaml.Controls.Page). Note the [x:Name attribute](/windows/uwp/xaml-platform/x-name-attribute). This attribute is how you define a variable name for the **Storyboard**, so that other elements in XAML as well as code can refer to the **Storyboard** later. - -```xaml - - - - - - - - - - - - -``` - -Defining resources at the XAML root of a XAML file such as page.xaml or app.xaml is a common practice for how to organize keyed resources in your XAML. You also can factor resources into separate files and merge them into apps or pages. For more info, see [ResourceDictionary and XAML resource references](../../develop/platform/xaml/xaml-resource-dictionary.md). - -> [!NOTE] -> Windows Runtime XAML supports identifying resources either using the [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute) or the [x:Name attribute](/windows/uwp/xaml-platform/x-name-attribute). Using x:Name attribute is more common for a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard), because you'll want to reference it by variable name eventually, so that you can call its [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method and run the animations. If you do use [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute), you'll need to use [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary) methods such as the [**Item**](/uwp/api/windows.ui.xaml.resourcedictionary) indexer to retrieve it as a keyed resource and then cast the retrieved object to **Storyboard** to use the **Storyboard** methods. - -### Storyboards for visual states - -You also put your animations within a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) unit when you are declaring the visual state animations for a control's visual appearance. In that case the **Storyboard** elements you define go into a [**VisualState**](/uwp/api/Windows.UI.Xaml.VisualState) container that's nested more deeply in a [**Style**](/uwp/api/Windows.UI.Xaml.Style) (it's the **Style** that is the keyed resource). You don't need a key or name for your **Storyboard** in this case because it's the **VisualState** that has a target name that the [**VisualStateManager**](/uwp/api/windows.ui.xaml.visualstatemanager) can invoke. The styles for controls are often factored into separate XAML [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary) files rather than placed in a page or app **Resources** collection. For more info, see [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)). - -## Dependent and independent animations - -At this point we need to introduce some important points about how the animation system works. In particular, animation interacts fundamentally with how a Windows Runtime app renders to the screen, and how that rendering uses processing threads. A Windows Runtime app always has a main UI thread, and this thread is responsible for updating the screen with current information. In addition, a Windows Runtime app has a composition thread, which is used for precalculating layouts immediately before they are shown. When you animate the UI, there's potential to cause a lot of work for the UI thread. The system must redraw large areas of the screen using fairly short time intervals between each refresh. This is necessary for capturing the latest property value of the animated property. If you're not careful, there's risk that an animation can make the UI less responsive, or will impact performance of other app features that are also on the same UI thread. - -The variety of animation that is determined to have some risk of slowing down the UI thread is called a *dependent animation*. An animation not subject to this risk is an *independent animation*. The distinction between dependent and independent animations isn't just determined by animation types ([**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation) and so on) as we described earlier. Instead, it's determined by which specific properties you are animating, and other factors like inheritance and composition of controls. There are circumstances where even if an animation does change UI, the animation can have minimal impact to the UI thread, and can instead be handled by the composition thread as an independent animation. - -An animation is independent if it has any of these characteristics: - -- The [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) of the animation is 0 seconds (see Warning) -- The animation targets [**UIElement.Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) -- The animation targets a sub-property value of these [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) properties: [**Transform3D**](/uwp/api/windows.ui.xaml.uielement.transform3d), [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform), [**Projection**](/uwp/api/windows.ui.xaml.uielement.projection), [**Clip**](/uwp/api/windows.ui.xaml.uielement.clip) -- The animation targets [**Canvas.Left**](/dotnet/api/system.windows.controls.canvas.left) or [**Canvas.Top**](/dotnet/api/system.windows.controls.canvas.top) -- The animation targets a [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush) value and uses a [**SolidColorBrush**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush), animating its [**Color**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush.Color) -- The animation is an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) - -> [!WARNING] -> In order for your animation to be treated as independent, you must explicitly set `Duration="0"`. For example, if you remove `Duration="0"` from this XAML, the animation is treated as dependent, even though the [**KeyTime**](/uwp/api/windows.ui.xaml.media.animation.doublekeyframe.keytime) of the frame is "0:0:0". - -```xaml - - - - - -``` - -If your animation doesn't meet these criteria, it's probably a dependent animation. By default, the animation system won't run a dependent animation. So during the process of developing and testing, you might not even be seeing your animation running. You can still use this animation, but you must specifically enable each such dependent animation. To enable your animation, set the **EnableDependentAnimation** property of the animation object to **true**. (Each [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) subclass that represents an animation has a different implementation of the property but they're all named `EnableDependentAnimation`.) - -The requirement of enabling dependent animations falling onto the app developer is a conscious design aspect of the animation system and the development experience. We want developers to be aware that animations do have a performance cost for the responsiveness of your UI. Poorly performing animations are difficult to isolate and debug in a full-scale app. So it's better to turn on only the dependent animations you really need for your app's UI experience. We didn't want to make it too easy to compromise your app's performance because of decorative animations that use a lot of cycles. For more info on performance tips for animation, see [Optimize animations and media](/windows/uwp/debug-test-perf/optimize-animations-and-media). - -As an app developer, you can also choose to apply an app-wide setting that always disables dependent animations, even those where **EnableDependentAnimation** is **true**. See [**Timeline.AllowDependentAnimations**](/uwp/api/windows.ui.xaml.media.animation.timeline.allowdependentanimations). - -> [!TIP] -> If you're using the Animation Pane in Blend for Visual Studio 2019, whenever you attempt to apply a dependent animation to a visual state property, warnings will be displayed in the designer. -> Warnings will not show in the build output or Error List. -> If you're editing XAML by hand, the designer will not show a warning. -> At runtime when debugging, the Output pane's Debug output will show a warning that the animation is not independent and will be skipped. - - -## Starting and controlling an animation - -Everything we've shown you so far doesn't actually cause an animation to run or be applied! Until the animation is started and is running, the value changes that an animation is declaring in XAML are latent and won't happen yet. You must explicitly start an animation in some way that's related to the app lifetime or the user experience. At the simplest level, you start an animation by calling the [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method on the [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) that's the parent for that animation. You can't call methods from XAML directly, so whatever you do to enable your animations, you'll be doing it from code. That will either be the code-behind for the pages or components of your app, or perhaps the logic of your control if you're defining a custom control class. - -Typically, you'll call [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) and just let the animation run to its duration completion. However, you can also use [**Pause**](/uwp/api/windows.ui.xaml.media.animation.storyboard.pause), [**Resume**](/uwp/api/windows.ui.xaml.media.animation.storyboard.resume) and [**Stop**](/uwp/api/windows.ui.xaml.media.animation.storyboard.stop) methods to control the [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) at run-time, as well as other APIs that are used for more advanced animation control scenarios. - -When you call [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) on a storyboard that contains an animation that repeats infinitely (`RepeatBehavior="Forever"`), that animation runs until the page containing it is unloaded, or you specifically call [**Pause**](/uwp/api/windows.ui.xaml.media.animation.storyboard.pause) or [**Stop**](/uwp/api/windows.ui.xaml.media.animation.storyboard.stop). - -### Starting an animation from app code - -You can either start animations automatically, or in response to user actions. For the automatic case, you typically use an object lifetime event such as [**Loaded**](/uwp/api/windows.ui.xaml.frameworkelement.loaded) to act as the animation trigger. The **Loaded** event is a good event to use for this because at that point the UI is ready for interaction, and the animation won't be cut off at the beginning because another part of UI was still loading. - -In this example, the [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) event is attached to the rectangle so that when the user clicks the rectangle, the animation begins. - -```xaml - -``` - -The event handler start the [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) (the animation) by using the [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method of the **Storyboard**. - -```csharp -myStoryboard.Begin(); -``` - -```cppwinrt -myStoryboard().Begin(); -``` - -```cpp -myStoryboard->Begin(); -``` - -```vb -myStoryBoard.Begin() -``` - -You can handle the [**Completed**](/uwp/api/windows.ui.xaml.media.animation.timeline.completed) event if you want other logic to run after the animation has finished applying values. Also, for troubleshooting property system/animation interactions, the [**GetAnimationBaseValue**](/uwp/api/windows.ui.xaml.dependencyobject.getanimationbasevalue) method can be useful. - -> [!TIP] -> Whenever you are coding for an app scenario where you are starting an animation from app code, you might want to review again whether an animation or transition already exists in the animation library for your UI scenario. The library animations enable a more consistent UI experience across all Windows Runtime apps, and are easier to use. - -  - -### Animations for visual states - -The run behavior for a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) that's used to define a control's visual state is different from how an app might run a storyboard directly. As applied to a visual state definition in XAML, the **Storyboard** is an element of a containing [**VisualState**](/uwp/api/Windows.UI.Xaml.VisualState), and the state as a whole is controlled by using the [**VisualStateManager**](/uwp/api/windows.ui.xaml.visualstatemanager) API. Any animations within will run according to their animation values and [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) properties when the containing **VisualState** is used by a control. For more info, see [Storyboards for visual states](/previous-versions/windows/apps/jj819808(v=win.10)). For visual states, the apparent [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior) is different. If a visual state is changed to another state, all the property changes applied by the previous visual state and its animations are canceled, even if the new visual state doesn't specifically apply a new animation to a property. - -### **Storyboard** and **EventTrigger** - -There is one way to start an animation that can be declared entirely in XAML. However, this technique isn't widely used anymore. It's a legacy syntax from WPF and early versions of Silverlight prior to [**VisualStateManager**](/uwp/api/windows.ui.xaml.visualstatemanager) support. This [**EventTrigger**](/uwp/api/Windows.UI.Xaml.EventTrigger) syntax still works in Windows Runtime XAML for import/compatibility reasons, but only works for a trigger behavior based on the [**FrameworkElement.Loaded**](/uwp/api/windows.ui.xaml.frameworkelement.loaded) event; attempting to trigger off other events will throw exceptions or fail to compile. For more info, see [**EventTrigger**](/uwp/api/Windows.UI.Xaml.EventTrigger) or [**BeginStoryboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.BeginStoryboard). - -## Animating XAML attached properties - -It's not a common scenario, but you can apply an animated value to a XAML attached property. For more info on what attached properties are and how they work, see [Attached properties overview](/windows/uwp/xaml-platform/attached-properties-overview). Targeting an attached property requires a [property-path syntax](/windows/uwp/xaml-platform/property-path-syntax) that encloses the property name in parentheses. You can animate the built-in attached properties such as [**Canvas.ZIndex**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/cc190397(v=vs.95)) by using an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) that applies discrete integer values. However, an existing limitation of the Windows Runtime XAML implementation is that you cannot animate a custom attached property. - -## More animation types, and next steps for learning about animating your UI - -Up to now, we've shown the custom animations that are animating between two values, and then linearly interpolating the values as necessary while the animation runs. These are called **From**/**To**/**By** animations. But there's another animation type that enables you to declare intermediate values that fall between the start and end. These are called *key-frame animations*. There's also a way to alter the interpolation logic on either a **From**/**To**/**By** animation or a key-frame animation. This involves applying an easing function. For more info on these concepts, see [Key-frame and easing function animations](key-frame-and-easing-function-animations.md). - -## Related topics - -* [Property-path syntax](/windows/uwp/xaml-platform/property-path-syntax) -* [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview) -* [Key-frame and easing function animations](key-frame-and-easing-function-animations.md) -* [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)) -* [Control templates](../../develop/platform/xaml/xaml-control-templates.md) -* [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) -* [**Storyboard.TargetProperty**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms616983(v=vs.95)) -  - -  diff --git a/hub/apps/design/motion/timing-and-easing.md b/hub/apps/design/motion/timing-and-easing.md deleted file mode 100644 index a92a1083a4..0000000000 --- a/hub/apps/design/motion/timing-and-easing.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -description: Learn the importance of timing and easing in making motion feel natural for objects entering, exiting, or moving within the UI. -title: Timing and easing -label: Timing and easing -template: detail.hbs -ms.date: 09/18/2024 -ms.topic: concept-article -doc-status: Published -ms.localizationpriority: medium -ms.custom: RS5 ---- -# Timing and easing - -While motion is based in the real world, we are also a digital medium, which comes with an expectation of speed and performance.​ - -## Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see Easing Functions in action](winui3gallery://item/EasingFunction) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -## Standard animation duration values - -WinUI provides a set of standard animation durations that are used throughout the platform controls. You can use these named resources when building custom Storyboard animations as well. - -|ThemeResource Name |Value | -|---------|---------| -|ControlNormalAnimationDuration | 250ms | -|ControlFastAnimationDuration | 167ms | -|ControlFasterAnimationDuration | 83ms | - -## Easing in Fluent motion - -Easing is a way to manipulate the velocity of an object as it travels. It's the glue that ties together all the Fluent motion experiences.​ While extreme, the easing used in the system helps unify the physical feel of objects moving throughout the system. This is one way to mimic the real world, and make objects in motion feel like they belong in their environment. - -![A short video showing a circle appear from the lower-right corner of the frame and stopping near the upper-left corner of the frame.](images/easing.gif) - -## Apply easing to motion - -These easings will help you achieve a more natural feel, and are the baseline we use for Fluent motion. - -### Fast Out, Slow In - -```csharp -cubic-bezier(0, 0, 0, 1) -``` - -:::row::: - :::column::: -Use for objects or UI entering the scene, either navigating or spawning​. - -Once on-scene, the object is met with extreme friction, which slows the object to rest.​ -The resulting feel is that the object traveled from a long distance away and entered at an extreme velocity, or is quickly returning to a rest state.​ - -Even if it's preceded by a moment of unresponsiveness, the velocity of the incoming object has the effect of feeling fast and responsive.​ - :::column-end::: - :::column::: - ![decelerate easing](images/decel-ease.gif) - :::column-end::: -:::row-end::: - - -### Slow Out, Fast In - -```csharp -cubic-bezier(1 , 0 , 1 , 1) -``` - -:::row::: - :::column::: -Use for UI or objects that are exiting the scene. - -Objects become powered and gain momentum until they reach escape velocity.​ -The resulting feel is that the object is trying its hardest to get out of the user's way and make room for new content to come in.​ - :::column-end::: - :::column::: - ![accelerate easing](images/accel-ease.gif) - :::column-end::: -:::row-end::: - -## Related articles - -- [Motion overview](../signature-experiences/motion.md) -- [Fluent Design - Motion](https://fluent2.microsoft.design/motion) -- [Directionality and gravity](directionality-and-gravity.md) diff --git a/hub/apps/design/motion/xaml-animation.md b/hub/apps/design/motion/xaml-animation.md deleted file mode 100644 index d883d9faca..0000000000 --- a/hub/apps/design/motion/xaml-animation.md +++ /dev/null @@ -1,381 +0,0 @@ ---- -ms.assetid: 0C8DEE75-FB7B-4E59-81E3-55F8D65CD982 -title: Animations overview -description: Use the animations from the Windows Runtime animation library to integrate the Windows look and feel into your app. -ms.date: 09/24/2020 -ms.topic: concept-article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Animations in XAML - -Animations can enhance your app by adding movement and interactivity. By using the animations from the Windows Runtime animation library, you can integrate the Windows look and feel into your app. This topic provides a summary of the animations and examples of typical scenarios where each is used. - -> [!TIP] -> The Windows Runtime controls for XAML include certain types of animations as built-in behaviors that come from an animation library. By using these controls in your app, you can get the animated look and feel without having to program it yourself. - -Animations from the Windows Runtime animation library provide these benefits: - -- Motions that align to the [Guidelines for animations](./index.md) -- Fast, fluid transitions between UI states that inform but do not distract the user -- Visual behavior that indicates transitions within an app to the user - -For example, when the user adds an item to a list, instead of the new item instantly appearing in the list, the new item animates into place. The other items in the list animate to their new positions over a short period of time, making room for the added item. The transition behavior here makes the control interaction more apparent to the user. - -Windows 10, version 1607 introduces a new [**ConnectedAnimationService**](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) API for implementing animations where an element appears to animate between views during a navigation. This API has a different usage pattern from the other animation library API's. Usage of **ConnectedAnimationService** is covered in the [reference page](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice). - -The animation library does not provide animations for every possible scenario. There are cases where you might wish to create a custom animation in XAML. For more info, see [Storyboarded animations](storyboarded-animations.md). - -Additionally, for certain advanced scenarios like animating an item based on scroll position of a ScrollViewer, developers may wish to use Visual Layer interoperation to implement custom animations. See [Visual Layer](/windows/uwp/composition/visual-layer) for more information. - -## Types of animations - -The Windows Runtime animation system and the animation library serve the larger goal of enabling controls and other parts of UI to have an animated behavior. There are several distinct types of animations. - -- *Theme transitions* are applied automatically when certain conditions change in the UI, involving controls or elements from the predefined Windows Runtime XAML UI types. These are termed *theme transitions* because the animations support the Windows look and feel, and define what all apps do for particular UI scenarios when they change from one interaction mode to another. The theme transitions are part of the animation library. -- *Theme animations* are animations to one or more properties of predefined Windows Runtime XAML UI types. Theme animations differ from theme transitions because theme animations target one specific element and exist in specific visual states within a control, whereas the theme transitions are assigned to properties of the control that exist outside of the visual states and influence the transitions between those states. Many of the Windows Runtime XAML controls include theme animations within storyboards that are part of their control template, with the animations triggered by visual states. So long as you're not modifying the templates, you'll have those built-in theme animations available for the controls in your UI. However, if you do replace templates, then you'll be removing the built-in control theme animations too. To get them back, you must define a storyboard that includes theme animations within the control's set of visual states. You can also run theme animations from storyboards that aren't within visual states and start them with the [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method, but that's less common. Theme animations are part of the animation library. -- *Visual transitions* are applied when a control transitions from one of its defined visual states to another state. These are custom animations that you write, and are typically related to the custom template you write for a control and the visual state definitions within that template. The animation only runs during the time between states, and that's typically a short amount of time, a few seconds at most. For more info, see ["VisualTransition" section of Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)). -- *Storyboarded animations* animate the value of a Windows Runtime dependency property over time. Storyboards can be defined as part of a visual transition, or triggered at runtime by the application. For more info, see [Storyboarded animations](storyboarded-animations.md). For more info about dependency properties and where they exist, see [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview). -- *Connected animations* provided by the new [**ConnectedAnimationService**](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) API allow developers to easily create an effect where an element appears to animate between views during a navigation. This API is available starting in Windows 10, version 1607. See [**ConnectedAnimationService**](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) for more information. - -## Animations available in the library - -The following animations are supplied in the animation library. Click on the name of an animation to learn more about their main usage scenarios, how to define them, and to see an example of the animation. - -- [Page transition](#page-transition): Animates page transitions in a [**Frame**](/uwp/api/Windows.UI.Xaml.Controls.Frame). -- [Content and entrance transition](#content-transition-and-entrance-transition): Animates one piece or set of content into or out of view. -- [Fade in/out, and crossfade](#fade-in-out-and-crossfade): Shows transient elements or controls, or refreshes a content area. -- [Pointer up/down](#pointer-up-down): Gives visual feedback of a tap or click on a tile. -- [Reposition](#reposition): Moves an element into a new position. -- [Show/hide popup](#show-hide-popup): Displays contextual UI on top of the view. -- [Show/hide edge UI](#show-hide-edge-ui): Slides edge-based UI, including large UI such as a panel, into or out of view. -- [List item changes](#list-item-changes): Adds or deletes an item from a list, or reordering of the items. -- [Drag/drop](#drag-drop): Gives visual feedback during a drag-and-drop operation. - -### Page transition - -Use page transitions to animate navigation within an app. Since almost all apps use some kind of navigation, page transition animations are the most common type of theme animation used by apps. See [**NavigationThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.navigationthemetransition) for more information about the page transition APIs. - - - -### Content transition and entrance transition - -Use content transition animations ([**ContentThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.ContentThemeTransition)) to move a piece or a set of content into or out of the current view. For example, the content transition animations show content that was not ready to display when the page was first loaded, or when the content changes on a section of a page. - -[**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition) represents a motion that can apply to content when a page or large section of UI is first loaded. Thus the first appearance of content can offer different feedback than a change to content does. [**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition) is equivalent to a [**NavigationThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.navigationthemetransition) with the default parameters, but may be used outside of a [**Frame**](/uwp/api/Windows.UI.Xaml.Controls.Frame). - - - - -### Fade in/out, and crossfade - -Use fade in and fade out animations to show or hide transient UI or controls. In XAML these are represented as [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation). One example is in an app bar in which new controls can appear due to user interaction. Another example is a transient scroll bar or panning indicator that is faded out after no user input has been detected for some amount of time. Apps should also use the fade in animation when they transition from a placeholder item to the final item as content loads dynamically. - -Use a crossfade animation to smooth the transition when an item's state is changing; for example, when the app refreshes the current contents of a view. The XAML animation library does not supply a dedicated crossfade animation (no equivalent for [**crossFade**](/previous-versions/windows/apps/br212661(v=win.10))), but you can achieve the same result using [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) with overlapped timing. - - - -### Pointer up/down - -Use the [**PointerUpThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerUpThemeAnimation) and [**PointerDownThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerDownThemeAnimation) animations to give the user feedback for a successful tap or click on a tile. For example, when a user clicks or taps down on a tile, the pointer down animation is played. Once the click or tap has been released, the pointer up animation is played. - -### Reposition - -Use the reposition animations ([**RepositionThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeAnimation) or [**RepositionThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeTransition)) to move an element into a new position. For example, moving the headers in an items control uses the reposition animation. - - - -### Show/hide popup - -Use the [**PopInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopInThemeAnimation) and [**PopOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopOutThemeAnimation) when you show and hide a [**Popup**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.Popup) or similar contextual UI on top of the current view. [**PopupThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopupThemeTransition) is a theme transition that's useful feedback if you want to light dismiss a popup. - - - -### Show/hide edge UI - -Use the [**EdgeUIThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EdgeUIThemeTransition) animation to slide small, edge-based UI into and out of view. For example, use these animations when you show a custom app bar at the top or bottom of the screen or a UI surface for errors and warnings at the top of the screen. - -Use the [**PaneThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.PaneThemeTransition) animation to show and hide a pane or panel. This is for large edge-based UI such as a custom keyboard or a task pane. - -### List item changes - -Use the [**AddDeleteThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.AddDeleteThemeTransition) animation to add animated behavior when you add or delete an item in an existing list. For add, the transition will first reposition existing items in the list to make space for the new items, and then add the new items. For delete, the transition removes items from a list and, if necessary, repositions the remaining list items once the deleted items have been removed. - -There's also a separate [**ReorderThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.ReorderThemeTransition) that you apply if an item changes position in a list. This is animated differently than deleting an item and adding it in a new place with the associated delete/add animations. - -Note that these animations are included in the default [**ListView**](/uwp/api/windows.ui.xaml.controls.listview) and [**GridView**](/uwp/api/windows.ui.xaml.controls.gridview) templates so you do not need to manually add these animations if you are already using these controls. - - - -### Drag/drop - -Use the drag animations ([**DragItemThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DragItemThemeAnimation), [**DragOverThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DragOverThemeAnimation)) and drop animation ([**DropTargetItemThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DropTargetItemThemeAnimation)) to give visual feedback when the user drags or drops an item. - -When active, the animations show the user that the list can be rearranged around a dropped item. It is helpful for users to know where the item will be placed in a list if it is dropped at the current location. The animations give visual feedback that an item being dragged can be dropped between two other items in the list and that those items will move out of the way. - -## Using animations with custom controls - -The following table summarizes our recommendations for which animation you should use when you create a custom version of these Windows Runtime controls: - -| UI type | Recommended animation | -|---------|-----------------------| -| Dialog box | [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) | -| Flyout | [**PopInThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popinthemeanimation) and [**PopOutThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popoutthemeanimation) | -| Tooltip | [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) | -| Context menu | [**PopInThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popinthemeanimation) and [**PopOutThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popoutthemeanimation) | -| Command bar | [**EdgeUIThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.edgeuithemetransition) | -| Task pane or edge-based panel | [**PaneThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.panethemetransition) | -| Contents of any UI container | [**ContentThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.contentthemetransition) | -| For controls or if no other animation applies | [**FadeInThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.fadeinthemeanimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) | - -  - -## Transition animation examples - -Ideally, your app uses animations to enhance the user interface or to make it more attractive without annoying your users. One way you can do this is to apply animated transitions to UI so that when something enters or leaves the screen or otherwise changes, the animation draws the attention of the user to the change. For example, your buttons may rapidly fade in and out of view rather than just appear and disappear. We created a number of APIs that can be used to create recommended or typical animation transitions that are consistent. The example here shows how to apply an animation to a button so that it swiftly slides into view. - -```xml - - ``` - -In this code, we add the [**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition) object to the transition collection of the button. Now, when the button is first rendered, it swiftly slides into view rather than just appear. You can set a few properties on the animation object in order to adjust how far it slides and from what direction, but it's really meant to be a simple API for a specific scenario, that is, to make an eye-catching entrance. - -You can also define transition animation themes in the style resources of your app, allowing you to apply the effect uniformly. This example is equivalent to the previous one, only it is applied using a [**Style**](/uwp/api/Windows.UI.Xaml.Style): - -```xml - - - - - - -``` - -When using colored text on a colored background, make sure there is enough contrast between text and background. By default, hyperlink or hypertext will use the accent color. If you apply variations of the accent color to the background, you should use a variation of the original accent color to optimize the contrast of colored text on a colored background. - -The chart below illustrates an example of the various light/dark shades of accent color, and how colored type can be applied on a colored surface. - -![Screenshot of the Color on Color chart that shows a color gradient from light blue on the top changing to a dark blue on the bottom.](../style/images/color/color-on-color.png) - -For more information about styling controls, see [XAML styles](../../develop/platform/xaml/xaml-styles.md). - -## Color API - -There are several APIs that can be used to add color to your application. First, the [**Colors**](/uwp/api/windows.ui.colors) class, which implements a large list of predefined colors. These can be accessed automatically with XAML properties. In the example below, we create a button and set the background and foreground color properties to members of the **Colors** class. - -```xaml - -``` - -You can create your own colors from RGB or hex values using the [**Color**](/uwp/api/windows.ui.color) struct in XAML. - -```xaml -#FF36C0FF -``` - -You can also create the same color in code by using the **FromArgb** method. - -```csharp -Color LightBlue = Color.FromArgb(255,54,192,255); -``` -```cppwinrt -Windows::UI::Color LightBlue = Windows::UI::ColorHelper::FromArgb(255,54,192,255); -``` - -The letters "Argb" stands for Alpha (opacity), Red, Green, and Blue, which are the four components of a color. Each argument can range from 0 to 255. You can choose to omit the first value, which will give you a default opacity of 255, or 100% opaque. - -> [!Note] -> If you're using C++, you must create colors by using the [**ColorHelper**](/uwp/api/windows.ui.colorhelper) class. - -The most common use for a **Color** is as an argument for a [**SolidColorBrush**](/uwp/api/windows.ui.xaml.media.solidcolorbrush), which can be used to paint UI elements a single solid color. These brushes are generally defined in a [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary), so they can be reused for multiple elements. - -```xaml - - - - -``` - -For more information on how to use brushes, see [XAML brushes](../../develop/platform/xaml/brushes.md). - -## Usability - -:::row::: - :::column::: -![Contrast illustration](../style/images/color/illo-contrast.svg) - :::column-end::: - :::column span="2"::: -**Contrast** - -Make sure that elements and images have sufficient contrast to differentiate between them, regardless of the accent color or theme. - -When considering what colors to use in your application, accessibility should be a primary concern. Use the guidance below to make sure your application is accessible to as many users as possible. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: -![Lighting illustration](../style/images/color/illo-lighting.svg) - :::column-end::: - :::column span="2"::: -**Lighting** - -Be aware that variation in ambient lighting can affect the usability of your app. For example, a page with a black background might unreadable outside due to screen glare, while a page with a white background might be painful to look at in a dark room. - :::column-end::: -:::row-end::: - -:::row::: - :::column::: -![Colorblindness illustration](../style/images/color/illo-colorblindness.svg) - :::column-end::: - :::column span="2"::: -**Colorblindness** - -Be aware of how colorblindness could affect the usability of your application. For example, a user with red-green colorblindness will have difficulty distinguishing red and green elements from each other. About **8 percent of men** and **0.5 percent of women** are red-green colorblind, so avoid using these color combinations as the sole differentiator between application elements. - :::column-end::: -:::row-end::: - -## Related - -- [XAML Styles](../../develop/platform/xaml/xaml-styles.md) -- [XAML Theme Resources](../../develop/platform/xaml/xaml-theme-resources.md) -- [WinUI 3 Gallery - Colors](winui3gallery://item/Colors) diff --git a/hub/apps/design/signature-experiences/geometry.md b/hub/apps/design/signature-experiences/geometry.md deleted file mode 100644 index c141aca92f..0000000000 --- a/hub/apps/design/signature-experiences/geometry.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -description: An overview of geometry and spacing in Windows 11 -title: Geometry in Windows 11 -ms.assetid: E9E66189-2C81-406D-9C89-8AFBEE0BCC47 -ms.date: 06/24/2021 -ms.topic: article -keywords: windows 11, design, ui, uiux, geometry, gutters, margins, corners, rounded corners, corner radius -ms.localizationpriority: medium ---- - -# Geometry in Windows - -![Rounded corners and element spacing in Windows 11](images/geometry_hero_1880.png) - -Geometry describes the shape, size and position of UI elements on screen. These fundamental design elements help experiences feel coherent across the entire design system. - -Windows geometry has been crafted to support modern app experiences. Progressively rounded corners, nested elements, and consistent gutters combine to create a soft, calm, and approachable effect that emphasizes unity of purpose and ease of use. - -> [!TIP] -> This article describes how the [Fluent Design language](https://fluent2.microsoft.design/) is applied to Windows apps. For more information, see [**Fluent Design - Shapes**](https://fluent2.microsoft.design/shapes). - -## Rounded corners - -![Dialog with rounded corners](images/geometry_rounded_corners_1880.png) - -Windows 11 applies rounded corners to all top-level app windows. The same applies to most common controls such as Button and ListView. (For more information, see [Use the latest common controls](../../get-started/make-apps-great-for-windows.md#4-use-the-latest-common-controls).) - -Windows 11 uses three levels of rounding depending on what UI component is being rounded and how that component is arranged relative to neighboring elements. - -| Corner radius | Usage | -|---------------|---------------------------| -| 8px | Top-level containers such as app windows, flyouts and dialogs are rounded using an 8px corner radius. | -| 4px | In-page elements such as buttons and list backplates are rounded using a 4px corner radius. | -| 0px | Straight edges that intersect with other straight edges are not rounded. | -| 0px | Window corners are not rounded when windows are snapped or maximized. | diff --git a/hub/apps/design/signature-experiences/iconography.md b/hub/apps/design/signature-experiences/iconography.md deleted file mode 100644 index 7aebd51557..0000000000 --- a/hub/apps/design/signature-experiences/iconography.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -description: Learn about app and system icons in Windows -title: Iconography in Windows -ms.assetid: EC94D54F-4C24-4E16-B8E0-08F3916C00F0 -ms.date: 07/24/2024 -ms.topic: article -keywords: windows 11, design, ui, uiux, icons, app icons, system icons, segoe fluent icons, segoe -ms.localizationpriority: medium ---- - -# Iconography in Windows - -Iconography is a set of visual images and symbols that help users understand and move through your app. Icons are used throughout the user interface as visual metaphors that represent a concept, action, or status. - -Windows 11 uses three types of icons: application, system, and file type. This article focuses on the first two. - -> [!TIP] -> This article describes how the [Fluent Design language](https://fluent2.microsoft.design/) is applied to Windows apps. For more information, see [**Fluent Design - Iconography**](https://fluent2.microsoft.design/iconography). - -## Application icons - -![An abstract application icon for a hypothetical maps app.](images/iconography_hero_1880.png) - -Application icons represent your app in the Windows shell. They're primarily used to open your application, but they also represent your app wherever it appears in the Windows shell. - -App icons should represent your app's core functionality through a metaphor. For more information about designing and constructing your app's icon, see [**App icons**](../style/iconography/overview.md). - -## System icons - -![A shopping cart icon from Segoe Fluent Icons.](images/iconography_SystemIcons.svg) - -Use system icons inside your app UI for items like command bars, navigation, or status indicators. Windows 11 introduces a new system icon font, [Segoe Fluent Icons](../style/segoe-fluent-icons-font.md). This new font complements [geometry](geometry.md) in Windows 11. - -All glyphs in Segoe Fluent Icons are drawn in a monoline style. That means they're created through a single stroke of 1 epx. - -Glyphs in Segoe Fluent Icons follow three aesthetic principles: - -- **Minimal**: Glyphs contain only the details that are necessary to communicate the concept. -- **Harmonious**: Glyphs are based on simple and geometric forms. -- **Evolved**: Glyphs use modern metaphors that are easily understood. - -For more information about using icons in your app UI, see [**Icons in Windows apps**](../style/icons.md). - -### Icon size - -![A properly sized printer icon.](images/iconography_IconSizing.svg) - -Font metrics for Segoe Fluent Icons match how designers and developers are accustomed to working with SVG and bitmap icons. - -Each font glyph is designed so that the footprint of the icon area is a square em. An icon with a 16-epx font size is the equivalent of a 16x16-epx icon, to make sizing and positioning more predictable. - -### Modifiers - -You can visually construct system icon glyphs by combining a base icon with a modifier icon. - -_Base icons_ are the main element of a visual metaphor. Base elements should occupy the entire icon footprint. - -_Modifier icons_ modify the meaning of the base icon. Modifier elements should be placed in one of the bottom quadrants of the icon footprint. - -:::row::: - :::column::: - ![A file icon.](images/iconography_Anatomy1.svg) - :::column-end::: - :::column span="3"::: - **Base icon only**
    - On its own, the paper sheet icon communicates the concept of a _file_. - :::column-end::: -:::row-end::: -:::row::: - :::column::: - ![A file icon overlayed with an up arrow icon.](images/iconography_Anatomy2.svg) - :::column-end::: - :::column span="3"::: - **Base icon + modifier icon**
    - Adding an up arrow to the file icon changes the meaning of the icon to represent an _uploaded file_. - :::column-end::: -:::row-end::: - -### Layering - -Icon layering is a technique that you use to overlap two glyphs. We recommend using icon layering to create a different state of the same icon (for example, an active or selected state). - -![A black and white folder icon plus a beige folder icon with no outlines equals a beige folder icon with a black outline.](images/iconography_IconLayering.svg) - -### Localization - -Understand the cultural connotations of symbols. Although iconography doesn't require localization in most cases, certain icons might be acceptable in one culture but not in another. Validate your iconography choices with the context in which you'll use them. - -## Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see Iconography principles in action](winui3gallery:/item/Iconography) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] diff --git a/hub/apps/design/signature-experiences/images/color_dark_controls_1880.png b/hub/apps/design/signature-experiences/images/color_dark_controls_1880.png deleted file mode 100644 index b640f50881..0000000000 Binary files a/hub/apps/design/signature-experiences/images/color_dark_controls_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/color_dark_controls_940.png b/hub/apps/design/signature-experiences/images/color_dark_controls_940.png deleted file mode 100644 index 2cd029bd70..0000000000 Binary files a/hub/apps/design/signature-experiences/images/color_dark_controls_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/color_hero_1880.png b/hub/apps/design/signature-experiences/images/color_hero_1880.png deleted file mode 100644 index 7f57d38637..0000000000 Binary files a/hub/apps/design/signature-experiences/images/color_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/color_hero_626.png b/hub/apps/design/signature-experiences/images/color_hero_626.png deleted file mode 100644 index ea7247ec46..0000000000 Binary files a/hub/apps/design/signature-experiences/images/color_hero_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/color_hero_940.png b/hub/apps/design/signature-experiences/images/color_hero_940.png deleted file mode 100644 index 2f24e422a0..0000000000 Binary files a/hub/apps/design/signature-experiences/images/color_hero_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/color_light_controls.png b/hub/apps/design/signature-experiences/images/color_light_controls.png deleted file mode 100644 index def960d43e..0000000000 Binary files a/hub/apps/design/signature-experiences/images/color_light_controls.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/color_light_controls_940.png b/hub/apps/design/signature-experiences/images/color_light_controls_940.png deleted file mode 100644 index 16b5e7bd3c..0000000000 Binary files a/hub/apps/design/signature-experiences/images/color_light_controls_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/experiences_color.png b/hub/apps/design/signature-experiences/images/experiences_color.png deleted file mode 100644 index dcb9d01107..0000000000 Binary files a/hub/apps/design/signature-experiences/images/experiences_color.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/experiences_geometry.png b/hub/apps/design/signature-experiences/images/experiences_geometry.png deleted file mode 100644 index 9208fb6734..0000000000 Binary files a/hub/apps/design/signature-experiences/images/experiences_geometry.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/experiences_iconography.png b/hub/apps/design/signature-experiences/images/experiences_iconography.png deleted file mode 100644 index aebe26ef8f..0000000000 Binary files a/hub/apps/design/signature-experiences/images/experiences_iconography.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/experiences_layering_elevation.png b/hub/apps/design/signature-experiences/images/experiences_layering_elevation.png deleted file mode 100644 index 5c245db190..0000000000 Binary files a/hub/apps/design/signature-experiences/images/experiences_layering_elevation.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/experiences_materials.png b/hub/apps/design/signature-experiences/images/experiences_materials.png deleted file mode 100644 index 005b20e936..0000000000 Binary files a/hub/apps/design/signature-experiences/images/experiences_materials.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/experiences_typography.png b/hub/apps/design/signature-experiences/images/experiences_typography.png deleted file mode 100644 index 1187b17bd7..0000000000 Binary files a/hub/apps/design/signature-experiences/images/experiences_typography.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_hero_1880.png b/hub/apps/design/signature-experiences/images/geometry_hero_1880.png deleted file mode 100644 index 4f01a75d65..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_hero_626.png b/hub/apps/design/signature-experiences/images/geometry_hero_626.png deleted file mode 100644 index 7557c6dee6..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_hero_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_hero_940.png b/hub/apps/design/signature-experiences/images/geometry_hero_940.png deleted file mode 100644 index 854eb40747..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_hero_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_rounded_corners_1880.png b/hub/apps/design/signature-experiences/images/geometry_rounded_corners_1880.png deleted file mode 100644 index c1e4495744..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_rounded_corners_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_rounded_corners_626.png b/hub/apps/design/signature-experiences/images/geometry_rounded_corners_626.png deleted file mode 100644 index 161809d0cb..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_rounded_corners_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_rounded_corners_940.png b/hub/apps/design/signature-experiences/images/geometry_rounded_corners_940.png deleted file mode 100644 index 02a714b0c7..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_rounded_corners_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_spacing_buttons_626.png b/hub/apps/design/signature-experiences/images/geometry_spacing_buttons_626.png deleted file mode 100644 index 5fcebcb8c9..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_spacing_buttons_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_spacing_buttons_940.png b/hub/apps/design/signature-experiences/images/geometry_spacing_buttons_940.png deleted file mode 100644 index 3c6d8c359f..0000000000 Binary files a/hub/apps/design/signature-experiences/images/geometry_spacing_buttons_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/geometry_spacing_cards.svg b/hub/apps/design/signature-experiences/images/geometry_spacing_cards.svg deleted file mode 100644 index 711a92c3ec..0000000000 --- a/hub/apps/design/signature-experiences/images/geometry_spacing_cards.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/geometry_spacing_flyout.svg b/hub/apps/design/signature-experiences/images/geometry_spacing_flyout.svg deleted file mode 100644 index c3ad2e81ba..0000000000 --- a/hub/apps/design/signature-experiences/images/geometry_spacing_flyout.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/geometry_spacing_header.svg b/hub/apps/design/signature-experiences/images/geometry_spacing_header.svg deleted file mode 100644 index 472410a89b..0000000000 --- a/hub/apps/design/signature-experiences/images/geometry_spacing_header.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/geometry_spacing_label.svg b/hub/apps/design/signature-experiences/images/geometry_spacing_label.svg deleted file mode 100644 index 90877426fd..0000000000 --- a/hub/apps/design/signature-experiences/images/geometry_spacing_label.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/geometry_spacing_margins.svg b/hub/apps/design/signature-experiences/images/geometry_spacing_margins.svg deleted file mode 100644 index 71d0862af1..0000000000 --- a/hub/apps/design/signature-experiences/images/geometry_spacing_margins.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/iconography_IconSizing.svg b/hub/apps/design/signature-experiences/images/iconography_IconSizing.svg deleted file mode 100644 index e7bf8c9646..0000000000 --- a/hub/apps/design/signature-experiences/images/iconography_IconSizing.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/iconography_anatomy1.svg b/hub/apps/design/signature-experiences/images/iconography_anatomy1.svg deleted file mode 100644 index 695b136417..0000000000 --- a/hub/apps/design/signature-experiences/images/iconography_anatomy1.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/iconography_anatomy2.svg b/hub/apps/design/signature-experiences/images/iconography_anatomy2.svg deleted file mode 100644 index 3290fdc531..0000000000 --- a/hub/apps/design/signature-experiences/images/iconography_anatomy2.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/hub/apps/design/signature-experiences/images/iconography_hero_1880.png b/hub/apps/design/signature-experiences/images/iconography_hero_1880.png deleted file mode 100644 index b801da21d7..0000000000 Binary files a/hub/apps/design/signature-experiences/images/iconography_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/iconography_hero_626.png b/hub/apps/design/signature-experiences/images/iconography_hero_626.png deleted file mode 100644 index 98b1b76fee..0000000000 Binary files a/hub/apps/design/signature-experiences/images/iconography_hero_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/iconography_hero_940.png b/hub/apps/design/signature-experiences/images/iconography_hero_940.png deleted file mode 100644 index 20804e1706..0000000000 Binary files a/hub/apps/design/signature-experiences/images/iconography_hero_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/iconography_iconlayering.svg b/hub/apps/design/signature-experiences/images/iconography_iconlayering.svg deleted file mode 100644 index 1c01ee0df6..0000000000 --- a/hub/apps/design/signature-experiences/images/iconography_iconlayering.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/iconography_systemicons.svg b/hub/apps/design/signature-experiences/images/iconography_systemicons.svg deleted file mode 100644 index 7b19bebf6b..0000000000 --- a/hub/apps/design/signature-experiences/images/iconography_systemicons.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_card_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_card_940.png deleted file mode 100644 index 93544b6485..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_card_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_control_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_control_940.png deleted file mode 100644 index 45f0ebc98a..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_control_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_control_hover_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_control_hover_940.png deleted file mode 100644 index dff5a09457..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_control_hover_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_control_pressed_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_control_pressed_940.png deleted file mode 100644 index 3c8aef8a31..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_control_pressed_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_control_rest_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_control_rest_940.png deleted file mode 100644 index 7a0655b076..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_control_rest_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_dialog_1880.png b/hub/apps/design/signature-experiences/images/layering_elevation_dialog_1880.png deleted file mode 100644 index b1a2238262..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_dialog_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_dialog_626.png b/hub/apps/design/signature-experiences/images/layering_elevation_dialog_626.png deleted file mode 100644 index 29325d72dd..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_dialog_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_dialog_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_dialog_940.png deleted file mode 100644 index 0b873df235..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_dialog_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_flyout_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_flyout_940.png deleted file mode 100644 index 00574fbdb4..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_flyout_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_hero_1880.png b/hub/apps/design/signature-experiences/images/layering_elevation_hero_1880.png deleted file mode 100644 index 3533f2c6e8..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_hero_626.png b/hub/apps/design/signature-experiences/images/layering_elevation_hero_626.png deleted file mode 100644 index cf6b4734a0..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_hero_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_hero_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_hero_940.png deleted file mode 100644 index a51642da36..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_hero_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_layer_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_layer_940.png deleted file mode 100644 index a1bd7d1b5a..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_layer_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_tooltip_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_tooltip_940.png deleted file mode 100644 index b1c518e20e..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_tooltip_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_elevation_window_940.png b/hub/apps/design/signature-experiences/images/layering_elevation_window_940.png deleted file mode 100644 index 364351dce6..0000000000 Binary files a/hub/apps/design/signature-experiences/images/layering_elevation_window_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/layering_layeringmain1.svg b/hub/apps/design/signature-experiences/images/layering_layeringmain1.svg deleted file mode 100644 index a26c7d800f..0000000000 --- a/hub/apps/design/signature-experiences/images/layering_layeringmain1.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/layering_layeringmain2.svg b/hub/apps/design/signature-experiences/images/layering_layeringmain2.svg deleted file mode 100644 index 360a79f604..0000000000 --- a/hub/apps/design/signature-experiences/images/layering_layeringmain2.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/materials_acrylic_hero_1880.png b/hub/apps/design/signature-experiences/images/materials_acrylic_hero_1880.png deleted file mode 100644 index a319e85dcb..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_acrylic_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_acrylic_hero_626.png b/hub/apps/design/signature-experiences/images/materials_acrylic_hero_626.png deleted file mode 100644 index 31e71174f7..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_acrylic_hero_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_acrylic_hero_940.png b/hub/apps/design/signature-experiences/images/materials_acrylic_hero_940.png deleted file mode 100644 index 3b3b609429..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_acrylic_hero_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_mica_hero_1880.png b/hub/apps/design/signature-experiences/images/materials_mica_hero_1880.png deleted file mode 100644 index 14680192f4..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_mica_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_mica_hero_626.png b/hub/apps/design/signature-experiences/images/materials_mica_hero_626.png deleted file mode 100644 index 95e3be6ed8..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_mica_hero_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_mica_hero_940.png b/hub/apps/design/signature-experiences/images/materials_mica_hero_940.png deleted file mode 100644 index 0900f6fae9..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_mica_hero_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_smoke_hero_1880.png b/hub/apps/design/signature-experiences/images/materials_smoke_hero_1880.png deleted file mode 100644 index 0c8db0820f..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_smoke_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_smoke_hero_626.png b/hub/apps/design/signature-experiences/images/materials_smoke_hero_626.png deleted file mode 100644 index 0163230e78..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_smoke_hero_626.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/materials_smoke_hero_940.png b/hub/apps/design/signature-experiences/images/materials_smoke_hero_940.png deleted file mode 100644 index 40198b5d1f..0000000000 Binary files a/hub/apps/design/signature-experiences/images/materials_smoke_hero_940.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-adaptive.gif b/hub/apps/design/signature-experiences/images/motion-adaptive.gif deleted file mode 100644 index c431943730..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-adaptive.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-adaptive.png b/hub/apps/design/signature-experiences/images/motion-adaptive.png deleted file mode 100644 index 70d213c500..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-adaptive.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-animated-icons.gif b/hub/apps/design/signature-experiences/images/motion-animated-icons.gif deleted file mode 100644 index 52995afe9d..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-animated-icons.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-animated-icons.png b/hub/apps/design/signature-experiences/images/motion-animated-icons.png deleted file mode 100644 index e81882372e..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-animated-icons.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-connected-animations.gif b/hub/apps/design/signature-experiences/images/motion-connected-animations.gif deleted file mode 100644 index 977a0c385a..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-connected-animations.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-connected-animations.png b/hub/apps/design/signature-experiences/images/motion-connected-animations.png deleted file mode 100644 index ff5bbb05eb..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-connected-animations.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-consistent.gif b/hub/apps/design/signature-experiences/images/motion-consistent.gif deleted file mode 100644 index e20563a90b..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-consistent.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-consistent.png b/hub/apps/design/signature-experiences/images/motion-consistent.png deleted file mode 100644 index c64735d7f2..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-consistent.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-light-effortless.gif b/hub/apps/design/signature-experiences/images/motion-light-effortless.gif deleted file mode 100644 index c8cc772381..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-light-effortless.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-light-effortless.png b/hub/apps/design/signature-experiences/images/motion-light-effortless.png deleted file mode 100644 index 0ae91bb97c..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-light-effortless.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-minimize-restore.gif b/hub/apps/design/signature-experiences/images/motion-minimize-restore.gif deleted file mode 100644 index bd699d98dc..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-minimize-restore.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-minimize-restore.png b/hub/apps/design/signature-experiences/images/motion-minimize-restore.png deleted file mode 100644 index fe76c5673d..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-minimize-restore.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-page-transitions.gif b/hub/apps/design/signature-experiences/images/motion-page-transitions.gif deleted file mode 100644 index 0d0a24d23d..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-page-transitions.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-page-transitions.png b/hub/apps/design/signature-experiences/images/motion-page-transitions.png deleted file mode 100644 index 8fbc81b4f1..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-page-transitions.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-resourceful.gif b/hub/apps/design/signature-experiences/images/motion-resourceful.gif deleted file mode 100644 index f7f05ed43e..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-resourceful.gif and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/motion-resourceful.png b/hub/apps/design/signature-experiences/images/motion-resourceful.png deleted file mode 100644 index 320d76006d..0000000000 Binary files a/hub/apps/design/signature-experiences/images/motion-resourceful.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/principles_hero_1880.png b/hub/apps/design/signature-experiences/images/principles_hero_1880.png deleted file mode 100644 index e7950bdf3b..0000000000 Binary files a/hub/apps/design/signature-experiences/images/principles_hero_1880.png and /dev/null differ diff --git a/hub/apps/design/signature-experiences/images/typography_body.svg b/hub/apps/design/signature-experiences/images/typography_body.svg deleted file mode 100644 index 288d247699..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_body.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_body_large.svg b/hub/apps/design/signature-experiences/images/typography_body_large.svg deleted file mode 100644 index 5a52d7d9a7..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_body_large.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_body_strong.svg b/hub/apps/design/signature-experiences/images/typography_body_strong.svg deleted file mode 100644 index f412e9972e..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_body_strong.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_caption.svg b/hub/apps/design/signature-experiences/images/typography_caption.svg deleted file mode 100644 index 680d04087f..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_caption.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_display.svg b/hub/apps/design/signature-experiences/images/typography_display.svg deleted file mode 100644 index c6f9a68b90..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_display.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_metrics.svg b/hub/apps/design/signature-experiences/images/typography_metrics.svg deleted file mode 100644 index 4f08fc4e14..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_metrics.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_opticalaxis.svg b/hub/apps/design/signature-experiences/images/typography_opticalaxis.svg deleted file mode 100644 index 997f2191ec..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_opticalaxis.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_quickbrownfox.svg b/hub/apps/design/signature-experiences/images/typography_quickbrownfox.svg deleted file mode 100644 index a887ee70d7..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_quickbrownfox.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_segoebold.svg b/hub/apps/design/signature-experiences/images/typography_segoebold.svg deleted file mode 100644 index 8cf869b9e5..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_segoebold.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_segoelight.svg b/hub/apps/design/signature-experiences/images/typography_segoelight.svg deleted file mode 100644 index 496ef87b1a..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_segoelight.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_segoeregular.svg b/hub/apps/design/signature-experiences/images/typography_segoeregular.svg deleted file mode 100644 index 0efe8cd026..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_segoeregular.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_segoesemibold.svg b/hub/apps/design/signature-experiences/images/typography_segoesemibold.svg deleted file mode 100644 index 6394514573..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_segoesemibold.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_segoesemilight.svg b/hub/apps/design/signature-experiences/images/typography_segoesemilight.svg deleted file mode 100644 index 7ffca1c400..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_segoesemilight.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_subtitle.svg b/hub/apps/design/signature-experiences/images/typography_subtitle.svg deleted file mode 100644 index 87f3c5c553..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_subtitle.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_title.svg b/hub/apps/design/signature-experiences/images/typography_title.svg deleted file mode 100644 index d57c7c61ef..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_title.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_title_large.svg b/hub/apps/design/signature-experiences/images/typography_title_large.svg deleted file mode 100644 index 4e85698bea..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_title_large.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hub/apps/design/signature-experiences/images/typography_typeramp.svg b/hub/apps/design/signature-experiences/images/typography_typeramp.svg deleted file mode 100644 index df2675719a..0000000000 --- a/hub/apps/design/signature-experiences/images/typography_typeramp.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/signature-experiences/layering.md b/hub/apps/design/signature-experiences/layering.md deleted file mode 100644 index b73d65aa6d..0000000000 --- a/hub/apps/design/signature-experiences/layering.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -description: How surfaces are arranged to create depth and hierarchy in Windows -title: Layering and elevation in Windows -ms.assetid: E00B6D9A-C8AA-4E6E-ADC4-13303AC290D9 -ms.date: 06/24/2021 -ms.topic: concept-article -keywords: windows 11, design, ui, uiux, layering, elevation, shadows -ms.localizationpriority: medium ---- - -# Elevation in Windows - -Windows 11 uses layering and elevation as its foundation for app hierarchy. Hierarchy communicates important information about how to navigate within an app while keeping the user's attention focused on the most important content. Layering and elevation are powerful visual cues that modernize experiences and help them feel coherent within Windows. - -> [!TIP] -> This article describes how the [Fluent Design language](https://fluent2.microsoft.design/) is applied to Windows apps. For more information, see [**Fluent Design - Elevation**](https://fluent2.microsoft.design/elevation). - -## Elevation - -![A variety of overlapping UI elements, each at a different elevation](images/layering_elevation_hero_1880.png) - -Elevation is the depth component of the spatial relationship one surface has to another with respect to their position on the desktop. When two or more objects occupy the same location on the screen, only the object with the highest elevation will be rendered at that location. - -Shadows and contour (outlines) are used on controls and surfaces to subtly communicate an object's elevation, and to help draw focus where needed within an experience. Windows 11 uses the following values to express elevation with shadow and contour. - -:::row::: - :::column::: - ![An application window](images/layering_elevation_window_940.png) - :::column-end::: - :::column span=""::: - **Window**
    Elevation value: 128
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![A modal dialog box](images/layering_elevation_dialog_940.png) - :::column-end::: - :::column span="1"::: - **Dialog**
    Elevation value: 128
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![A flyout menu](images/layering_elevation_flyout_940.png) - :::column-end::: - :::column span="1"::: - **Flyout**
    Elevation value: 32
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![A tooltip for a combo box](images/layering_elevation_tooltip_940.png) - :::column-end::: - :::column span="1"::: - **Tooltip**
    Elevation value: 16
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![A UI surface that contains several content areas](images/layering_elevation_card_940.png) - :::column-end::: - :::column span="1"::: - **Card**
    Elevation value: 8
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![A combo box](images/layering_elevation_control_940.png) - :::column-end::: - :::column span="1"::: - **Control**
    Elevation value: 2
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![An empty UI surface](images/layering_elevation_layer_940.png) - :::column-end::: - :::column span="1"::: - **Layer**
    Elevation value: 1
    Stroke width: 1 - :::column-end::: -:::row-end::: - - - -Controls in Windows 11 vary their elevation and contour to indicate state. The intensity of the rendered shadow changes depending on the theme at parity of value. - -:::row::: - :::column::: - ![A button in the default state](images/layering_elevation_control_rest_940.png) - :::column-end::: - :::column span="1"::: - **Rest**
    Elevation value: 2
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![A button in the hover state](images/layering_elevation_control_hover_940.png) - :::column-end::: - :::column span="1"::: - **Hover**
    Elevation value: 2
    Stroke width: 1 - :::column-end::: -:::row-end::: - -:::row::: - :::column::: - ![A button in the pressed state](images/layering_elevation_control_pressed_940.png) - :::column-end::: - :::column span="1"::: - **Pressed**
    Elevation value: 1
    Stroke width: 1 - :::column-end::: -:::row-end::: - -## Layering - -:::row::: - :::column::: - ![An application window with a single content area](images/layering_LayeringMain1.svg) - :::column-end::: - :::column::: - ![An application window with multiple content areas](images/layering_LayeringMain2.svg) - :::column-end::: -:::row-end::: - -Layering is the concept of overlapping one surface with another, creating two or more visually distinguished areas within the same application. - -> [!NOTE] -> Layering in Windows is tightly coupled with the use of materials. Please reference the [materials section](materials.md) for specific guidance on how those are applied. - -Windows 11 uses a two-layer system for applications. These two layers create hierarchy and provide clarity, keeping users focused on what's most important. - -- The **base** layer is an app's foundation. It is the bottommost layer of every app, and contains controls related to app menus, commands, and navigation. -- The **content** layer focuses the user on the app's central experience. The content layer may be on contiguous element, or separated into cards that segment content. diff --git a/hub/apps/design/signature-experiences/materials.md b/hub/apps/design/signature-experiences/materials.md deleted file mode 100644 index 156fdb3404..0000000000 --- a/hub/apps/design/signature-experiences/materials.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: The materials Windows uses to create app hierarchy -title: Materials used in Windows apps -ms.assetid: 912C88C8-2382-465C-B4AB-902BCFAED48D -ms.date: 09/16/2024 -ms.topic: article -keywords: windows 11, design, ui, uiux, materials, acrylic, mica, smoke -ms.localizationpriority: medium ---- - -# Materials in Windows - -Materials are visual effects applied to UX surfaces that resemble real life artifacts. Windows uses two primary types of materials: occluding and transparent. Occluding materials, like _acrylic_ and _mica_, are used as base layers beneath interactive UI controls. Transparent materials such as _smoke_ are used to highlight immersive surfaces. - -Mica, Acrylic, and Smoke each have a specific purpose in how they are used throughout Windows. - -> [!TIP] -> This article describes how the [Fluent Design language](https://fluent2.microsoft.design/) is applied to Windows apps. For more information, see [**Fluent Design - Material**](https://fluent2.microsoft.design/material). - -## Acrylic - -![A semi-transparent UI surface made of acrylic](images/materials_acrylic_hero_1880.png) - -[Acrylic](../style/acrylic.md) is a semi-transparent material that replicates the effect of frosted glass. In Windows 11, acrylic has been updated to be brighter and more translucent, allowing for a stronger contextual relationship with the visuals behind it. Acrylic is used only for transient, light-dismiss surfaces such as flyouts and context menus. - -Acrylic is mode aware; it supports both light and dark mode. - -## Mica - -![Several UI surfaces made of Mica demonstrating how Mica is subtly tinted based on the user's desktop color](images/materials_mica_hero_1880.png) - -[Mica](../style/mica.md) is a new opaque material introduced in Windows 11. Mica surfaces are subtly tinted with the user's desktop background color. - -Mica is mode aware; it supports both light and dark modes. Mica also indicates window focus with active and inactive states as a built in feature. - -## Smoke - -![A modal dialog hovering above a window dimmed by smoke](images/materials_smoke_hero_1880.png) - -Smoke emphasizes an important UI surface by dimming the surfaces beneath so that they recede into the background. Smoke is used to signal blocking interaction below a modal UI such as a dialog. - -Smoke is not mode aware; it is always translucent black in both light and dark mode. diff --git a/hub/apps/design/signature-experiences/motion.md b/hub/apps/design/signature-experiences/motion.md deleted file mode 100644 index 0cb774c097..0000000000 --- a/hub/apps/design/signature-experiences/motion.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -description: An overview of where and how motion is used in Windows -title: Motion in Windows -ms.date: 07/24/2024 -ms.topic: article -keywords: windows 11, design, ui, uiux, motion -ms.localizationpriority: medium ---- - -# Motion in Windows - -Motion describes the way the interface animates and responds to user interaction. Motion in Windows is reactive, direct, and context appropriate. It provides feedback to user input and reinforces spatial paradigms that support way-finding. - -:::image type="content" source="images/motion-resourceful.gif" alt-text="An animated image that shows several examples of motion in the Windows UI."::: - -> [!TIP] -> This article describes how the [Fluent Design language](https://fluent2.microsoft.design/) is applied to Windows apps. For more information, see [**Fluent Design - Motion**](https://fluent2.microsoft.design/motion). - -## Motion principles - -These principles guide the use of motion in Windows. - -### Connected: Elements of actions connect seamlessly - -Elements that change position and size should visually connect from one state to another, even if they aren't connected under the hood. Users are guided to follow elements going from point to point, lowering the cognitive load of static state changes. - -_Example:_ When a window transitions between floating, snapped, and maximized, it always feels like the same window. - -:::image type="content" source="images/motion-light-effortless.png" lightbox="images/motion-light-effortless.gif" alt-text="An animated image that shows a Microsoft Edge window transitioning between floating, snapped, and maximized views."::: - -> [!TIP] -> To improve accessibility and readability, this page uses still images in the default view. You can click an image to see the animated version. - -### Consistent: Elements should behave in similar ways when sharing entry points - -Surfaces that share the same UI entry point should invoke and dismiss the same way to bring consistency to interactions. Each transition should respect the timing, easing, and direction of other elements so a surface feels cohesive. - -_Example:_ All taskbar flyouts slide up when invoked, and slide down when dismissed. - -:::image type="content" source="images/motion-consistent.png" lightbox="images/motion-consistent.gif" alt-text="An animated image that shows several Windows UI surfaces in succession, such as the start menu and search pane. Each surface slides up from the taskbar when invoked, and slides down when dismissed, in a consistent manner."::: - -_Click the image to see it animated._ - -### Responsive: The system responds and adapts to user input and choices - -Clear indicators show the system recognizes and adapts gracefully to different input, postures, and orientations. Apps should build on OS behaviors to feel responsive, alive, and aid usage depending on input methods. - -_Example:_ Taskbar icons spread out when keyboards are detached. Window edges invoke a different visual depending on cursor or touch input. - -:::image type="content" source="images/motion-adaptive.png" lightbox="images/motion-adaptive.gif" alt-text="An animated image. On the left, taskbar icons spread out when a keyboard is detached. On the right, window edges have different visual effects when manipulated with the cursor or touch input."::: - -_Click the image to see it animated._ - -### Delightful: Unexpected moments of joy with purpose - -Motion adds personality and energy to the experience in order to transform simple actions into moments of delight. These moments are always brief and fleeting, and help reinforce user actions. - -_Example:_ Minimizing a window causes an app icon to bounce down, while restoring bounces an app icon up. - -:::image type="content" source="images/motion-minimize-restore.png" lightbox="images/motion-minimize-restore.gif" alt-text="An animated image that shows an app icon bounce down when the window is minimized, and bounce up when the window is restored."::: - -_Click the image to see it animated._ - -### Resourceful: Utilizes existing controls to bring consistency where possible - -Avoid custom animations where possible. Use animation resources like [WinUI](../../winui/index.md) controls for page transitions, in-page focus, and micro interactions. If you can't use WinUI controls, mimic existing OS behaviors based on where the app entry point lives. - -_Example:_ [Page transitions](../motion/page-transitions.md), [connected animations](../motion/connected-animation.md), and [animated icons](../controls/animated-icon.md) are the recommended WinUI controls that add delightful and necessary motion to apps. - -:::image type="content" source="images/motion-resourceful.png" lightbox="images/motion-resourceful.gif" alt-text="An animated image that shows examples of page transitions, connected animations, and animated icons in the Windows UI."::: - -_Click the image to see it animated._ - -## Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see Motion examples in action](winui3gallery://category/Motion) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -## Usage - -### Animation properties - -Windows motion is fast, direct, and context-appropriate. Timing and easing curves are adjusted based on the purpose of the animation to create a coherent experience. - -| Purpose | Definition | Ease | Timing | Used For | -|--|--|--|--|--| -| Direct Entrance | Fast – In| Cubic-bezier(0,0,0,1) | 167, 250, 333 | Position, Scale, Rotation| -| Existing Elements | Point to Point | Cubic-bezier(0.55,0.55,0,1) | 167, 250, 333ms | Position, Scale, Rotation| -| Direct Exit | Fast – Out | Cubic-bezier(0,0,0,1) |167ms| Position, Scale, Rotation (ALWAYS combine with fade out) | -| Gentle Exit | Soft – Out | Cubic-bezier(1,0,1,1) | 167ms | Position, Scale | -| Bare Minimum | Fade – In + Out | Linear | 83ms | Opacity | -| Strong Entrance | Elastic In (3 Keyframes) | (3 values below) | (3 values below) | Position, Scale | -| | Keyframe 1 | Cubic-Bezier(0.85, 0, 0, 1) | 167ms | | -| | Keyframe 2 | Cubic-Bezier(0.85, 0, 0.75, 1) | 167ms | | -| | Keyframe 3 | Cubic-Bezier(0.85, 0, 0, 1) | 333ms | | - -### Controls - -This release of Windows introduces purposeful micro-interactions in [WinUI](../../winui/index.md) controls. Add these controls to your app to help better organize information, and help your app's users transition from page to page, layer to layer, and state to state of an interaction. - -#### Page Transition: Page-to-page transitions within the same surface - -Use [page transitions](../motion/page-transitions.md) to transition smoothly from page to page, and configure animation directions to respect the flow of an app. - -Page transitions guide your user's eyes to incoming and outgoing content, lowering cognitive load. - -:::image type="content" source="images/motion-page-transitions.png" lightbox="images/motion-page-transitions.gif" alt-text="An animated image that shows navigation between several pages in the Windows Settings app. Top-level pages slide up from the bottom. When navigating between top-level and sub-pages, pages slide left and right."::: - -_Click the image to see it animated._ - -#### Connected Animation: Layer-to-layer transitions within the same page - -Use [connected animations](../motion/connected-animation.md) to highlight specific pieces of information within a page or surface, while retaining context. - -Connected animations give focus to selected elements, and seamlessly transition between the focused and non-focused states. - -:::image type="content" source="images/motion-connected-animations.png" lightbox="images/motion-connected-animations.gif" alt-text="An animated image of the Microsoft Store app that shows an image in a page that animates to a zoomed-in view of the image."::: - -_Click the image to see it animated._ - -#### Animated Icon: Adds delight and reveals information through micro interactions - -Use [animated icons](../controls/animated-icon.md) to implement lightweight, vector-based icons and illustrations with motion using [Lottie](/windows/communitytoolkit/animations/lottie) animations. - -Animated icons draw attention to specific entry points, provide feedback from state to state, and add delight to an interaction. - -:::image type="content" source="images/motion-animated-icons.png" lightbox="images/motion-animated-icons.gif" alt-text="An animated image that shows a grid of various examples of animated icon controls."::: - -_Click the image to see it animated._ diff --git a/hub/apps/design/signature-experiences/typography.md b/hub/apps/design/signature-experiences/typography.md deleted file mode 100644 index 5265b681cd..0000000000 --- a/hub/apps/design/signature-experiences/typography.md +++ /dev/null @@ -1,237 +0,0 @@ ---- -description: Segoe UI Variable and the way Windows uses typography to communicate information -title: Typography in Windows -ms.assetid: D12BA18B-1281-4057-9716-2A6D420FAE1B -ms.date: 06/24/2021 -ms.topic: article -keywords: windows 11, design, ui, uiux, typography, segoe, segoe ui variable -ms.localizationpriority: medium ---- - -# Typography in Windows - -![Several words rendered in Segoe UI Variable](images/typography_QuickBrownFox.svg) - -As the visual representation of language, typography's main task is to communicate information. The Windows type system helps you create structure and hierarchy in your content in order to maximize legibility and readability in your UI. - -[Segoe UI Variable](..\downloads\index.md#fonts) is the new system font for Windows. It is a refreshed take on the classic Segoe and uses variable font technology to dynamically provide great legibility at very small sizes, and improved outlines at display sizes. - -> [!TIP] -> This article describes how the [Fluent Design language](https://fluent2.microsoft.design/) is applied to Windows apps. For more information, see [**Fluent Design - Typography**](https://fluent2.microsoft.design/typography). - -## Using Segoe Fluent Variable - -Segoe UI Variable supports two axes for finer control of text: **weight** and **optical size**. - -- The weight axis (`wght`) is incremental with weights from Thin (100) to Bold (700). -- The optical size axis (`opsz`) is automatic and on by default. It controls the shape and size of the counters in the font, to prioritize legibility at the small sizes and personality at the large sizes (for optical scaling from 8pt to 36pt). - -When using XAML common controls, the Segoe UI Variable font will be selected by default for supported [languages](#languages). When this font or another variable font with an optical axis is used, the optical size will automatically match the requested font-size. When using HTML, optical scaling is also automatic, but you will need to specify the Segoe UI Variable font in CSS. - -![The word 'Segoe' rendered in Segoe UI Variable with several aspects of the typeface highlighted](images/typography_Metrics.svg) - -### Weights - -| Weight name | Weight axis value | Visual | -|---------------|:-----------------:|--------| -| **Light** | 300 | ![The word 'Segoe' rendered in Segoe UI Variable light](images/typography_SegoeLight.svg) | -| **Semilight** | 350 | ![The word 'Segoe' rendered in Segoe UI Variable semilight](images/typography_SegoeSemiLight.svg) | -| **Regular** | 400 | ![The word 'Segoe' rendered in Segoe UI Variable regular](images/typography_SegoeRegular.svg) | -| **Semibold** | 600 | ![The word 'Segoe' rendered in Segoe UI Variable semibold](images/typography_SegoeSemiBold.svg) | -| **Bold** | 700 | ![The word 'Segoe' rendered in Segoe UI Variable bold](images/typography_SegoeBold.svg) | - -### Optical axis - -![A lower case letter a rendered in Segoe UI Variable with outlines of the different shapes it can have based on the context in which it is being rendered](images/typography_OpticalAxis.svg) - -## Typography best practices in Windows 11 - -Windows 11 uses Segoe UI Variable with the following attributes based on the context in which the text is being displayed. - -| Attribute | Value | Notes | -|--------------------|-----------------------------|-------------| -| **Weight** | Regular, Semibold | Use regular weight for most text, use Semibold for titles | -| **Alignment** | Left, Center | Align left by default, Align center only in rare cases such as text below icons | -| **Minimum values** | 14px Semibold, 12px Regular | Text smaller than these sizes and weights are illegible in some languages | -| **Casing** | Sentence case | Use sentence casing for all UI text, including titles | -| **Truncation** | Ellipses and clipping | Use ellipses in most cases; clipping is only used in rare cases | - -## Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see Typography principles in action](winui3gallery:/item/Typography) - -> The **WinUI 3 Gallery** app includes interactive examples of most WinUI 3 controls, features, and functionality. Get the app from the [Microsoft Store](https://apps.microsoft.com/detail/9P3JFPWWDZRC) or get the source code on [GitHub](https://github.com/microsoft/WinUI-Gallery) - -## Typography in Windows Apps - -![hero image](../style/images/header-typography.svg) - -As the visual representation of language, typography's main task is to communicate information. Its style should never get in the way of that goal. In this article, we'll discuss how to style typography in your Windows app to help users understand content easily and efficiently. - -### Font - -You should use one font throughout your app's UI, and we recommend sticking with the default font for Windows apps, **Segoe UI Variable**. It's designed to maintain optimal legibility across sizes and pixel densities and offers a clean, light, and open aesthetic that complements the content of the system. - -![Sample text of Segoe UI Variable font.](../style/images/type/segoe-sample.svg) - -To display non-English languages or to select a different font for your app, please see [Languages](#languages) and [Fonts](#fonts) for our recommended fonts for Windows apps. - -### Size and scaling - -Font sizes in XAML apps automatically scale on all devices. The scaling algorithm ensures that a 24 px font on a large screen 10 feet away is just as legible as a 24 px font on a small screen that's a few inches away. - -![viewing distances for different devices.](../style/images/type/scaling-chart.svg) - -Because of how the scaling system works, you're designing in effective pixels, not actual physical pixels, and you shouldn't have to alter font sizes for different screens sizes or resolutions. - -### Hierarchy - -:::row::: - :::column::: -Users rely on visual hierarchy when scanning a page: headers summarize content, and body text provides more detail. To create a clear visual hierarchy in your app, follow the Windows type ramp. - :::column-end::: - :::column::: -![Screenshot of three lines of text where the font size gets smaller from one line to the next.](../style/images/type/type-hierarchy.svg) - :::column-end::: -:::row-end::: - -### Type ramp - -The Windows type ramp establishes crucial relationships between the type styles on a page, helping users read content easily. All sizes are in effective pixels and are optimized for Windows apps running on all screen sizes. - -Windows 11 uses the following values for various types of text in the UI. - -| Example | Weight | Size/line height | -|-------------------------------------------------------------------|------------------|------------------| -| ![Example of caption text](images/typography_caption.svg)| Small | 12/16 epx | -| ![Example of body text](images/typography_body.svg) | Text | 14/20 epx | -| ![Example of body strong text](images/typography_body_strong.svg)| Text semibold | 14/20 epx | -| ![Example of body large text](images/typography_body_large.svg)| Text | 18/24 epx | -| ![Example of subtitle text](images/typography_subtitle.svg)| Display semibold | 20/28 epx | -| ![Example of title text](images/typography_title.svg)| Display semibold | 28/36 epx | -| ![Example of title large text](images/typography_title_large.svg)| Display semibold | 40/52 epx | -| ![Example of display text](images/typography_display.svg)| Display semibold | 68/92 epx | - -Check out the guidance on using the [XAML type ramp](../../develop/platform/xaml/xaml-theme-resources.md#the-xaml-type-ramp) for more details. - -### Alignment - -The default [TextAlignment](/uwp/api/windows.ui.xaml.textalignment) is Left, and in most instances, flush-left and ragged right provides consistent anchoring of the content and a uniform layout. For RTL languages, see [Adjusting layout and fonts to support globalization](../globalizing/adjust-layout-and-fonts--and-support-rtl.md). - -![Shows flush-left text.](../style/images/type/alignment.svg) - -```xaml - -``` - -### Character count - -:::row::: - :::column::: -![Fourth screenshot of a green bar that has a green check mark and the word Do in it.](../style/images/do.svg) -Keep to 50–60 letters per line for ease of reading. - :::column-end::: - :::column::: -![don't](../style/images/dont.svg) -Don't use fewer than 20 characters or more than 60 characters per line as this is difficult to read. - :::column-end::: -:::row-end::: - -### Clipping and ellipses - -When the amount of text extends beyond the space available, we recommend clipping the text and inserting ellipses [...], which is the default behavior of most [UWP text controls](../controls/text-controls.md). - -![Shows a device frame with some text clipping.](../style/images/type/clipping.svg) - -```xaml - -``` - -:::row::: - :::column::: -![Fifth screenshot of a green bar that has a green check mark and the word Do in it.](../style/images/do.svg) -Clip text, and wrap if multiple lines are enabled. - :::column-end::: - :::column::: -![don't](../style/images/dont.svg) -Don't use ellipses to avoid visual clutter. - :::column-end::: -:::row-end::: - -> [!NOTE] -> If containers are not well-defined (for example, no differentiating background color), or when there is a link to see more text, then use ellipses. - -## Languages - -Segoe UI Variable is our font for English, European languages, Greek, and Russian. For other languages, see the following recommendations. - -### Globalizing/localizing fonts - -Use the [LanguageFont font-mapping APIs](/uwp/api/windows.globalization.fonts.languagefont) for programmatic access to the recommended font family, size, weight, and style for a particular language. The LanguageFont object provides access to the correct font info for various categories of content including UI headers, notifications, body text, and user-editable document body fonts. For more info, see [Adjusting layout and fonts to support globalization](../globalizing/adjust-layout-and-fonts--and-support-rtl.md). - -### Fonts for non-Latin languages - -| Font-family | Styles | Notes | -|---------|---------|---------| -| Ebrima | Regular, Bold | User-interface font for African scripts (ADLaM, Ethiopic, N'Ko, Osmanya, Tifinagh, Vai). | -| Gadugi | Regular, Bold | User-interface font for North American scripts (Canadian Syllabics, Cherokee, Osage). | -| Leelawadee UI

    | Regular, Semilight, Bold | User-interface font for Southeast Asian scripts (Buginese, Khmer, Lao, Thai). | -| Malgun Gothic

    | Regular | User-interface font for Korean. | -| Microsoft JhengHei UI

    | Regular, Bold, Light | User-interface font for Traditional Chinese. | -| Microsoft YaHei UI

    | Regular, Bold, Light | User-interface font for Simplified Chinese. | -| Myanmar Text

    | Regular | Fallback font for Myanmar script. | -| Nirmala UI

    | Regular, Semilight, Bold | User-interface font for South Asian scripts (Bangla, Chakma, Devanagari, Gujarati, Gurmukhi, Kannada, Malayalam, Meetei Mayek, Odia, Ol Chiki, Sinhala, Sora Sompeng, Tamil, Telugu). | -| Segoe UI

    | Regular, Italic, Light Italic, Black Italic, Bold, Bold Italic, Light, Semilight, Semibold, Black | User-interface font for Arabic, Armenian, Georgian, and Hebrew. | -| SimSun

    | Regular | A legacy Chinese UI font. | -| Yu Gothic UI

    | Light, Semilight, Regular, Semibold, Bold | User-interface font for Japanese. | - -## Fonts - -### Sans-serif fonts - -Sans-serif fonts are a great choice for headings and UI elements. - -| Font-family | Styles | Notes | -|---------|---------|---------| -| Arial | Regular, Italic, Bold, Bold Italic, Black | Supports European and Middle Eastern scripts (Latin, Greek, Cyrillic, Arabic, Armenian, and Hebrew). Black weight supports European scripts only. | -| Calibri | Regular, Italic, Bold, Bold Italic, Light, Light Italic | Supports European and Middle Eastern scripts (Latin, Greek, Cyrillic, Arabic and Hebrew). Arabic available in the uprights only. | -| Consolas | Regular, Italic, Bold, Bold Italic | Fixed width font that supports European scripts (Latin, Greek and Cyrillic). | -| Segoe UI | Regular, Italic, Light Italic, Black Italic, Bold, Bold Italic, Light, Semilight, Semibold, Black | User-interface font for European and Middle East scripts (Arabic, Armenian, Cyrillic, Georgian, Greek, Hebrew, Latin), and also Lisu script. | -| Selawik | Regular, Semilight, Light, Bold, Semibold | An open-source font that's metrically compatible with Segoe UI, intended for apps on other platforms that don't want to bundle Segoe UI. [Get Selawik on GitHub](https://github.com/Microsoft/Selawik). | - -### Serif fonts - -Serif fonts are good for presenting large amounts of text. - -| Font-family | Styles | Notes | -|---------|---------|---------| -| Cambria | Regular | Serif font that supports European scripts (Latin, Greek, Cyrillic). | -| Courier New | Regular, Italic, Bold, Bold Italic | Serif fixed width font that supports European and Middle Eastern scripts (Latin, Greek, Cyrillic, Arabic, Armenian, and Hebrew). | -| Georgia | Regular, Italic, Bold, Bold Italic | Supports European scripts (Latin, Greek and Cyrillic). | -| Times New Roman | Regular, Italic, Bold, Bold Italic | Legacy font that supports European scripts (Latin, Greek, Cyrillic, Arabic, Armenian, Hebrew). | - -### Variable fonts - -Variable fonts are good for precisely controlling the appearance of text. - -| Font-family | Axes | Notes | -|---------|---------|---------| -| Bahnschrift | Weight, Width | Variable font that supports Latin, Greek, and Cyrillic. | -| Segoe UI Variable | Weight, Optical Size | Variable font that supports Latin, Greek, and Cyrillic. | - -### Symbols and icons - -| Font-family | Styles | Notes | -|---------|---------|---------| -| Segoe MDL2 Assets | Regular | User-interface font for app icons. For more info, see the [Segoe Fluent Icons font](../style/segoe-fluent-icons-font.md) article. | -| Segoe UI Emoji | Regular | User-interface font for Emoji. | -| Segoe UI Symbol | Regular | Fallback font for symbols. | - -## Related articles - -- [Text controls](../controls/text-controls.md) -- [XAML theme resources](../../develop/platform/xaml/xaml-theme-resources.md#the-xaml-type-ramp) -- [XAML styles](../../develop/platform/xaml/xaml-styles.md) -- [Microsoft Typography](/typography/) -- [Variable Fonts](/typography/develop/font-variations) diff --git a/hub/apps/design/style/acrylic.md b/hub/apps/design/style/acrylic.md deleted file mode 100644 index eb0d62e08f..0000000000 --- a/hub/apps/design/style/acrylic.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -description: Learn to use acrylic, a type of brush that creates a translucent texture to add depth and help establish a visual hierarchy. -title: Acrylic material -template: detail.hbs -ms.date: 07/15/2024 -ms.topic: article -keywords: windows 10 -doc-status: Published -ms.localizationpriority: medium ---- -# Acrylic material - -![hero image](images/header-acrylic.svg) - -Acrylic is a type of [Brush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.brush) that creates a translucent texture. You can apply acrylic to app surfaces to add depth and help establish a visual hierarchy. - -> **Important APIs**: [AcrylicBrush class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.acrylicbrush), [Background property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.background), [Window.SystemBackdrop property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.window.systembackdrop), [DesktopAcrylicBackdrop class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.desktopacrylicbackdrop) - -:::row::: - :::column::: -Acrylic in light theme -![Acrylic in light theme](images/acrylic-light-theme-base.png) - :::column-end::: - :::column::: -Acrylic in dark theme -![Acrylic in dark theme](images/acrylic-dark-theme-base.png) - :::column-end::: -:::row-end::: - -## Acrylic and the Fluent Design System - - The Fluent Design System helps you create modern, bold UI that incorporates light, depth, motion, material, and scale. Acrylic is a Fluent Design System component that adds physical texture (material) and depth to your app. To learn more, see [Fluent Design - Material](https://fluent2.microsoft.design/material). - -## Acrylic blend types - -Acrylic's most noticeable characteristic is its transparency. There are two acrylic blend types that change what's visible through the material: - -- **Background acrylic** reveals the desktop wallpaper and other windows that are behind the currently active app, adding depth between application windows while celebrating the user's personalization preferences. -- **In-app acrylic** adds a sense of depth within the app frame, providing both focus and hierarchy. - - ![Background acrylic](images/background-acrylic-dark-theme.png) - - ![In-app acrylic](images/app-acrylic-dark-theme.png) - - Avoid layering multiple acrylic surfaces: multiple layers of background acrylic can create distracting optical illusions. - -## When to use acrylic - -Consider the following usage patterns to decide how best to incorporate acrylic into your app. - -### Transient surfaces - -- Use **background acrylic** for transient UI elements. - -For apps with context menus, flyouts, non-modal popups, or light-dismiss panes, we recommend that you use background acrylic, especially if these surfaces draw outside the frame of the main app window. Using acrylic in transient scenarios helps maintain a visual relationship with the content that triggered the transient UI. - -![The desktop background showing through an open context menu using background acrylic](images/acrylic-transient-context-menu.png) - -Many XAML controls draw acrylic by default. [MenuFlyout](../controls/menus.md), [AutoSuggestBox](../controls/auto-suggest-box.md), [ComboBox](../controls/combo-box.md), and similar controls with light-dismiss popups all use acrylic while open. - -### Supporting UI and vertical panes - -- Use **in-app acrylic** for supporting UI, such as on surfaces that may overlap content when scrolled or interacted with. - -If you are using in-app acrylic on navigation surfaces, consider extending content beneath the acrylic pane to improve the flow in your app. Using [NavigationView](../controls/navigationview.md) will do this for you automatically. However, to avoid creating a striping effect, try not to place multiple pieces of acrylic edge-to-edge - this can create an unwanted seam between the two blurred surfaces. Acrylic is a tool to bring visual harmony to your designs, but when used incorrectly can result in visual noise. - -For vertical panes or surfaces that help section off content of your app, we recommend you use an opaque background instead of acrylic. If your vertical panes open on top of content, like in NavigationView's **Compact** or **Minimal** modes, we suggest you use in-app acrylic to help maintain the page's context when the user has this pane open. - -> [!NOTE] -> Rendering acrylic surfaces is GPU-intensive, which can increase device power consumption and shorten battery life. Acrylic effects are automatically disabled when a device enters Battery Saver mode. Users can disable acrylic effects for all apps by turning off _Transparency effects_ in Settings > Personalization > Colors. - -## Usability and adaptability - -Acrylic automatically adapts its appearance for a wide variety of devices and contexts. - -In High Contrast mode, users continue to see the familiar background color of their choosing in place of acrylic. In addition, both background acrylic and in-app acrylic appear as a solid color: - -- When the user turns off _Transparency effects_ in Settings > Personalization > Colors. -- When Battery Saver mode is activated. -- When the app runs on low-end hardware. - -In addition, only background acrylic will replace its translucency and texture with a solid color: - -- When an app window on desktop deactivates. -- When the app is running on Xbox, HoloLens, or in tablet mode. - -### Legibility considerations - -It's important to ensure that any text your app presents to users meets contrast ratios (see [Accessible text requirements](../accessibility/accessible-text-requirements.md)). We've optimized the acrylic resources such that text meets contrast ratios on top of acrylic. We don't recommend placing accent-colored text on your acrylic surfaces because these combinations are likely to not pass minimum contrast ratio requirements at the default 14px font size. Try to avoid placing [hyperlinks](../controls/hyperlinks.md) over acrylic elements. Also, if you choose to customize the acrylic tint color or opacity level, keep the impact on legibility in mind. - -## Apply acrylic in your app - -> [!IMPORTANT] -> How you apply background acrylic differs between WinUI 3 and WinUI 2/UWP. -> -> **WinUI 2/UWP**: The AcrylicBrush class has a [BackgroundSource](/windows/winui/api/microsoft.ui.xaml.media.acrylicbrush.backgroundsource) property that specifies whether you want background or in-app acrylic. You use an AcrylicBrush to apply both types of acrylic. See the AcrylicBrush classes for specific information and examples: [Microsoft.UI.Xaml.Media.AcrylicBrush (WinUI 2)](/windows/winui/api/microsoft.ui.xaml.media.acrylicbrush), [Windows.UI.Xaml.Media.AcrylicBrush (UWP)](/uwp/api/windows.ui.xaml.media.acrylicbrush). -> -> **WinUI 3**: The [AcrylicBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.acrylicbrush) class only supports in-app acrylic. You use the [DesktopAcrylicBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.desktopacrylicbackdrop) class to apply background acrylic. - -### Background acrylic - -To apply background acrylic in a WinUI 3 app, set the element's `SystemBackdrop` property to an instance of [DesktopAcrylicBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.desktopacrylicbackdrop). For more info, see [Apply Mica or Acrylic materials in desktop apps for Windows 11](/windows/apps/windows-app-sdk/system-backdrop-controller). - -These elements have a `SystemBackdrop` property: - -- [CommandBarFlyoutCommandBar.SystemBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.commandbarflyoutcommandbar.systembackdrop) -- [ContentIsland.SystemBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.content.contentisland.systembackdrop) -- [DesktopWindowXamlSource.SystemBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.hosting.desktopwindowxamlsource.systembackdrop) -- [FlyoutBase.SystemBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.flyoutbase.systembackdrop) -- [MenuFlyoutPresenter.SystemBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.menuflyoutpresenter.systembackdrop) -- [Popup.SystemBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.popup.systembackdrop) -- [Window.SystemBackdrop](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.window.systembackdrop) - -### In-app acrylic - -You can apply in-app acrylic to your app's surfaces using a XAML [AcrylicBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.acrylicbrush) or predefined `AcrylicBrush` theme resources. - -WinUI includes a collection of brush theme resources that respect the app's theme and fall back to solid colors as needed. To paint a specific surface, apply one of the theme resources to element backgrounds just as you would apply any other brush resource. - -```xaml - -``` - -> [!NOTE] ->You can view these resources in the [AcrylicBrush theme resources file, in the microsoft-ui-xaml GitHub repo](https://github.com/microsoft/microsoft-ui-xaml/blob/6aed8d97fdecfe9b19d70c36bd1dacd9c6add7c1/dev/Materials/Acrylic/AcrylicBrush_19h1_themeresources.xaml#L11). -> -> For WinUI 2, resources that include _Background_ in their names represent background acrylic, while _InApp_ refers to in-app acrylic. -> -> WinUI 3 includes the _Background_ resources for compatibility, but they behave the same as _InApp_ resources. - -#### Custom acrylic brush - -You may choose to add a color tint to your app's acrylic to show branding or provide visual balance with other elements on the page. To show color rather than grayscale, you'll need to define your own acrylic brushes using the following properties. - -- **TintColor**: the color/tint overlay layer. -- **TintOpacity**: the opacity of the tint layer. -- **TintLuminosityOpacity**: controls the amount of saturation that is allowed through the acrylic surface from the background. -- **BackgroundSource**: (WinUI 2/UWP only) the flag to specify whether you want background or in-app acrylic. -- **FallbackColor**: the solid color that replaces acrylic in Battery Saver. For background acrylic, fallback color also replaces acrylic when your app isn't in the active desktop window. - -![Light theme acrylic swatches](images/custom-acrylic-swatches-light-theme.png) - -![Dark theme acrylic swatches](images/custom-acrylic-swatches-dark-theme.png) - -![Luminosity opacity compared to tint opacity](images/luminosity-vs-tint.png) - -To add an acrylic brush, define the three resources for dark, light, and high contrast themes. In high contrast, we recommend that you use a [SolidColorBrush](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.solidcolorbrush) with the same `x:Key` as the dark/light AcrylicBrush. - -> [!NOTE] -> If you don't specify a `TintLuminosityOpacity` value, the system will automatically adjust its value based on your TintColor and TintOpacity. - -```xaml - - - - - - - - - - - - - -``` - -The following sample shows how to declare an AcrylicBrush in code. - -```csharp -AcrylicBrush myBrush = new AcrylicBrush(); -myBrush.TintColor = Color.FromArgb(255, 202, 24, 37); -myBrush.FallbackColor = Color.FromArgb(255, 202, 24, 37); -myBrush.TintOpacity = 0.6; - -grid.Fill = myBrush; -``` - -## Do's and don'ts - -- **Do** use acrylic on transient surfaces. -- **Do** extend acrylic to at least one edge of your app to provide a seamless experience by subtly blending with the app's surroundings. -- **Don't** put desktop acrylic on large background surfaces of your app. -- **Don't** place multiple acrylic panes next to each other because this results in an undesirable visible seam. -- **Don't** place accent-colored text over acrylic surfaces. - -## How we designed acrylic - -We fine-tuned acrylic's key components to arrive at its unique appearance and properties. We started with translucency, blur, and noise to add visual depth and dimension to flat surfaces. We added an exclusion blend mode layer to ensure contrast and legibility of UI placed on an acrylic background. Finally, we added color tint for personalization opportunities. In concert these layers add up to a fresh, usable material. - -![Acrylic recipe](images/acrylic-recipe-diagram.jpg) -
    The acrylic recipe: background, blur, exclusion blend, color/tint overlay, noise - -## Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see background Acrylic in action](winui3gallery://item/SystemBackdrops) -> -> [Open the WinUI 3 Gallery app and see the in-app AcrylicBrush in action](winui3gallery://item/Acrylic) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -## Related articles - -[Fluent Design overview](../index.md) \ No newline at end of file diff --git a/hub/apps/design/style/assets/sound/BackButtonClick.mp3 b/hub/apps/design/style/assets/sound/BackButtonClick.mp3 deleted file mode 100644 index a350c08692..0000000000 Binary files a/hub/apps/design/style/assets/sound/BackButtonClick.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/ElementFocus1.mp3 b/hub/apps/design/style/assets/sound/ElementFocus1.mp3 deleted file mode 100644 index c2a719b34f..0000000000 Binary files a/hub/apps/design/style/assets/sound/ElementFocus1.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/ElementFocus2.mp3 b/hub/apps/design/style/assets/sound/ElementFocus2.mp3 deleted file mode 100644 index 3e1e287ee9..0000000000 Binary files a/hub/apps/design/style/assets/sound/ElementFocus2.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/ElementFocus3.mp3 b/hub/apps/design/style/assets/sound/ElementFocus3.mp3 deleted file mode 100644 index a80f0e8586..0000000000 Binary files a/hub/apps/design/style/assets/sound/ElementFocus3.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/ElementFocus4.mp3 b/hub/apps/design/style/assets/sound/ElementFocus4.mp3 deleted file mode 100644 index 7b6f7d44d1..0000000000 Binary files a/hub/apps/design/style/assets/sound/ElementFocus4.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/ElementFocus5.mp3 b/hub/apps/design/style/assets/sound/ElementFocus5.mp3 deleted file mode 100644 index 9c038d0b4e..0000000000 Binary files a/hub/apps/design/style/assets/sound/ElementFocus5.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/OverlayIn.mp3 b/hub/apps/design/style/assets/sound/OverlayIn.mp3 deleted file mode 100644 index 83eaa88f45..0000000000 Binary files a/hub/apps/design/style/assets/sound/OverlayIn.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/OverlayOut.mp3 b/hub/apps/design/style/assets/sound/OverlayOut.mp3 deleted file mode 100644 index dd3b8b5bc3..0000000000 Binary files a/hub/apps/design/style/assets/sound/OverlayOut.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/PageTransitionLeft.mp3 b/hub/apps/design/style/assets/sound/PageTransitionLeft.mp3 deleted file mode 100644 index 0c4d8ac496..0000000000 Binary files a/hub/apps/design/style/assets/sound/PageTransitionLeft.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/PageTransitionRight.mp3 b/hub/apps/design/style/assets/sound/PageTransitionRight.mp3 deleted file mode 100644 index 74bd64c0f3..0000000000 Binary files a/hub/apps/design/style/assets/sound/PageTransitionRight.mp3 and /dev/null differ diff --git a/hub/apps/design/style/assets/sound/SelectButtonClick.mp3 b/hub/apps/design/style/assets/sound/SelectButtonClick.mp3 deleted file mode 100644 index 77940650fc..0000000000 Binary files a/hub/apps/design/style/assets/sound/SelectButtonClick.mp3 and /dev/null differ diff --git a/hub/apps/design/style/balancing-style-and-consistency.md b/hub/apps/design/style/balancing-style-and-consistency.md deleted file mode 100644 index dbb23d3aa6..0000000000 --- a/hub/apps/design/style/balancing-style-and-consistency.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -description: Tips for creating consistent, usable apps that also demonstrate originality and creativity. -title: Balancing style and consistency (Windows app design) -template: detail.hbs -ms.date: 09/24/2020 -ms.topic: how-to -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Balancing style and consistency - - - -> Note: This article is an early draft for Windows 10 RS2. Feature names, terminology, and functionality are not final. - -When you design a product, you are the advocate for the customer. We all strive to create the best design that’s appropriate and true to our intent. This article explores the balance between following conventions to create a consistent user experience versus creating unique features and experiences that differentiate your app. - - -## The importance of consistency -Why does consistency matter? Consistency can make an app easier to use. A key part of good design is learnability; having a consistent design across apps reduces the number of times the end user has to “re-learn” how to use them. Look at the real-world examples: a gas pedal is always on the right, a door knob always rotates counter-clockwise to open, a stop sign is always red. - -Making an app consistent doesn't mean making all apps look and behave identically to each other, however. Going back to real world examples, there is an almost infinite number of chair designs, yet very few of them require re-learning how to sit. That's because the important elements--the sitting surface--are consistent enough for the user to understand them. - -One of the challenges in creating a good app design is understanding where it's important to be consistent, and where it's important to be unique. - -## The consistency spectrum - It's helpful to think of consistency as a spectrum with two opposing ends: - - -![The consistency spectrum](images/consistency/consistency-spectrum.png) - -Familiar experience elements include: -- Established UI paradigms (behavior on a mouse click, pressing and holding on an element, icons that look similar) -- Elements of your brand that you want to apply across products (typography, colors) - -Differentiators include: -- Elements that form the unique “soul” of the products -- Elements that help you tailor the experience to the intended form factor - -Let's create a design model by taking this spectrum and applies it to the major elements of an app. - -![The design consistency model](images/consistency/design-consistency-model.png) - -In this model, the base layers provide a tried-and-tested foundation of consistency while the upper layers focus on flexibility and customization. - -1. App basics make up the first layer of our model: the layout grid, [color palette](color.md), [typography conventions](typography.md), and [icon styles](icons.md). These fundamentals features should be consistently applied. - -2. For the second layer, UWP provides a core set of [common controls](../controls/index.md) that balances efficiency with flexibility. We’ve also created guidelines to help establish a consistent voice and tone, using the same words to describe and guide people through app experiences. We created a set of patterns that apps can use for their design, to making sure our designs can scale across different size devices and inputs. -3. Layer three is where you tailor navigation to different devices and contexts. For example, how you navigate with touch on a phone will likely be different than on a 32” monitor with keyboard and mouse or a hololens with gestures and 100 points of touch on a 84” surface. -4. Layer four is where you define your brand personality. What signature design elements reinforce your brand and differentiate it from the competition? This is also where you tailor your app for different end users. Is your app for gamers, for information workers, or K-12 students or educators. What are unique needs for these different customers and can we make the design work better for them? Don’t just make it the same, continue to look at creating more value for your different customers. - - -## Design principles -To use this model effectively, we need a set of design principles that help us to make the right tradeoffs. Here are our working design consistency principles: - -**If it looks the same, make it act the same** -- When the user sees a text box, or the hamburger control, they most likely will expect that it will behave the same way on different devices. If you have a good reason to deviate from an established behavior, set user expectations by making it seem different as well. - -**If an element looks very similar to an existing element or convention, consider making it the same** -- You need a “new document” icon. Why design a new one that’s just a little bit different, when you can use one that’s already recognized by the user. - -**Usability trumps consistency** -- It is better to be usable than to be consistent. In some cases, you may need to develop new controls or behaviors to aid usability. Using phone with one hand has unique challenges. So does working with an 80” screen. A good design makes the user feel an expert. - -**Engagement is important** -- Don’t make it boring. If everything is flat and the same color with squares, will our customers want to pick it up and use it? Create delight. Introduce new elements which surprise without breaking learnability. - -**Behaviors evolve** -- This is the tricky one: as industry evolves new conventions get established. It is possible that current behaviors will fade, and our consistent behaviors many need to adopt new standards. Look at pinch and zoom. It used to be a common expectation to zoom in/out with the +/- UI, yet in the modern UI it’s expected to pinch and zoom. Look at new experience paradigms, and evolve. diff --git a/hub/apps/design/style/iconography/app-icon-construction.md b/hub/apps/design/style/iconography/app-icon-construction.md deleted file mode 100644 index a0177128d4..0000000000 --- a/hub/apps/design/style/iconography/app-icon-construction.md +++ /dev/null @@ -1,249 +0,0 @@ ---- -title: Construct your Windows app's icon -description: How to turn your Windows app's app icon design into image files for your app. -keywords: windows 10, uwp -design-contact: judysa -ms.date: 6/2/2022 -ms.topic: article -ms.localizationpriority: medium ---- - -# Construct your Windows app's icon - -:::image type="content" source="images/win-11-icon-locations.png" alt-text="A diagram that shows several icon locations in Windows 11."::: - -Once you've designed your app's icon, you need to create the icon files themselves. Because Windows supports multiple themes, display resolutions, and scale factors, you should provide multiple versions of your icon to make sure it looks great on every device, at any size. - -## Icon sizes (WPF, UWP, WinUI) - -Windows will display your app icon at a variety of sizes depending on where your icon is being displayed and the user's display scale settings. The following table lists all the possible sizes that Windows may use to display your icon. - -## Icon sizes (Win32) - -Windows ICO files have been around for a long time. There are standard sizes that are used which is a subset of the full set above. - -## Icon scaling - -When Windows displays your app's icon, it will look for an exact size match first. If there is no exact match it will look for the next size above and scale down. Including more icon sizes with your app means Windows will more often have a pixel-perfect match, and reduce the amount of scaling applied to scaled icons. - -| Windows 11 scale factor | 100% | 125% | 150% | 200% | 250% | 300% | 400% | -|-----------------------------------------|------|------|------|------|------|------|-------| -| Context menu, title bar, system tray | 16px | 20px | 24px | 32px | 40px | 48px | 64px | -| Taskbar, search results, Start all apps list | 24px | 30px | 36px | 48px | 60px | 72px | 96px | -| Start pins | 32px | 40px | 48px | 64px | 80px | 96px | 256px | - -> [!NOTE] -> Apps should have, at the bare minimum: 16x16, 24x24, 32x32, 48x48, and 256x256. This covers the most common icon sizes, and by providing a 256px icon, ensures Windows should only ever scale your icon down, never up. - -## Transparent backgrounds - -Icons look best with a transparent background. If your app's branding requires your icon be plated on a background, that's okay too. However, you'll have to re-implement some theming functionality that transparent icons get for free. For example, you might provide a version of your app's icon plated on a two different backgrounds, one better suited to a light theme and the other to a dark theme. - -## Complete list of icons and variations - -Windows utilizes different icon assets in different UI contexts. The usage has changed a little between Windows 10 & Windows 11. - -The lists below define the specific filenames Windows expects to contain each corresponding icon. - -### App icon - -In Windows 10 and 11, the AppList icon is your app's primary icon. It will be used in several places, including the Taskbar, Start pins, the all app list, and the search results list. Windows 11 selects an appropriate icon for the all apps list based on the current scale factor, but Windows 10 uses specific, explicitly defined icons if you provide them. - -Separate files for all three theme variations (default, light theme, dark theme) are required, even if the icon is the same. If you do not provide these files, your icon will appear on a system icon plate to ensure a minimum contrast ratio. - -**App List Target Size (Required)** - -- AppList.targetsize-16.png -- AppList.targetsize-20.png -- AppList.targetsize-24.png -- AppList.targetsize-30.png -- AppList.targetsize-32.png -- AppList.targetsize-36.png -- AppList.targetsize-40.png -- AppList.targetsize-48.png -- AppList.targetsize-60.png -- AppList.targetsize-64.png -- AppList.targetsize-72.png -- AppList.targetsize-80.png -- AppList.targetsize-96.png -- AppList.targetsize-256.png - -**Dark theme (Required)** - -- AppList.targetsize-16_altform-unplated.png -- AppList.targetsize-20_altform-unplated.png -- AppList.targetsize-24_altform-unplated.png -- AppList.targetsize-30_altform-unplated.png -- AppList.targetsize-32_altform-unplated.png -- AppList.targetsize-36_altform-unplated.png -- AppList.targetsize-40_altform-unplated.png -- AppList.targetsize-48_altform-unplated.png -- AppList.targetsize-60_altform-unplated.png -- AppList.targetsize-64_altform-unplated.png -- AppList.targetsize-72_altform-unplated.png -- AppList.targetsize-80_altform-unplated.png -- AppList.targetsize-96_altform-unplated.png -- AppList.targetsize-256_altform-unplated.png - -**Light theme (Required)** - -- AppList.targetsize-16_altform-lightunplated.png -- AppList.targetsize-20_altform-lightunplated.png -- AppList.targetsize-24_altform-lightunplated.png -- AppList.targetsize-30_altform-lightunplated.png -- AppList.targetsize-32_altform-lightunplated.png -- AppList.targetsize-36_altform-lightunplated.png -- AppList.targetsize-40_altform-lightunplated.png -- AppList.targetsize-48_altform-lightunplated.png -- AppList.targetsize-60_altform-lightunplated.png -- AppList.targetsize-64_altform-lightunplated.png -- AppList.targetsize-72_altform-lightunplated.png -- AppList.targetsize-80_altform-lightunplated.png -- AppList.targetsize-96_altform-lightunplated.png -- AppList.targetsize-256_altform-lightunplated.png - -**App List Scale (Windows 10) (Optional)** - -- AppList.scale-100.png -- AppList.scale-125.png -- AppList.scale-150.png -- AppList.scale-200.png -- AppList.scale-400.png - -**Light theme (Windows 10) (Optional)** - -- AppList.scale-100_altform-colorful_theme-light.png -- AppList.scale-125_altform-colorful_theme-light.png -- AppList.scale-150_altform-colorful_theme-light.png -- AppList.scale-200_altform-colorful_theme-light.png -- AppList.scale-400_altform-colorful_theme-light.png - -> [!NOTE] -> If you do not include the targetsize-*-altform-unplated assets above your icon will scale to a smaller size and will get an undesirable backplate behind the icon on Taskbar and Start. - - -### Tiles - - -Windows 10 supports four tile sizes: small, medium, wide, and large. - -**Default / dark theme (partially required)** - -* SmallTile.scale-100.png -* SmallTile.scale-125.png -* SmallTile.scale-150.png -* SmallTile.scale-200.png -* SmallTile.scale-400.png - - -- MedTile.scale-100.png -- MedTile.scale-125.png -- MedTile.scale-150.png -- MedTile.scale-200.png -- MedTile.scale-400.png - - -* WideTile.scale-100.png -* WideTile.scale-125.png -* WideTile.scale-150.png -* WideTile.scale-200.png -* WideTile.scale-400.png - - -- LargeTile.scale-100.png -- LargeTile.scale-125.png -- LargeTile.scale-150.png -- LargeTile.scale-200.png -- LargeTile.scale-400.png - -**Light theme (optional)** - -- SmallTile.scale-100_altform-colorful_theme-light.png -- SmallTile.scale-125_altform-colorful_theme-light.png -- SmallTile.scale-150_altform-colorful_theme-light.png -- SmallTile.scale-200_altform-colorful_theme-light.png -- SmallTile.scale-400_altform-colorful_theme-light.png - - -* MedTile.scale-100_altform-colorful_theme-light.png -* MedTile.scale-125_altform-colorful_theme-light.png -* MedTile.scale-150_altform-colorful_theme-light.png -* MedTile.scale-200_altform-colorful_theme-light.png -* MedTile.scale-400_altform-colorful_theme-light.png - - -- WideTile.scale-100_altform-colorful_theme-light.png -- WideTile.scale-125_altform-colorful_theme-light.png -- WideTile.scale-150_altform-colorful_theme-light.png -- WideTile.scale-200_altform-colorful_theme-light.png -- WideTile.scale-400_altform-colorful_theme-light.png - - -* LargeTile.scale-100_altform-colorful_theme-light.png -* LargeTile.scale-125_altform-colorful_theme-light.png -* LargeTile.scale-150_altform-colorful_theme-light.png -* LargeTile.scale-200_altform-colorful_theme-light.png -* LargeTile.scale-400_altform-colorful_theme-light.png - -> [!NOTE] -> Windows 11 does not use the tile assets, but currently at minimum the Medium tile assets at 100% are required to publish to the Microsoft Store. If your app is Windows 10 & 11 compatible it is suggested that you include as many tile assets as possible. - -### Splash screen - -Splash screens can also be Light and Dark theme aware like the App icon assets. - -**Default** - -- SplashScreen.scale-100.png -- SplashScreen.scale-125.png -- SplashScreen.scale-150.png -- SplashScreen.scale-200.png -- SplashScreen.scale-400.png - -**Dark theme (Optional)** - -- SplashScreen.scale-100_altform-colorful_theme-dark.png -- SplashScreen.scale-125_altform-colorful_theme-dark.png -- SplashScreen.scale-150_altform-colorful_theme-dark.png -- SplashScreen.scale-200_altform-colorful_theme-dark.png -- SplashScreen.scale-400_altform-colorful_theme-dark.png - -**Light theme (Optional)** - -- SplashScreen.scale-100_altform-colorful_theme-light.png -- SplashScreen.scale-125_altform-colorful_theme-light.png -- SplashScreen.scale-150_altform-colorful_theme-light.png -- SplashScreen.scale-200_altform-colorful_theme-light.png -- SplashScreen.scale-400_altform-colorful_theme-light.png - -### Badge logo - -Badge icons are used on the Windows 10 lock screen and for most apps are not required. - -**Windows 10 (optional)** - -- BadgeLogo.scale-100.png -- BadgeLogo.scale-125.png -- BadgeLogo.scale-150.png -- BadgeLogo.scale-200.png -- BadgeLogo.scale-400.png - -### Package logo (Microsoft Store logo) - -These assets are required to publish to the Microsoft Store. - -**Default / Dark theme (required)** - -- StoreLogo.scale-100.png -- StoreLogo.scale-125.png -- StoreLogo.scale-150.png -- StoreLogo.scale-200.png -- StoreLogo.scale-400.png - -**Light theme (optional)** - -- StoreLogo.scale-100_altform-colorful_theme-light.png -- StoreLogo.scale-125_altform-colorful_theme-light.png -- StoreLogo.scale-150_altform-colorful_theme-light.png -- StoreLogo.scale-200_altform-colorful_theme-light.png -- StoreLogo.scale-400_altform-colorful_theme-light.png diff --git a/hub/apps/design/style/iconography/app-icon-design.md b/hub/apps/design/style/iconography/app-icon-design.md deleted file mode 100644 index 6baec646cc..0000000000 --- a/hub/apps/design/style/iconography/app-icon-design.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: Design guidelines for Windows app icons -description: How to design a beautiful app icon that perfectly and clearly represents your app. -keywords: windows 10, uwp -design-contact: judysa -ms.date: 10/29/2021 -ms.topic: how-to -ms.localizationpriority: medium ---- - -# Design guidelines for Windows app icons - -Follow these guidelines to create a great app icon for your app that feels at home on Windows. - -## Design guidance: Metaphor - -:::image type="content" source="images/icon-progressive-abstraction.png" alt-text="A diagram that shows several variations on a record player icon, each progressively more abstract."::: - -An icon should be a metaphor for its app: a visual representation of the value proposition, functions, and features of the product. - -### Representation - -Your icon should illustrate the concept of your app in a singular element using simple forms. - -When creating your icon, use clear metaphors and leverage concepts that are largely understood - such as an envelope for mail or magnifying glass for search. The key concept should be your icon's focal point; don't dilute your icon by adding decorative elements that don’t support the metaphor. To enhance communication clarity, use no more than two metaphors in a single icon. If a single metaphor can be used, that’s even better. - -:::image type="content" source="images/abstraction-spectrum.png" alt-text="A diagram that shows examples of less and more abstract icons."::: - -Literal metaphors are best for articulating the purpose and promise in a clear way. A good test for an effective icon is when users can tell what it represents without a label. - -Only use an abstract metaphor in instances where it's impossible to find a literal, self-evident metaphor to represent the core functionality of a product. - -Icons should not include typography as part of the design. Letters and words on your icon should be avoided and only used when it’s essential. The app’s name will appear in association with the icon throughout the operating system. - -## Design guidance: Shape - -### The grid and rounded corners - -:::image type="content" source="images/icon-design-grid.png" alt-text="A diagram that shows the grid template used for icon design and alignment."::: - -Microsoft aligns its icons to a 48x48 grid initially to ensure a balanced icon that takes advantage of the space available, while still maintaining a distinctive shape and silhouette. Aligning your icon's distinctive features to the grid will balance well with the other icons around it. - -**Approachability** is a Microsoft personality principle. One way we communicate this trait is by using soft or rounded corners. Shapes used in your app's product icons should be built to align with the icon grid. The corners of these shapes should match the rounded corners in the icon grid. When rounded corners are applied to an exterior curve, use a 2px radius at 48x48. When rounded corners are applied to an interior curve, use a 1px radius instead. - -### Silhouette - -:::image type="content" source="images/icons-aligned-in-grid.png" alt-text="A diagram that shows several icons aligned within the grid template."::: - -A visually balanced silhouette allows good icon scalability and also avoids extremes of thick and thin shapes. Use the grid to design a silhouette that’s distinctive, yet legible at small sizes. Use as few shapes with as few corners as possible to distinguish your product while still feeling at home on Windows. - -### Detail - -When adding detail, care should be taken to maintain legibility at small sizes. It is recommended to only add additional literal detail to the most prominent layer of an icon. - -## Design guidance: Color and gradients - -Pick colors carefully and avoid relying on color alone to convey meaning. Use shape and metaphor with color to communicate. To avoid complexity when scaling an icon across a range of sizes, treatments to colors should be minimized. Color gradients, overlays of varying opacity, and tints of color should be kept to a minimum. - -Gradients should be subtle for the most part. Try to limit your gradient ramps to only one or two steps in both the horizontal and vertical directions. - -The default angle for gradients is 120 degrees. Start and end points can be adjusted accordingly. The important thing is that it’s a smooth transition. Avoid very tight transitions that would feel like reflections or dimension. - -### Monochrome palette - -Create a monochrome palette using the following steps: - -1. Create three colors from the same hue. In most cases you will have to adjust the light color to be brighter and the dark color to be less saturated, but of course you should use your best judgement. -2. Create three steps in between each base color. This will be your primary lane. Most of the icon should be comprised of these colors. -3. For a wider palette, create tints to white and shades to black using the same method as step 2. These tints and shades should be used only when you need a little more contrast. -4. The tints of the dark colors and shades of the light colors are usually useless and drab. They can be removed. - -### Monochrome gradients - -:::image type="content" source="images/monochrome-gradients.png" alt-text="A diagram that shows transitions in monochrome gradients."::: - -Monochrome gradients are usually used to give a subtle hint toward an ambient light angle coming from the top left. They should not be treated as a direct light source though. The idea is to give the shapes a little movement without being too dramatic. - -### Analogous palette - -:::image type="content" source="images/create-analogous-palette.png" alt-text="A diagram that outlines the steps to create an analogous color palette."::: - -Creating an analogous palette is exactly like creating a monochrome palette, but with more colors. The key to this type of palette is not to overdo it. Be thoughtful with your color transitions. - -1. Create three color sets instead of one. -2. Make vertical ramps out of all three color sets. -3. Instead of creating tints and shades using white and black, use your second and third colors instead. - -### Analogous gradients - -:::image type="content" source="images/analogous-gradients.png" alt-text="A diagram showing transitions in analogous gradients."::: - -Analogous gradients should be at the same angle as the monochrome, but don't always have to be. Typically lighter hues should be on top left to avoid looking overly dramatic but also to be as consistent as possible with the monochrome. - -## Design guidance: Contrast, shadow, and perspective - -### Color contrast - -:::image type="content" source="images/contrast-light-dark.png" alt-text="A diagram showing two versions of the same icon, one in a dark theme and the other in a light theme."::: - -Accessibility is a high priority for Microsoft. App icons are primarily displayed on either light and dark backgrounds but displayed over desktop background images and tints or shades of the system accent color. It is difficult to make an icon 100% accessible on every background, but there are several things you can do to ensure your icon is as accessible as possible. - -- Use color values in all 3 ranges, dark, medium, light. -- Make sure at least half of your icon passes a 3.0:1 contrast ratio on light and dark theme. -- Some hue values are more difficult than others. Yellow will never pass an accessible contrast ratio on light theme until it’s brown. Reds are more difficult on dark theme. -- Though not required, you have the option to provide separate light and dark theme assets for Taskbar, Start and other theme-sensitive areas of Windows. - -### High contrast - -:::image type="content" source="images/high-contrast-light-dark.png" alt-text="A diagram showing two versions of an icon in high contrast color themes."::: - -> [!TIP] -> Windows 11 no longer requires high contrast assets for app icons. - -High contrast icons are black and white and should be a direct representation of your app icon. Often the high contrast icon can be created from the color version using a solid fill and line. Avoid gradients in high contrast icons. Sometimes [monoline icons](../segoe-fluent-icons-font.md) are required for in-app experiences should be designed according to these guidelines. - -### Layering and shadow - -:::image type="content" source="images/layer-and-shadow.png" alt-text="A diagram showing top down and isometric views of an icon."::: -:::row::: - :::column::: - Top/Front facing view. - :::column-end::: - :::column::: - Isometric view to illustrate z-depth. For illustrative purposes only; not a suggested design option. - :::column-end::: -:::row-end::: - -Icons are composed of flat objects sitting on top of the layers below it. - -- Use as few layers as possible, and minimize extreme contrasts of scale between shapes. -- Use drop shadows within icons to create definition between object layers and visually connect components to each other within the icon design. -- In general, shadows cast from light onto dark shapes have the best result. -- Inner shadows should only cast a shadow on the graphic symbol, not on to the surrounding background. -- There are two types of inner shadow both of which have two shadows each - -## Shadow construction - -All of these values are to be rendered at 48x48 px and scaled up or down from there. If this is not adhered to, shadows will be inconsistent across the icon system. - There are two types of object shadows both of which have two shadows each. Objects within the same metaphor have a shadow with slightly less blur. - -### Same metaphor - -:::image type="content" source="images/shadow-same-metaphor.png" alt-text="A diagram showing several icons demonstrating how to use shadows to represent a single metaphor with multiple components."::: - -This shadow is used when you have content within a single metaphor that needs some depth. It’s not always necessary to do this, but single object metaphors need some depth to feel like part of the system. the blue on shadow 2 is the only difference. - -### Separate metaphor - -:::image type="content" source="images/shadow-separate-metaphor.png" alt-text="A diagram showing several icons demonstrating how to use shadows to represent a multiple, separate metaphors with multiple components"::: - -This shadow is used when you have two objects that overlap each other but are not necessarily part of the same metaphor. The shadow should be masked into the shape below it. - -## Perspective - -:::image type="content" source="images/perspective.png" alt-text="A diagram showing several icons displayed at 3/4 view.."::: - -The icons on the left are fairly simple; perspective is not recommended, but may be appropriate here. The icon on the right is too complex for perspective, so using it for this icon is not recommended. - -Icons should be drawn with a straight-on perspective to present the metaphor in a simple easy to understand way. Exceptions are cases where the metaphor doesn’t read well without viewing another side of it. For example a cylinder viewed straight on is a rectangle so the top could be added to show that it has volume. The other exception is when an app is related to 3d where it makes sense to show dimension. In both cases the previous guidelines about flat objects still applies. Layers should always be flat and perpendicular to the viewing angle. diff --git a/hub/apps/design/style/iconography/images/abstraction-spectrum.png b/hub/apps/design/style/iconography/images/abstraction-spectrum.png deleted file mode 100644 index 06bdf0c144..0000000000 Binary files a/hub/apps/design/style/iconography/images/abstraction-spectrum.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/analogous-gradients.png b/hub/apps/design/style/iconography/images/analogous-gradients.png deleted file mode 100644 index 1d1e2b3f74..0000000000 Binary files a/hub/apps/design/style/iconography/images/analogous-gradients.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/color-spectrum.png b/hub/apps/design/style/iconography/images/color-spectrum.png deleted file mode 100644 index f4a79987f2..0000000000 Binary files a/hub/apps/design/style/iconography/images/color-spectrum.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/contrast-dark.png b/hub/apps/design/style/iconography/images/contrast-dark.png deleted file mode 100644 index 0ad270cfbb..0000000000 Binary files a/hub/apps/design/style/iconography/images/contrast-dark.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/contrast-light-dark.png b/hub/apps/design/style/iconography/images/contrast-light-dark.png deleted file mode 100644 index c66ec18161..0000000000 Binary files a/hub/apps/design/style/iconography/images/contrast-light-dark.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/contrast-light.png b/hub/apps/design/style/iconography/images/contrast-light.png deleted file mode 100644 index 26b4689e27..0000000000 Binary files a/hub/apps/design/style/iconography/images/contrast-light.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/create-analogous-palette.png b/hub/apps/design/style/iconography/images/create-analogous-palette.png deleted file mode 100644 index e2a5f2154a..0000000000 Binary files a/hub/apps/design/style/iconography/images/create-analogous-palette.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/full-bleed-margins.png b/hub/apps/design/style/iconography/images/full-bleed-margins.png deleted file mode 100644 index e7c80ddb69..0000000000 Binary files a/hub/apps/design/style/iconography/images/full-bleed-margins.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/full-bleed-no-margin.png b/hub/apps/design/style/iconography/images/full-bleed-no-margin.png deleted file mode 100644 index de9ccb93f5..0000000000 Binary files a/hub/apps/design/style/iconography/images/full-bleed-no-margin.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/full-bleed-tile.png b/hub/apps/design/style/iconography/images/full-bleed-tile.png deleted file mode 100644 index 6377ef85b7..0000000000 Binary files a/hub/apps/design/style/iconography/images/full-bleed-tile.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/full-bleed-with-margins.png b/hub/apps/design/style/iconography/images/full-bleed-with-margins.png deleted file mode 100644 index e820f8c5f5..0000000000 Binary files a/hub/apps/design/style/iconography/images/full-bleed-with-margins.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/gradient-angle.png b/hub/apps/design/style/iconography/images/gradient-angle.png deleted file mode 100644 index 24cc36ca9b..0000000000 Binary files a/hub/apps/design/style/iconography/images/gradient-angle.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/grid-rounded-corners.png b/hub/apps/design/style/iconography/images/grid-rounded-corners.png deleted file mode 100644 index 63f7020b58..0000000000 Binary files a/hub/apps/design/style/iconography/images/grid-rounded-corners.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/high-contrast-dark.png b/hub/apps/design/style/iconography/images/high-contrast-dark.png deleted file mode 100644 index 4baf5def5f..0000000000 Binary files a/hub/apps/design/style/iconography/images/high-contrast-dark.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/high-contrast-light-dark.png b/hub/apps/design/style/iconography/images/high-contrast-light-dark.png deleted file mode 100644 index e9116a3041..0000000000 Binary files a/hub/apps/design/style/iconography/images/high-contrast-light-dark.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/high-contrast-light.png b/hub/apps/design/style/iconography/images/high-contrast-light.png deleted file mode 100644 index ed4058ba77..0000000000 Binary files a/hub/apps/design/style/iconography/images/high-contrast-light.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-abstract-path.png b/hub/apps/design/style/iconography/images/icon-abstract-path.png deleted file mode 100644 index 8908acc080..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-abstract-path.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-circles-path.png b/hub/apps/design/style/iconography/images/icon-circles-path.png deleted file mode 100644 index 547cd78cf3..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-circles-path.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-design-grid.png b/hub/apps/design/style/iconography/images/icon-design-grid.png deleted file mode 100644 index b92ff3d6f8..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-design-grid.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-layers-angle.png b/hub/apps/design/style/iconography/images/icon-layers-angle.png deleted file mode 100644 index 7710eae616..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-layers-angle.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-layers-top.png b/hub/apps/design/style/iconography/images/icon-layers-top.png deleted file mode 100644 index 46d86a5da4..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-layers-top.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-play-button-text.png b/hub/apps/design/style/iconography/images/icon-play-button-text.png deleted file mode 100644 index fdaa53f235..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-play-button-text.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-play-button.png b/hub/apps/design/style/iconography/images/icon-play-button.png deleted file mode 100644 index b8991d37c4..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-play-button.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-play-emoji-font.png b/hub/apps/design/style/iconography/images/icon-play-emoji-font.png deleted file mode 100644 index 474253fe54..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-play-emoji-font.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-progressive-abstraction.png b/hub/apps/design/style/iconography/images/icon-progressive-abstraction.png deleted file mode 100644 index b462d80c7f..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-progressive-abstraction.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-send-fill.png b/hub/apps/design/style/iconography/images/icon-send-fill.png deleted file mode 100644 index 2acdac80a3..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-send-fill.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-send.png b/hub/apps/design/style/iconography/images/icon-send.png deleted file mode 100644 index 217118b701..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-send.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-shared-resource.png b/hub/apps/design/style/iconography/images/icon-shared-resource.png deleted file mode 100644 index d18aec2fba..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-shared-resource.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-slices-bitmap.png b/hub/apps/design/style/iconography/images/icon-slices-bitmap.png deleted file mode 100644 index c628eae59f..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-slices-bitmap.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-slices-image-svg.png b/hub/apps/design/style/iconography/images/icon-slices-image-svg.png deleted file mode 100644 index d5fc907a57..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-slices-image-svg.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icon-slices-image.png b/hub/apps/design/style/iconography/images/icon-slices-image.png deleted file mode 100644 index 5c7a6233ff..0000000000 Binary files a/hub/apps/design/style/iconography/images/icon-slices-image.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icons-aligned-in-grid.png b/hub/apps/design/style/iconography/images/icons-aligned-in-grid.png deleted file mode 100644 index 9779e5efcc..0000000000 Binary files a/hub/apps/design/style/iconography/images/icons-aligned-in-grid.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icons-command-bar.png b/hub/apps/design/style/iconography/images/icons-command-bar.png deleted file mode 100644 index 5448619edc..0000000000 Binary files a/hub/apps/design/style/iconography/images/icons-command-bar.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/icons-with-gradients.png b/hub/apps/design/style/iconography/images/icons-with-gradients.png deleted file mode 100644 index 1269fda56c..0000000000 Binary files a/hub/apps/design/style/iconography/images/icons-with-gradients.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/layer-and-shadow.png b/hub/apps/design/style/iconography/images/layer-and-shadow.png deleted file mode 100644 index c34ae3a04e..0000000000 Binary files a/hub/apps/design/style/iconography/images/layer-and-shadow.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/manifest-properties.png b/hub/apps/design/style/iconography/images/manifest-properties.png deleted file mode 100644 index fc0ffa98f3..0000000000 Binary files a/hub/apps/design/style/iconography/images/manifest-properties.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/monochrome-gradients.png b/hub/apps/design/style/iconography/images/monochrome-gradients.png deleted file mode 100644 index e516c0a0f1..0000000000 Binary files a/hub/apps/design/style/iconography/images/monochrome-gradients.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/package-appmanifest.png b/hub/apps/design/style/iconography/images/package-appmanifest.png deleted file mode 100644 index 24d2108853..0000000000 Binary files a/hub/apps/design/style/iconography/images/package-appmanifest.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/perspective.png b/hub/apps/design/style/iconography/images/perspective.png deleted file mode 100644 index 8e774982d7..0000000000 Binary files a/hub/apps/design/style/iconography/images/perspective.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/same-metaphor.png b/hub/apps/design/style/iconography/images/same-metaphor.png deleted file mode 100644 index 333847128f..0000000000 Binary files a/hub/apps/design/style/iconography/images/same-metaphor.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/separate-metaphor.png b/hub/apps/design/style/iconography/images/separate-metaphor.png deleted file mode 100644 index 0bf2edc4a2..0000000000 Binary files a/hub/apps/design/style/iconography/images/separate-metaphor.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/shadow-same-metaphor.png b/hub/apps/design/style/iconography/images/shadow-same-metaphor.png deleted file mode 100644 index 49a0aec078..0000000000 Binary files a/hub/apps/design/style/iconography/images/shadow-same-metaphor.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/shadow-separate-metaphor.png b/hub/apps/design/style/iconography/images/shadow-separate-metaphor.png deleted file mode 100644 index 5ed76609ae..0000000000 Binary files a/hub/apps/design/style/iconography/images/shadow-separate-metaphor.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/transparent-tile-background.png b/hub/apps/design/style/iconography/images/transparent-tile-background.png deleted file mode 100644 index 018fdabe01..0000000000 Binary files a/hub/apps/design/style/iconography/images/transparent-tile-background.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/visual-assets-panel.png b/hub/apps/design/style/iconography/images/visual-assets-panel.png deleted file mode 100644 index e059245dc2..0000000000 Binary files a/hub/apps/design/style/iconography/images/visual-assets-panel.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/win-10-icon-locations.png b/hub/apps/design/style/iconography/images/win-10-icon-locations.png deleted file mode 100644 index 4f155cafac..0000000000 Binary files a/hub/apps/design/style/iconography/images/win-10-icon-locations.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/images/win-11-icon-locations.png b/hub/apps/design/style/iconography/images/win-11-icon-locations.png deleted file mode 100644 index 674ae5565a..0000000000 Binary files a/hub/apps/design/style/iconography/images/win-11-icon-locations.png and /dev/null differ diff --git a/hub/apps/design/style/iconography/live-tile-icons.md b/hub/apps/design/style/iconography/live-tile-icons.md deleted file mode 100644 index 6c5011d80d..0000000000 --- a/hub/apps/design/style/iconography/live-tile-icons.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Construction guidelines for Windows 10 icons -description: Additional considerations for Windows app icons on platforms that support Live Tiles -keywords: windows 10, uwp -design-contact: judysa -ms.date: 10/29/2021 -ms.topic: article -ms.localizationpriority: medium ---- - -# Construction guidelines for Windows 10 icons - -Apps running on versions of Windows with Live Tile support have additional options for how their app's icon is displayed within its tile. Apps that choose to provide tile images should provide images for all tile sizes at all common scale factors. - -Windows 10 October 2020 Update introduced theme-aware Start Menu tiles, which select the tile background color based on the user's theme rather than using the color specified in the [VisualElement](/uwp/schemas/appxpackage/appxmanifestschema/element-visualelements) section of the application manifest. Apps can still choose a color that suits their tile background color for versions of Windows 10 prior to October 2020. - -## Creating an icon-based tile - -:::image type="content" source="images/transparent-tile-background.png" alt-text="A diagram that shows a tile image with a transparent background overlayed against a semitransparent gray tile."::: - -The easiest way to look great on Live Tiles is to just display your app's icon against a transparent background. This is the "standard" way to do tiles. To achieve this look, you can either create tile images with transparent backgrounds, or just let Windows display your app's icon on a regular tile. - -## Creating a full bleed tile - -:::image type="content" source="images/full-bleed-tile.png" alt-text="A diagram that shows an example of a full-bleed tile."::: - -When required, apps can create full-bleed Live Tile images to fully customize their tile. Typically, this functionality is used by games. Non-game apps should generally not use full-bleed tiles, because it will make your tile stand out awkwardly compared to "standard" icon-based tiles. Full bleed tiles can be used to achieve several looks. - -:::image type="content" source="images/transparent-tile-background.png" alt-text="An example of a tile with a transparent background."::: - -Apps using a full bleed tile can make their icon any size they want. To do this, simply make your icon the size you would like it to display when the tile is shown. App icons should never take up the complete tile. Be sure to use at least 16% margins on each side. - -:::image type="content" source="images/full-bleed-no-margin.png" alt-text="An example of a full bleed tile with no margin around the app name."::: - -Some apps, usually games, might want to display a full-bleed image instead of an icon. In this case, do not use margins - the image should take up all available space. diff --git a/hub/apps/design/style/iconography/overview.md b/hub/apps/design/style/iconography/overview.md deleted file mode 100644 index 176b22cb6f..0000000000 --- a/hub/apps/design/style/iconography/overview.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: App icons -description: Design and create an app icon for your Windows app. -keywords: windows 10, uwp -ms.date: 07/23/2024 -ms.topic: article -ms.localizationpriority: medium ---- - -# App icons - -App icons are the visual indicators we use to help users find and launch an application on Windows. - -It's the first impression of your app and we want to help make sure it's a great one. This article covers the best practices for Windows app icon design and implementation to provide the best experience in the Windows ecosystem. - -> [!TIP] -> This article describes icons that represent your app in Windows and the Windows Store. To learn about icons that you use inside your app UI, see [Icons in Windows apps](../icons.md). - -## Where do app icons appear? - -:::image type="content" source="images/win-11-icon-locations.png" alt-text="A diagram that shows an abstract image of the Windows 11 desktop and start menu."::: - -App icons appear in a variety of places in Windows: - -:::row::: - :::column::: - - Start menu - - Start menu's 'All apps' list - - Taskbar - - Splash screen - - App title bar - - Search results - :::column-end::: - :::column::: - - Notifications - - "Open with" list - - Task manager - - JumpLists - - Settings - - Share dialog - :::column-end::: -:::row-end::: - -## Principles for great app icons - -### Keep it simple - -**Create clean, straightforward, timeless designs** — Icons are quick visual cues that represent your app. Simple, easy to understand designs help users recognize your app more quickly. - -### Keep it universal - -**Make it accessible, inviting, and easy to understand** — Avoid complex or overly abstract forms. An intricate shape may be appropriate in some cultures but not in others. Inclusive icons are better for everyone. We focus on human unifiers – our motivations, relationships, and capabilities. We design to extend human abilities and create a sense of belonging. - -### Do less, better - -**When every detail is thoughtfully crafted, delight happens** — The best apps offer beautiful design and reliable experiences. Your icon should illustrate your app in a singular element using simple forms. - -## Design and create your app's icon - -- [Design guidelines for Windows app icons](app-icon-design.md) — Learn how to use metaphor, shape, color, and shadow to design a beautiful and functional icon for your app. -- [Construct the icon for your Windows app](app-icon-construction.md) — Create icons that look good at any size, on any screen. -- [Construction guidelines for Windows 10 icons](live-tile-icons.md) — If your app runs on Windows 10, your app's icons will be displayed in Live Tiles. Learn more about additional considerations for icons on Windows 10. diff --git a/hub/apps/design/style/iconography/visual-studio-asset-generation.md b/hub/apps/design/style/iconography/visual-studio-asset-generation.md deleted file mode 100644 index 238bf370c9..0000000000 --- a/hub/apps/design/style/iconography/visual-studio-asset-generation.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Create icons using Visual Studio's asset generation tool -description: Use the Visual Studio asset generation tool to create a variety of icon files from just one image. -keywords: windows 10, uwp -design-contact: judysa -ms.date: 10/29/2021 -ms.topic: how-to -ms.localizationpriority: medium ---- - -# Create icons using Visual Studio's asset generation tool - -While handcrafting each icon file will create the best, most consistent user experience, teams running short on resources can take advantage of Visual Studio's Manifest Designer. This tool can create an entire set of app icons and tile images from a single image. This is useful to create an initial set of icons, but will not achieve the same result as handcrafting each icon file, as Visual Studio will have to scale your image to create the required image sizes. - -## Launching the Manifest Designer - -:::row::: - :::column::: - 1. Use Visual Studio to open a WinUI or UWP project. - 2. In the **Solution Explorer**, double-click the Package.appxmanifest file. - :::column-end::: - :::column::: - :::image type="content" source="images/package-appmanifest.png" alt-text="A diagram that shows a view of solution explorer highlighting the Package.appxmanifest file."::: - :::column-end::: -:::row-end::: -:::row::: - :::column::: - 3. Visual Studio displays the Manifest Designer. - :::column-end::: - :::column::: - :::image type="content" source="images/manifest-properties.png" lightbox="images/manifest-properties.png" alt-text="A diagram that shows a view of the properties panel for a Package.appxmanifest file."::: - :::column-end::: -:::row-end::: -:::row::: - :::column::: - 4. Click the **Visual Assets** tab. - :::column-end::: - :::column::: - :::image type="content" source="images/visual-assets-panel.png" lightbox="images/visual-assets-panel.png" alt-text="A diagram that shows a view of the visual assets panel."::: - :::column-end::: -:::row-end::: - -## Generating icons with the Manifest Designer - -1. Click the `...` next to the Source field and select the image you want to use. For best results, use a vector-based image, Adobe Illustrator file, or PDF. If you're using a bitmap image, make sure it's at least 400 by 400 pixels so that you get sharp results. - -2. In the Display Settings section, configure these options: - - **Short name**: Specify a short name for your app. - - **Show name**: Indicate whether you want to display the short name on medium, wide, or large tiles. - - **Tile background**: Specify the hex value or a color name for the tile background color. For example, #464646. The default value is transparent. **NOTE:** This setting will be ignored on versions of Windows that support theme-aware Live Tiles. - - **Splash screen background** (Optional): Specify the hex value or color name for the splash screen background. -3. Click **Generate**. - -> [!NOTE] -> Visual Studio's Manifest Designer doesn't generate a badge logo by default. That's because your badge logo is unique and probably shouldn't match your other app icons. For more info, see [Badge notifications for Windows apps](/windows/uwp/design/shell/tiles-and-notifications/badges). diff --git a/hub/apps/design/style/icons.md b/hub/apps/design/style/icons.md deleted file mode 100644 index 5b778ee31d..0000000000 --- a/hub/apps/design/style/icons.md +++ /dev/null @@ -1,308 +0,0 @@ ---- -description: Learn when and how to create icons within your app. -title: Icons in Windows apps -ms.assetid: b90ac02d-5467-4304-99bd-292d6272a014 -label: Icons in Windows apps -template: detail.hbs -ms.date: 07/26/2024 -ms.topic: article -keywords: windows 10, uwp -doc-status: Published -ms.localizationpriority: medium -ms.custom: - - RS5 - - sfi-image-nochange ---- -# Icons in Windows apps - -Icons provide a visual shorthand for an action, concept, or product. By compressing meaning into a symbolic image, icons can cross language barriers and help conserve a valuable resource: screen space. Good icons harmonize with typography and with the rest of the design language. They don't mix metaphors, and they communicate only what's needed, as speedily and simply as possible. - -:::image type="content" source="iconography/images/icons-command-bar.png" alt-text="A command bar flyout with icons for add - plus sign, edit - pencil, share - page and arrow, and settings - gear"::: - -Icons can appear within apps and outside them. Inside your app, you use icons to represent an action, such as copying text or going to the settings page. - -This article describes icons within your app UI. To learn about icons that represent your app in Windows (app icons), see [App icons](./iconography/overview.md). - -## Know when to use icons - -Icons can save space, but when should you use them? - -Use an icon for actions, like cut, copy, paste, and save, or for items on a navigation menu. Use an icon if it's easy for the user to understand what the icon means and it's simple enough to be clear at small sizes. - -Don't use an icon if its meaning isn't clear, or if making it clear requires a complex shape. - -## Use the right type of icon - -There are many ways to create an icon. You can use a symbol font like the [Segoe Fluent Icons font](segoe-fluent-icons-font.md). You can create your own vector-based image. You can even use a bitmap image, although we don't recommend it. Here's a summary of the ways that you can add an icon to your app. - -To add an icon in your XAML app, you use either an [IconElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconelement) or an [IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconsource). - -This table shows the different kinds of icons that are derived from IconElement and IconSource. - -| [IconElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconelement) | [IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconsource) | Description | -|--|--|--| -| [AnimatedIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.animatedicon) | [AnimatedIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.animatediconsource) | Represents an icon that displays and controls a visual that can animate in response to user interaction and visual state changes. | -| [BitmapIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.bitmapicon) | [BitmapIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.bitmapiconsource) | Represents an icon that uses a bitmap as its content. | -| [FontIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.fonticon) | [FontIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.fonticonsource) | Represents an icon that uses a glyph from the specified font. | -| [IconSourceElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconsourceelement) | N/A | Represents an icon that uses an IconSource as its content. | -| [ImageIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.imageicon) | [ImageIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.imageiconsource) | Represents an icon that uses an image as its content. | -| [PathIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pathicon) | [PathIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pathiconsource) | Represents an icon that uses a vector path as its content. | -| [SymbolIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symbolicon) | [SymbolIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symboliconsource) | Represents an icon that uses a glyph from the `SymbolThemeFontFamily` resource as its content. | - -### IconElement vs. IconSource - -[IconElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconelement) is a [FrameworkElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement), so it can be added to the XAML object tree just like any other element of your app's UI. However, it can't be added to a [ResourceDictionary](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.resourcedictionary) and reused as a shared resource. - -[IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconsource) is similar to IconElement; however, because it is not a [FrameworkElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement), it can't be used as a standalone element in your UI, but it can be shared as a resource. [IconSourceElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconsourceelement) is a special icon element that wraps an IconSource so you can use it anywhere you need an IconElement. An example of these features is shown in the next section. - -#### IconElement examples - -You can use an [IconElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconelement)-derived class as a standalone UI component. - -This example shows how to set an icon glyph as the content of a Button. Set the button's [FontFamily](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.fontfamily) to `SymbolThemeFontFamily` and its content property to the Unicode value of the glyph that you want to use. - -```xaml - -``` - -:::image type="content" source="iconography/images/icon-play-button-text.png" alt-text="A button with the play icon, an outline of a triangle pointing to the right, with the text play below it"::: - -This example shows how you can define a FontIconSource in a ResourceDictionary, and then use an IconSourceElement to reuse the resource in different places of your app. - -```xaml - - - - - ... - - - - - - - -``` - -```xaml - - - - - - - -``` - -:::image type="content" source="iconography/images/icon-shared-resource.png" alt-text="A certificate icon with the text certificate is expired, and a button with the certificate icon and the text view certificate"::: - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app to see IconElement in action](winui3gallery://item/IconElement) - - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -### Icon properties - -You often place icons in your UI by assigning one to an _`icon`_ property of another XAML element. _`Icon`_ properties that include _`Source`_ in the name take an IconSource; otherwise, the property takes an IconElement. - -This list shows some common elements that have an _`icon`_ property. - -|Commands/Actions |Navigation |Status/Other | -|---------|---------|---------| -|[AppBarButton.Icon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton.icon) [AppBarToggleButton.Icon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbartogglebutton.icon) [AutoSuggestBox.QueryIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.autosuggestbox.queryicon) [MenuFlyoutItem.Icon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.menuflyoutitem.icon) [MenuFlyoutSubItem.Icon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.menuflyoutsubitem.icon) [SwipeItem.IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.swipeitem.iconsource) [XamlUICommand.IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.input.xamluicommand.iconsource) | [NavigationViewItem.Icon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.navigationviewitem.icon) [SelectorBarItem.Icon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.selectorbaritem.icon) [TabViewItem.IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.tabviewitem.iconsource) | [AnimatedIcon.FallbackIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.animatedicon.fallbackiconsource) [AnimatedIconSource.FallbackIconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.animatediconsource.fallbackiconsource) [IconSourceElement.IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconsourceelement.iconsource) [InfoBadge.IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.infobadge.iconsource) [InfoBar.IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.infobar.iconsource) [TeachingTip.IconSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.teachingtip.iconsource) | - -> [!TIP] -> You can view these controls in the WinUI 3 Gallery app to see examples of how icons are used with them. - -The remaining examples on this page show how to assign an icon to the _`icon`_ property of a control. - -## FontIcon and SymbolIcon - -The most common way to add icons to your app is to use the system icons provided by the icon fonts in Windows. Windows 11 introduces a new system icon font, [Segoe Fluent Icons](../style/segoe-fluent-icons-font.md), which provides more than 1,000 icons designed for the Fluent Design language. It might not be intuitive to get an icon from a font, but Windows font display technology means these icons will look crisp and sharp on any display, at any resolution, and at any size. - -> [!IMPORTANT] -> **Default font family** -> -> Rather than specifying a [FontFamily](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.fonticon.fontfamily) directly, FontIcon and SymbolIcon use the font family defined by the `SymbolThemeFontFamily` XAML theme resource. By default, this resource uses the Segoe Fluent Icon font family. If your app is run on Windows 10, version 20H2 or earlier, the Segoe Fluent Icon font family is not available and the `SymbolThemeFontFamily` resource falls back to the [Segoe MDL2 Assets](../style/segoe-ui-symbol-font.md) font family instead. - -### Symbol enumeration - -Many common glyphs from the `SymbolThemeFontFamily` are included in the [Symbol](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symbol) enumeration. If the glyph you need is available as a Symbol, you can use a [SymbolIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symbolicon) anywhere you would use a FontIcon with the default font family. - -You also use Symbol names to set an _`icon`_ property in XAML using [attribute syntax](/windows/uwp/xaml-platform/xaml-syntax-guide#setting-a-property-by-using-attribute-syntax), like this - -```xaml - -``` - -:::image type="content" source="iconography/images/icon-send.png" alt-text="A button with the send icon, an outline of an arrow head pointing to the right"::: - -> [!TIP] -> You can only use Symbol names to set an _`icon`_ property using the shortened [attribute syntax](/windows/uwp/xaml-platform/xaml-syntax-guide#setting-a-property-by-using-attribute-syntax). All other icon types must be set using the longer [property element syntax](/windows/uwp/xaml-platform/xaml-syntax-guide#setting-a-property-by-using-property-element-syntax), as shown in other examples on this page. - -### Font icons - -Only a small subset of Segoe Fluent Icon glyphs are available in the [Symbol](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symbol) enumeration. To use any of the other available glyphs, use a [FontIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.fonticon). This example shows how to create an [AppBarButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.appbarbutton) with the `SendFill` icon. - -```xaml - - - - - - -``` - -:::image type="content" source="iconography/images/icon-send-fill.png" alt-text="A button with the send fill icon, a filled in arrow head pointing to the right"::: - -If you don't specify a [FontFamily](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.fonticon.fontfamily), or you specify a FontFamily that is not available on the system at runtime, the FontIcon falls back to the default font family defined by the `SymbolThemeFontFamily` theme resource. - -You can also specify an icon using a Glyph value from any available font. This example shows how to use a Glyph from the Segoe UI Emoji font. - -```xaml - - - - - -``` - -:::image type="content" source="iconography/images/icon-play-emoji-font.png" alt-text="A button with the play icon from the Segoe UI Emoji font, a white arrow head pointing to the right on a blue background"::: - -For more information and examples, see the [FontIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.fonticon) and [SymbolIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.symbolicon) class documentation. - -> [!TIP] -> Use the Iconography page in the WinUI 3 Gallery app to view, search, and copy code for all the icons available in Segoe Fluent Icons. - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app to the Iconography page](winui3gallery:/item/Iconography) - -## AnimatedIcon - -Motion is an important part of the Fluent Design language. Animated icons draw attention to specific entry points, provide feedback from state to state, and add delight to an interaction. - -You can use animated icons to implement lightweight, vector-based icons with motion using [Lottie](/windows/communitytoolkit/animations/lottie) animations. - -For more information and examples, see [Animated icons](../controls/animated-icon.md) and the [AnimatedIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.animatedicon) class documentation. - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app to see AnimatedIcon in action](winui3gallery:/item/AnimatedIcon) - -## PathIcon - -You can use a [PathIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pathicon) to create custom icons that use vector-based shapes, so they always look sharp. However, creating a shape using a XAML [Geometry](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.geometry) is complicated because you have to individually specify each point and curve. - -This example shows two different ways to define the Geometry used in a PathIcon. - -```xaml - - - - - - - - - - - - - - - - - - - - - -``` - -:::image type="content" source="iconography/images/icon-abstract-path.png" alt-text="A button with a custom path icon"::: -:::image type="content" source="iconography/images/icon-circles-path.png" alt-text="A button with a custom path icon, two circles around a center point"::: - -To learn more about using [Geometry](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.geometry) classes to create custom shapes, see the class documentation and [Move and draw commands for geometries](/windows/uwp/xaml-platform/move-draw-commands-syntax). Also see the [WPF Geometry documentation](/dotnet/desktop/wpf/graphics-multimedia/geometry-overview). The WinUI Geometry class doesn't have all the same features as the WPF class, but creating shapes is the same for both. - -For more information and examples, see the [PathIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.pathicon) class documentation. - -## BitmapIcon and ImageIcon - -You can use a [BitmapIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.bitmapicon) or [ImageIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.imageicon) to create an icon from an image file (such as PNG, GIF, or JPEG), although we don't recommend it if another option is available. Bitmap images are created at a specific size, so they have to be scaled up or down depending on how large you want the icon to be and the resolution of the screen. When the image is scaled down (shrunk), it can appear blurry. When it's scaled up, it can appear blocky and pixelated. - -### BitmapIcon - -By default, a [BitmapIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.bitmapicon) strips out all color information from the image and renders all non-transparent pixels in the [Foreground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconelement.foreground) color. To create a monochrome icon, use a solid image on a transparent background in PNG format. Other image formats will load apparently without error but result in a solid block of the Foreground color. - -```xaml - - - - - -``` - -:::image type="content" source="iconography/images/icon-slices-bitmap.png" alt-text="A button with a bitmap icon, pie shaped slices in black and white"::: - -You can override the default behavior by setting the [ShowAsMonochrome](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.bitmapicon.showasmonochrome) property to `false`. In this case, the BitmapIcon behaves the same as an ImageIcon for supported bitmap file types (SVG files are not supported). - -```xaml - -``` - -For more information and examples, see the [BitmapIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.bitmapicon) class documentation. - -> [!TIP] -> Usage of BitmapIcon is similar to usage of BitmapImage; see the [BitmapImage](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.imaging.bitmapimage) class for more information that's applicable to BitmapIcon, like setting the UriSource property in code. - -### ImageIcon - -An [ImageIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.imageicon) shows the image provided by one of the [ImageSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.imagesource)-derived classes. The most common is [BitmapSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.imaging.bitmapsource), but as mentioned previously, we don't recommend bitmap images for icons due to potential scaling issues. - -Scalable Vector Graphics (SVG) resources are ideal for icons, because they always look sharp at any size or resolution. You can use an [SVGImageSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.imaging.svgimagesource) with an ImageIcon, which supports secure static mode from the SVG specification but does not support animations or interactions. -For more information, see [SVGImageSource](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.imaging.svgimagesource) and [SVG support](/windows/desktop/Direct2D/svg-support). - -An ImageIcon ignores the [Foreground](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.iconelement.foreground) property, so it always shows the image in its original color. Because Foreground color is ignored, the icon doesn't respond to visual state changes when used in a button or other similar control. - -```xaml - - - - - -``` - -:::image type="content" source="iconography/images/icon-slices-image-svg.png" alt-text="A button with an image icon, pie shaped slices in different colors"::: - -For more information and examples, see the [ImageIcon](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.imageicon) class documentation. - -> [!TIP] -> Usage of ImageIcon is similar to the Image control; see the [Image](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.image) class for more information that's applicable to ImageIcon. One notable difference is that with ImageIcon, only the first frame of a multi-frame image (like an animated GIF) is used. To use animated icons, see [AnimatedIcon](../controls/animated-icon.md). - -## Related articles - -- [Iconography in Windows](../signature-experiences/iconography.md) -- [App icons](./iconography/overview.md) -- [AnimatedIcon](../controls/animated-icon.md) -- [Command bar](../controls/command-bar.md) diff --git a/hub/apps/design/style/images/ProgressBar.psd b/hub/apps/design/style/images/ProgressBar.psd deleted file mode 100644 index 0b6c1db20a..0000000000 Binary files a/hub/apps/design/style/images/ProgressBar.psd and /dev/null differ diff --git a/hub/apps/design/style/images/RadioButton.psd b/hub/apps/design/style/images/RadioButton.psd deleted file mode 100644 index a671004680..0000000000 Binary files a/hub/apps/design/style/images/RadioButton.psd and /dev/null differ diff --git a/hub/apps/design/style/images/Scrollbar.psd b/hub/apps/design/style/images/Scrollbar.psd deleted file mode 100644 index b89582eaae..0000000000 Binary files a/hub/apps/design/style/images/Scrollbar.psd and /dev/null differ diff --git a/hub/apps/design/style/images/Slider.psd b/hub/apps/design/style/images/Slider.psd deleted file mode 100644 index ca9b62f735..0000000000 Binary files a/hub/apps/design/style/images/Slider.psd and /dev/null differ diff --git a/hub/apps/design/style/images/TextButtons.psd b/hub/apps/design/style/images/TextButtons.psd deleted file mode 100644 index da2c30319e..0000000000 Binary files a/hub/apps/design/style/images/TextButtons.psd and /dev/null differ diff --git a/hub/apps/design/style/images/TextInput.psd b/hub/apps/design/style/images/TextInput.psd deleted file mode 100644 index b0e65ac9af..0000000000 Binary files a/hub/apps/design/style/images/TextInput.psd and /dev/null differ diff --git a/hub/apps/design/style/images/ToggleSwitch.psd b/hub/apps/design/style/images/ToggleSwitch.psd deleted file mode 100644 index 43ccbc2c87..0000000000 Binary files a/hub/apps/design/style/images/ToggleSwitch.psd and /dev/null differ diff --git a/hub/apps/design/style/images/XAML-controls-gallery-app-icon.png b/hub/apps/design/style/images/XAML-controls-gallery-app-icon.png deleted file mode 100644 index c1b7232c4c..0000000000 Binary files a/hub/apps/design/style/images/XAML-controls-gallery-app-icon.png and /dev/null differ diff --git a/hub/apps/design/style/images/acrylic-dark-theme-base.png b/hub/apps/design/style/images/acrylic-dark-theme-base.png deleted file mode 100644 index 7e609e059a..0000000000 Binary files a/hub/apps/design/style/images/acrylic-dark-theme-base.png and /dev/null differ diff --git a/hub/apps/design/style/images/acrylic-light-theme-base.png b/hub/apps/design/style/images/acrylic-light-theme-base.png deleted file mode 100644 index 24ee403472..0000000000 Binary files a/hub/apps/design/style/images/acrylic-light-theme-base.png and /dev/null differ diff --git a/hub/apps/design/style/images/acrylic-recipe-diagram.jpg b/hub/apps/design/style/images/acrylic-recipe-diagram.jpg deleted file mode 100644 index f1b2ba5863..0000000000 Binary files a/hub/apps/design/style/images/acrylic-recipe-diagram.jpg and /dev/null differ diff --git a/hub/apps/design/style/images/acrylic-transient-context-menu.png b/hub/apps/design/style/images/acrylic-transient-context-menu.png deleted file mode 100644 index cc83bba029..0000000000 Binary files a/hub/apps/design/style/images/acrylic-transient-context-menu.png and /dev/null differ diff --git a/hub/apps/design/style/images/alignment.psd b/hub/apps/design/style/images/alignment.psd deleted file mode 100644 index a614d8bbf4..0000000000 Binary files a/hub/apps/design/style/images/alignment.psd and /dev/null differ diff --git a/hub/apps/design/style/images/app-acrylic-dark-theme.png b/hub/apps/design/style/images/app-acrylic-dark-theme.png deleted file mode 100644 index cfbec41622..0000000000 Binary files a/hub/apps/design/style/images/app-acrylic-dark-theme.png and /dev/null differ diff --git a/hub/apps/design/style/images/app-icons/all-visual-assets.png b/hub/apps/design/style/images/app-icons/all-visual-assets.png deleted file mode 100644 index 9dcc55ce45..0000000000 Binary files a/hub/apps/design/style/images/app-icons/all-visual-assets.png and /dev/null differ diff --git a/hub/apps/design/style/images/app-icons/storelogodisplay.png b/hub/apps/design/style/images/app-icons/storelogodisplay.png deleted file mode 100644 index a47796b3c5..0000000000 Binary files a/hub/apps/design/style/images/app-icons/storelogodisplay.png and /dev/null differ diff --git a/hub/apps/design/style/images/app-icons/tile-assets1.png b/hub/apps/design/style/images/app-icons/tile-assets1.png deleted file mode 100644 index df65a74f78..0000000000 Binary files a/hub/apps/design/style/images/app-icons/tile-assets1.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance01.jpg b/hub/apps/design/style/images/assetguidance01.jpg deleted file mode 100644 index 8e870a188e..0000000000 Binary files a/hub/apps/design/style/images/assetguidance01.jpg and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance05.png b/hub/apps/design/style/images/assetguidance05.png deleted file mode 100644 index a7bc9be410..0000000000 Binary files a/hub/apps/design/style/images/assetguidance05.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance09.png b/hub/apps/design/style/images/assetguidance09.png deleted file mode 100644 index 510bdab6ee..0000000000 Binary files a/hub/apps/design/style/images/assetguidance09.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance10.png b/hub/apps/design/style/images/assetguidance10.png deleted file mode 100644 index 51eddf8b96..0000000000 Binary files a/hub/apps/design/style/images/assetguidance10.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance11.png b/hub/apps/design/style/images/assetguidance11.png deleted file mode 100644 index 418e3e140c..0000000000 Binary files a/hub/apps/design/style/images/assetguidance11.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance12.png b/hub/apps/design/style/images/assetguidance12.png deleted file mode 100644 index c6d633ff5d..0000000000 Binary files a/hub/apps/design/style/images/assetguidance12.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance13.png b/hub/apps/design/style/images/assetguidance13.png deleted file mode 100644 index f8949cfc6a..0000000000 Binary files a/hub/apps/design/style/images/assetguidance13.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance14.png b/hub/apps/design/style/images/assetguidance14.png deleted file mode 100644 index e7c80ddb69..0000000000 Binary files a/hub/apps/design/style/images/assetguidance14.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance15.png b/hub/apps/design/style/images/assetguidance15.png deleted file mode 100644 index 4a73efd885..0000000000 Binary files a/hub/apps/design/style/images/assetguidance15.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance21.png b/hub/apps/design/style/images/assetguidance21.png deleted file mode 100644 index 53535725b3..0000000000 Binary files a/hub/apps/design/style/images/assetguidance21.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance22.png b/hub/apps/design/style/images/assetguidance22.png deleted file mode 100644 index f380ae5ba0..0000000000 Binary files a/hub/apps/design/style/images/assetguidance22.png and /dev/null differ diff --git a/hub/apps/design/style/images/assetguidance23.png b/hub/apps/design/style/images/assetguidance23.png deleted file mode 100644 index 98f9686d88..0000000000 Binary files a/hub/apps/design/style/images/assetguidance23.png and /dev/null differ diff --git a/hub/apps/design/style/images/background-acrylic-dark-theme.png b/hub/apps/design/style/images/background-acrylic-dark-theme.png deleted file mode 100644 index d453641261..0000000000 Binary files a/hub/apps/design/style/images/background-acrylic-dark-theme.png and /dev/null differ diff --git a/hub/apps/design/style/images/character-count.psd b/hub/apps/design/style/images/character-count.psd deleted file mode 100644 index ea13de93e0..0000000000 Binary files a/hub/apps/design/style/images/character-count.psd and /dev/null differ diff --git a/hub/apps/design/style/images/checkbox.psd b/hub/apps/design/style/images/checkbox.psd deleted file mode 100644 index 7324617f9a..0000000000 Binary files a/hub/apps/design/style/images/checkbox.psd and /dev/null differ diff --git a/hub/apps/design/style/images/clipping.psd b/hub/apps/design/style/images/clipping.psd deleted file mode 100644 index 54a89f182c..0000000000 Binary files a/hub/apps/design/style/images/clipping.psd and /dev/null differ diff --git a/hub/apps/design/style/images/color/accent-color-palette.svg b/hub/apps/design/style/images/color/accent-color-palette.svg deleted file mode 100644 index a6c13aafa5..0000000000 --- a/hub/apps/design/style/images/color/accent-color-palette.svg +++ /dev/null @@ -1,88 +0,0 @@ - -accent-color-palette -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/brand-color.svg b/hub/apps/design/style/images/color/brand-color.svg deleted file mode 100644 index 8747f84243..0000000000 --- a/hub/apps/design/style/images/color/brand-color.svg +++ /dev/null @@ -1,123 +0,0 @@ - -brand-color -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/color-on-color.png b/hub/apps/design/style/images/color/color-on-color.png deleted file mode 100644 index e6fb58cd7a..0000000000 Binary files a/hub/apps/design/style/images/color/color-on-color.png and /dev/null differ diff --git a/hub/apps/design/style/images/color/color-on-color.psd b/hub/apps/design/style/images/color/color-on-color.psd deleted file mode 100644 index 4f24da619b..0000000000 Binary files a/hub/apps/design/style/images/color/color-on-color.psd and /dev/null differ diff --git a/hub/apps/design/style/images/color/color-picker.svg b/hub/apps/design/style/images/color/color-picker.svg deleted file mode 100644 index cac70787b2..0000000000 --- a/hub/apps/design/style/images/color/color-picker.svg +++ /dev/null @@ -1,125 +0,0 @@ - -color-picker -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/color-theme-button.svg b/hub/apps/design/style/images/color/color-theme-button.svg deleted file mode 100644 index 1eef93d157..0000000000 --- a/hub/apps/design/style/images/color/color-theme-button.svg +++ /dev/null @@ -1,56 +0,0 @@ - -color-theme-button -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/custom-accent.svg b/hub/apps/design/style/images/color/custom-accent.svg deleted file mode 100644 index 364f9f750f..0000000000 --- a/hub/apps/design/style/images/color/custom-accent.svg +++ /dev/null @@ -1,23 +0,0 @@ - -custom-accent -Created using Figma - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/dark-theme.svg b/hub/apps/design/style/images/color/dark-theme.svg deleted file mode 100644 index ce79ec09ac..0000000000 --- a/hub/apps/design/style/images/color/dark-theme.svg +++ /dev/null @@ -1,187 +0,0 @@ - -dark-theme -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/illo-colorblindness.svg b/hub/apps/design/style/images/color/illo-colorblindness.svg deleted file mode 100644 index 2bd7af2379..0000000000 --- a/hub/apps/design/style/images/color/illo-colorblindness.svg +++ /dev/null @@ -1,49 +0,0 @@ - -illo-colorblindness -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/illo-contrast.svg b/hub/apps/design/style/images/color/illo-contrast.svg deleted file mode 100644 index 2e7d96f6a7..0000000000 --- a/hub/apps/design/style/images/color/illo-contrast.svg +++ /dev/null @@ -1,42 +0,0 @@ - -illo-contrast -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/illo-lighting.svg b/hub/apps/design/style/images/color/illo-lighting.svg deleted file mode 100644 index 8f6c2debb0..0000000000 --- a/hub/apps/design/style/images/color/illo-lighting.svg +++ /dev/null @@ -1,47 +0,0 @@ - -illo-lighting -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/light-theme.svg b/hub/apps/design/style/images/color/light-theme.svg deleted file mode 100644 index 94dc846937..0000000000 --- a/hub/apps/design/style/images/color/light-theme.svg +++ /dev/null @@ -1,187 +0,0 @@ - -light-theme -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/list-view.svg b/hub/apps/design/style/images/color/list-view.svg deleted file mode 100644 index 261bfb8fe7..0000000000 --- a/hub/apps/design/style/images/color/list-view.svg +++ /dev/null @@ -1,101 +0,0 @@ - -list-view -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/theme-brushes.svg b/hub/apps/design/style/images/color/theme-brushes.svg deleted file mode 100644 index 19391e38fe..0000000000 --- a/hub/apps/design/style/images/color/theme-brushes.svg +++ /dev/null @@ -1,265 +0,0 @@ - -theme-brushes -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/user-accent.svg b/hub/apps/design/style/images/color/user-accent.svg deleted file mode 100644 index a8aacac9bd..0000000000 --- a/hub/apps/design/style/images/color/user-accent.svg +++ /dev/null @@ -1,23 +0,0 @@ - -user-accent -Created using Figma - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/user-selected-accent.svg b/hub/apps/design/style/images/color/user-selected-accent.svg deleted file mode 100644 index 1d436df11c..0000000000 --- a/hub/apps/design/style/images/color/user-selected-accent.svg +++ /dev/null @@ -1,128 +0,0 @@ - -user-selected-accent -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/color/windows-controls.svg b/hub/apps/design/style/images/color/windows-controls.svg deleted file mode 100644 index 4c07e4c560..0000000000 --- a/hub/apps/design/style/images/color/windows-controls.svg +++ /dev/null @@ -1,1642 +0,0 @@ - -windows-controls -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/consistency/consistency-spectrum.png b/hub/apps/design/style/images/consistency/consistency-spectrum.png deleted file mode 100644 index 98042ea178..0000000000 Binary files a/hub/apps/design/style/images/consistency/consistency-spectrum.png and /dev/null differ diff --git a/hub/apps/design/style/images/consistency/design-consistency-model.png b/hub/apps/design/style/images/consistency/design-consistency-model.png deleted file mode 100644 index 1197fb2a2a..0000000000 Binary files a/hub/apps/design/style/images/consistency/design-consistency-model.png and /dev/null differ diff --git a/hub/apps/design/style/images/custom-acrylic-swatches-dark-theme.png b/hub/apps/design/style/images/custom-acrylic-swatches-dark-theme.png deleted file mode 100644 index 14f0faa0a0..0000000000 Binary files a/hub/apps/design/style/images/custom-acrylic-swatches-dark-theme.png and /dev/null differ diff --git a/hub/apps/design/style/images/custom-acrylic-swatches-light-theme.png b/hub/apps/design/style/images/custom-acrylic-swatches-light-theme.png deleted file mode 100644 index e886cdbfaf..0000000000 Binary files a/hub/apps/design/style/images/custom-acrylic-swatches-light-theme.png and /dev/null differ diff --git a/hub/apps/design/style/images/desktop.ini b/hub/apps/design/style/images/desktop.ini deleted file mode 100644 index 547ff62635..0000000000 --- a/hub/apps/design/style/images/desktop.ini +++ /dev/null @@ -1,3 +0,0 @@ -[LocalizedFileNames] -NestedListContent.png=@NestedListContent.png,0 -RevealExamples_Collage.png=@RevealExamples_Collage.png,0 diff --git a/hub/apps/design/style/images/do.svg b/hub/apps/design/style/images/do.svg deleted file mode 100644 index df09140b59..0000000000 --- a/hub/apps/design/style/images/do.svg +++ /dev/null @@ -1,30 +0,0 @@ - -do -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/dont.svg b/hub/apps/design/style/images/dont.svg deleted file mode 100644 index 1c884cfeb3..0000000000 --- a/hub/apps/design/style/images/dont.svg +++ /dev/null @@ -1,35 +0,0 @@ - -dont -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/feature.psd b/hub/apps/design/style/images/feature.psd deleted file mode 100644 index 72a0132d10..0000000000 Binary files a/hub/apps/design/style/images/feature.psd and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e001.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e001.png deleted file mode 100644 index 169ad62494..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e001.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e002.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e002.png deleted file mode 100644 index ca6e878b37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e002.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e003.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e003.png deleted file mode 100644 index 4743e6d47d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e003.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e004.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e004.png deleted file mode 100644 index 11413e1d40..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e004.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e005.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e005.png deleted file mode 100644 index bf770b0315..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e005.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e006.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e006.png deleted file mode 100644 index 47451dce5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e006.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e007.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e007.png deleted file mode 100644 index 6fd681f8ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e007.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e008.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e008.png deleted file mode 100644 index 169ad62494..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e008.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e009.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e009.png deleted file mode 100644 index ca6e878b37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e009.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00a.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00b.png deleted file mode 100644 index 201360a571..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00c.png deleted file mode 100644 index 6fd681f8ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00e.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00f.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e00f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e010.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e010.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e010.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e011.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e011.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e011.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e012.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e012.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e012.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e013.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e013.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e013.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e014.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e014.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e014.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e015.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e015.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e015.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e016.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e016.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e016.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e017.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e017.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e017.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e018.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e018.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e018.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e019.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e019.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e019.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e052.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e052.png deleted file mode 100644 index 7ef386e57e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e052.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e07f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e07f.png deleted file mode 100644 index 1bb58207a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e07f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e081.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e081.png deleted file mode 100644 index 169ad62494..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e081.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e082.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e082.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e082.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e087.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e087.png deleted file mode 100644 index 6b71b2c829..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e087.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e08f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e08f.png deleted file mode 100644 index 28a13e0b16..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e08f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e094.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e094.png deleted file mode 100644 index 8d584d7816..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e094.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e096.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e096.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e096.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e097.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e097.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e097.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e098.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e098.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e098.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e099.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e099.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e099.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09a.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09b.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09c.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09d.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09e.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09f.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e09f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a0.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a1.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a2.png deleted file mode 100644 index 6dc75f6f89..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a5.png deleted file mode 100644 index 201360a571..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a6.png deleted file mode 100644 index a918ed4d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ab.png deleted file mode 100644 index e496ce5dc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ad.png deleted file mode 100644 index e496ce5dc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ae.png deleted file mode 100644 index e496ce5dc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b4.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b5.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b8.png deleted file mode 100644 index 67ba1cbc21..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0c4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0c4.png deleted file mode 100644 index a918ed4d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0d5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0d5.png deleted file mode 100644 index a918ed4d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e2.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e3.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e4.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e5.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e7.png deleted file mode 100644 index 169ad62494..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e0e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e100.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e100.png deleted file mode 100644 index 61fc1369ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e100.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e101.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e101.png deleted file mode 100644 index 1f1a81dc73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e101.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e102.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e102.png deleted file mode 100644 index 4b00605f5d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e102.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e103.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e103.png deleted file mode 100644 index 6aebab163c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e103.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e104.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e104.png deleted file mode 100644 index c4bf6643fa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e104.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e105.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e105.png deleted file mode 100644 index 74a36daec8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e105.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e106.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e106.png deleted file mode 100644 index 6f21d14b8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e106.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e107.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e107.png deleted file mode 100644 index ebe5adb88a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e107.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e108.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e108.png deleted file mode 100644 index 8d28787065..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e108.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e109.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e109.png deleted file mode 100644 index d927ee5731..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e109.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10a.png deleted file mode 100644 index 6f21d14b8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10b.png deleted file mode 100644 index 0558562e72..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10c.png deleted file mode 100644 index 0eae13208a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10d.png deleted file mode 100644 index 6c1c7309ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10e.png deleted file mode 100644 index 031630f246..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10f.png deleted file mode 100644 index e4f63c1adf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e10f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e110.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e110.png deleted file mode 100644 index 19da9498e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e110.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e111.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e111.png deleted file mode 100644 index e496ce5dc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e111.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e112.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e112.png deleted file mode 100644 index a918ed4d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e112.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e113.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e113.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e113.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e114.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e114.png deleted file mode 100644 index fafa755e08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e114.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e115.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e115.png deleted file mode 100644 index e2c2125f54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e115.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e116.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e116.png deleted file mode 100644 index 1f5cb49c01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e116.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e117.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e117.png deleted file mode 100644 index 19b2512f9d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e117.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e118.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e118.png deleted file mode 100644 index b3a94eec3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e118.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e119.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e119.png deleted file mode 100644 index c34b716467..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e119.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11a.png deleted file mode 100644 index 8d584d7816..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11b.png deleted file mode 100644 index c49f6c757e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11c.png deleted file mode 100644 index cf9cac3b3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11d.png deleted file mode 100644 index a33bca285b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11e.png deleted file mode 100644 index f4cb2455c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11f.png deleted file mode 100644 index 6094a2ca9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e11f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e120.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e120.png deleted file mode 100644 index 6592583c8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e120.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e121.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e121.png deleted file mode 100644 index b2b1e8a9d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e121.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e122.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e122.png deleted file mode 100644 index d610219de7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e122.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e123.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e123.png deleted file mode 100644 index 5024dc46c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e123.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e124.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e124.png deleted file mode 100644 index 37586a959e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e124.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e125.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e125.png deleted file mode 100644 index 709f6c66fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e125.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e126.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e126.png deleted file mode 100644 index d3184a4fc4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e126.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e127.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e127.png deleted file mode 100644 index 38fa2f9099..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e127.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e128.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e128.png deleted file mode 100644 index 2b4fcf1ca5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e128.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e129.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e129.png deleted file mode 100644 index 101e9be244..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e129.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12a.png deleted file mode 100644 index f53d3bade2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12b.png deleted file mode 100644 index d714f5af73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12c.png deleted file mode 100644 index fbe5d9beea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12d.png deleted file mode 100644 index 40b53bcf1f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12e.png deleted file mode 100644 index ca60e10e93..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12f.png deleted file mode 100644 index 60d5d90159..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e12f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e130.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e130.png deleted file mode 100644 index 7fa26e9e5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e130.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e131.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e131.png deleted file mode 100644 index d3dfacd585..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e131.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e132.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e132.png deleted file mode 100644 index 4daeea9694..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e132.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e133.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e133.png deleted file mode 100644 index 24fc572c16..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e133.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e134.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e134.png deleted file mode 100644 index b971bb8bbe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e134.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e135.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e135.png deleted file mode 100644 index b94878c745..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e135.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e136.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e136.png deleted file mode 100644 index dc3e8feb42..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e136.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e137.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e137.png deleted file mode 100644 index 6fe36e986c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e137.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e138.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e138.png deleted file mode 100644 index 04ebed4a27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e138.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e139.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e139.png deleted file mode 100644 index 67735ae6c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e139.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13a.png deleted file mode 100644 index e2ea556b98..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13b.png deleted file mode 100644 index ba0910db7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13c.png deleted file mode 100644 index 87ad732eb9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13d.png deleted file mode 100644 index 27f41a9d74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13e.png deleted file mode 100644 index e2949563c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13f.png deleted file mode 100644 index 3b937a5ae0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e13f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e140.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e140.png deleted file mode 100644 index 9f4f4e1b8b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e140.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e141.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e141.png deleted file mode 100644 index 998a2d0d6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e141.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e142.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e142.png deleted file mode 100644 index 1afe85ec9d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e142.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e143.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e143.png deleted file mode 100644 index d52865d339..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e143.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e144.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e144.png deleted file mode 100644 index 6b71b2c829..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e144.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e145.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e145.png deleted file mode 100644 index a5255a7bf6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e145.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e146.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e146.png deleted file mode 100644 index 273e04fc7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e146.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e147.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e147.png deleted file mode 100644 index bf3e9e0ccf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e147.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e148.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e148.png deleted file mode 100644 index aef69bbdd4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e148.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e149.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e149.png deleted file mode 100644 index 8d80c6b8b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e149.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14a.png deleted file mode 100644 index 29ab1084b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14b.png deleted file mode 100644 index ae488f9c8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14c.png deleted file mode 100644 index 4707f42fc1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14d.png deleted file mode 100644 index 98c2dc25c9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14e.png deleted file mode 100644 index 42444fc09d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14f.png deleted file mode 100644 index 63a919e063..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e14f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e150.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e150.png deleted file mode 100644 index 3ca3c9f4e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e150.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e151.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e151.png deleted file mode 100644 index d54bfadd69..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e151.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e152.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e152.png deleted file mode 100644 index b422e7da36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e152.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e153.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e153.png deleted file mode 100644 index 8729af8d7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e153.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e154.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e154.png deleted file mode 100644 index 04ebed4a27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e154.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e155.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e155.png deleted file mode 100644 index 8e7c3a97f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e155.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e156.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e156.png deleted file mode 100644 index 915202e1ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e156.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e158.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e158.png deleted file mode 100644 index 763eed8bba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e158.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e159.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e159.png deleted file mode 100644 index c64be3fea4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e159.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15a.png deleted file mode 100644 index 0a2131118f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15b.png deleted file mode 100644 index da228859be..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15c.png deleted file mode 100644 index db900d6946..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15d.png deleted file mode 100644 index 7ffed96f50..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15e.png deleted file mode 100644 index bf78981931..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15f.png deleted file mode 100644 index e050611d3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e15f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e160.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e160.png deleted file mode 100644 index 7fa26e9e5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e160.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e161.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e161.png deleted file mode 100644 index f51dca150e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e161.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e162.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e162.png deleted file mode 100644 index 62e93f10bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e162.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e163.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e163.png deleted file mode 100644 index cbe76942b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e163.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e164.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e164.png deleted file mode 100644 index 93dccf88f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e164.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e165.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e165.png deleted file mode 100644 index 1520712481..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e165.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e166.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e166.png deleted file mode 100644 index 77f56a3779..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e166.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e167.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e167.png deleted file mode 100644 index 560232f34d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e167.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e168.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e168.png deleted file mode 100644 index 9b25fdcccd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e168.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e169.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e169.png deleted file mode 100644 index 1e5bf8d1a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e169.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16a.png deleted file mode 100644 index 5b68b4d205..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16b.png deleted file mode 100644 index 23f3e49a02..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16c.png deleted file mode 100644 index 8e80db3c58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16d.png deleted file mode 100644 index fc66d42e9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16e.png deleted file mode 100644 index dd980699b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16f.png deleted file mode 100644 index b5143836be..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e16f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e170.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e170.png deleted file mode 100644 index 85faa355e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e170.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e171.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e171.png deleted file mode 100644 index da1ba66a70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e171.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e172.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e172.png deleted file mode 100644 index 8464c88bf5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e172.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e173.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e173.png deleted file mode 100644 index 68af6f5cd0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e173.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e174.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e174.png deleted file mode 100644 index 64b8579d4f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e174.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e175.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e175.png deleted file mode 100644 index 1217fb4e7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e175.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e176.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e176.png deleted file mode 100644 index 9f4f4e1b8b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e176.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e177.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e177.png deleted file mode 100644 index 3b937a5ae0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e177.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e178.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e178.png deleted file mode 100644 index fe06aca836..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e178.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e179.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e179.png deleted file mode 100644 index 28582d40ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e179.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17a.png deleted file mode 100644 index 4cb7e174d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17b.png deleted file mode 100644 index ed83a1fa81..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17c.png deleted file mode 100644 index 8f845a9dff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17d.png deleted file mode 100644 index afc7dabd0d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e17d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e181.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e181.png deleted file mode 100644 index 49ecc1f38d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e181.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e182.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e182.png deleted file mode 100644 index 3353aefbb7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e182.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e183.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e183.png deleted file mode 100644 index cf9cac3b3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e183.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e184.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e184.png deleted file mode 100644 index a2e7caf5d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e184.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e185.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e185.png deleted file mode 100644 index 098a778184..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e185.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e186.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e186.png deleted file mode 100644 index 615d8bd88b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e186.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e187.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e187.png deleted file mode 100644 index f71dc9ea73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e187.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e188.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e188.png deleted file mode 100644 index 429ede02a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e188.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e189.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e189.png deleted file mode 100644 index 1cd9fcc439..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e189.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18a.png deleted file mode 100644 index bd24a8c160..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18b.png deleted file mode 100644 index 7ef386e57e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18c.png deleted file mode 100644 index ad6281507c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18d.png deleted file mode 100644 index 21d2b1541b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18e.png deleted file mode 100644 index 42bf08bf05..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18f.png deleted file mode 100644 index 734cfed7a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e18f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e190.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e190.png deleted file mode 100644 index f2a8c0af3d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e190.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e191.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e191.png deleted file mode 100644 index 481ab70da2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e191.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e192.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e192.png deleted file mode 100644 index e4e2d8e53b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e192.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e193.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e193.png deleted file mode 100644 index 821b3c2594..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e193.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e194.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e194.png deleted file mode 100644 index 9e713c479b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e194.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e195.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e195.png deleted file mode 100644 index fb90b31767..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e195.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e196.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e196.png deleted file mode 100644 index 18404a1e79..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e196.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e197.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e197.png deleted file mode 100644 index 17aadeee74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e197.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e198.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e198.png deleted file mode 100644 index 386a1c3c2b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e198.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e199.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e199.png deleted file mode 100644 index f531bd8b4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e199.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19a.png deleted file mode 100644 index 4a2ad0d2b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19b.png deleted file mode 100644 index a1c2de336f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19c.png deleted file mode 100644 index 6ee84d01e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19d.png deleted file mode 100644 index 9b19d80b00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19e.png deleted file mode 100644 index f72f465db2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19f.png deleted file mode 100644 index d64030f986..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e19f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a0.png deleted file mode 100644 index 5c4b1e33ca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a1.png deleted file mode 100644 index 2ecc967594..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a2.png deleted file mode 100644 index d7f300022a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a3.png deleted file mode 100644 index 5284a70036..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a4.png deleted file mode 100644 index 72d714cbec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a5.png deleted file mode 100644 index 1b1e905ee6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a6.png deleted file mode 100644 index e7b57264f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a7.png deleted file mode 100644 index 88ff7fcc41..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a8.png deleted file mode 100644 index 71e1c64ea3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1aa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1aa.png deleted file mode 100644 index 0fbeaff5de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ab.png deleted file mode 100644 index 273e04fc7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ac.png deleted file mode 100644 index a5255a7bf6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ad.png deleted file mode 100644 index 2bfa0c58ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ae.png deleted file mode 100644 index 1c54d9b72c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1af.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1af.png deleted file mode 100644 index 873dd2e31b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b0.png deleted file mode 100644 index c8a56b05ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b1.png deleted file mode 100644 index 3bbcd3eeef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b2.png deleted file mode 100644 index 58b5d5454c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b3.png deleted file mode 100644 index 0e224626b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b4.png deleted file mode 100644 index dc0295f680..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b5.png deleted file mode 100644 index 4a2ad0d2b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b6.png deleted file mode 100644 index f531bd8b4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b7.png deleted file mode 100644 index c30054a439..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b8.png deleted file mode 100644 index 805c706439..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b9.png deleted file mode 100644 index 05925ff164..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ba.png deleted file mode 100644 index 2e31f0caf3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bb.png deleted file mode 100644 index b3327e09e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bc.png deleted file mode 100644 index 376d1df49c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bd.png deleted file mode 100644 index a38025c310..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1be.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1be.png deleted file mode 100644 index 0811cd02ed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1be.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bf.png deleted file mode 100644 index 33bd72789d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c0.png deleted file mode 100644 index e288fa3281..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c2.png deleted file mode 100644 index fe99cdd655..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c3.png deleted file mode 100644 index 23782a15f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c4.png deleted file mode 100644 index 0038ec333d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c5.png deleted file mode 100644 index c9ca40d3e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c6.png deleted file mode 100644 index e02e2b60eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c7.png deleted file mode 100644 index 4acf4565ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c8.png deleted file mode 100644 index 4bd16df843..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c9.png deleted file mode 100644 index 97254b84f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ca.png deleted file mode 100644 index ee97aeb361..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cb.png deleted file mode 100644 index 61abc243cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cc.png deleted file mode 100644 index e9753f6454..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cd.png deleted file mode 100644 index 71f2311590..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ce.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ce.png deleted file mode 100644 index 80076f8638..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cf.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1cf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d0.png deleted file mode 100644 index d1b4e81444..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d1.png deleted file mode 100644 index 5a7d2fb0b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d2.png deleted file mode 100644 index 9aef1dd963..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d3.png deleted file mode 100644 index 9fd3c2f309..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d4.png deleted file mode 100644 index 9ae02528c1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d5.png deleted file mode 100644 index e00a86d45e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d6.png deleted file mode 100644 index 44c468eb57..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d7.png deleted file mode 100644 index d5a4f0081e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d8.png deleted file mode 100644 index c0109acc68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d9.png deleted file mode 100644 index 664a780630..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1da.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1da.png deleted file mode 100644 index 48f12b4249..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1da.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1db.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1db.png deleted file mode 100644 index 5c93f80d19..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1db.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1dc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1dc.png deleted file mode 100644 index 9c4eed7b22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1dc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1dd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1dd.png deleted file mode 100644 index 289b6b0722..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1dd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1de.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1de.png deleted file mode 100644 index e5fb94c257..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1de.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1df.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1df.png deleted file mode 100644 index f876c03a80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1df.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e0.png deleted file mode 100644 index 7ef5f45dea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e1.png deleted file mode 100644 index 474902248e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e2.png deleted file mode 100644 index 57e0ae7457..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e3.png deleted file mode 100644 index 157ba5d1bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e4.png deleted file mode 100644 index b2d9d3d472..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e5.png deleted file mode 100644 index 5d827d898b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e6.png deleted file mode 100644 index 5639c6da64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e7.png deleted file mode 100644 index 8092a37761..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e8.png deleted file mode 100644 index fccc915889..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e9.png deleted file mode 100644 index cdec744c43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ea.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ea.png deleted file mode 100644 index dc0295f680..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ec.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ec.png deleted file mode 100644 index 80969fc7d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ed.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ed.png deleted file mode 100644 index 48630d9921..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ee.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ee.png deleted file mode 100644 index a4835b7ae9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ef.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ef.png deleted file mode 100644 index 777bd4852f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f1.png deleted file mode 100644 index 08fcc33710..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f2.png deleted file mode 100644 index 16c281811f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f3.png deleted file mode 100644 index ba322985f2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f4.png deleted file mode 100644 index 419a9e00c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f5.png deleted file mode 100644 index 608c8387f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f6.png deleted file mode 100644 index a199124ecf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f7.png deleted file mode 100644 index e876982b93..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1fd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1fd.png deleted file mode 100644 index 03064b1192..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e1fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e206.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e206.png deleted file mode 100644 index b971bb8bbe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e206.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e208.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e208.png deleted file mode 100644 index 80076f8638..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e208.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e209.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e209.png deleted file mode 100644 index d64030f986..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e209.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e20a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e20a.png deleted file mode 100644 index 1f5cb49c01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e20a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e20b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e20b.png deleted file mode 100644 index b94878c745..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e20b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e211.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e211.png deleted file mode 100644 index 15ea9c20fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e211.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e212.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e212.png deleted file mode 100644 index 23e2185f20..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e212.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e224.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e224.png deleted file mode 100644 index 80076f8638..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e224.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e228.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e228.png deleted file mode 100644 index 60e8b7be2c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e228.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e248.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e248.png deleted file mode 100644 index 09e6a70e44..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e248.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e249.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e249.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e249.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e24a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e24a.png deleted file mode 100644 index 80076f8638..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e24a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25a.png deleted file mode 100644 index 97254b84f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25b.png deleted file mode 100644 index 91f9f940c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25c.png deleted file mode 100644 index 777816ba89..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25d.png deleted file mode 100644 index 3f0f0f1d00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25e.png deleted file mode 100644 index ca6e878b37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e25e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e26b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e26b.png deleted file mode 100644 index c29562136d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e26b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e26c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e26c.png deleted file mode 100644 index dcf5aa77cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e26c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e28f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e28f.png deleted file mode 100644 index 11fae2548b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e28f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e290.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e290.png deleted file mode 100644 index fba9d4460f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e290.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e291.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e291.png deleted file mode 100644 index 4624303443..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e291.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e292.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e292.png deleted file mode 100644 index 681179890a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e292.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e294.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e294.png deleted file mode 100644 index c141c31f70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e294.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e295.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e295.png deleted file mode 100644 index dad46c3bae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e295.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e297.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e297.png deleted file mode 100644 index 43bf1cdde8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e297.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e298.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e298.png deleted file mode 100644 index 17ff64f1a6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e298.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e299.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e299.png deleted file mode 100644 index feca961549..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e299.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e29b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e29b.png deleted file mode 100644 index 68af6f5cd0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e29b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ac.png deleted file mode 100644 index 009d26bfb7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ad.png deleted file mode 100644 index b2b1e8a9d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ae.png deleted file mode 100644 index 48009491e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2af.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2af.png deleted file mode 100644 index 27f41a9d74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b0.png deleted file mode 100644 index 48009491e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b1.png deleted file mode 100644 index 44ffc533c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b2.png deleted file mode 100644 index efedfbdf74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b3.png deleted file mode 100644 index 454cc49809..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b4.png deleted file mode 100644 index bc5d72bd5b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2f6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2f6.png deleted file mode 100644 index f3032f169a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2f7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2f7.png deleted file mode 100644 index c4972eeea5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e2f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e361.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e361.png deleted file mode 100644 index 64330eacdf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e361.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e363.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e363.png deleted file mode 100644 index 17ed6c5c65..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e363.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e37a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e37a.png deleted file mode 100644 index 1540d7745a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e37a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3ba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3ba.png deleted file mode 100644 index d99b01e50e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3bb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3bb.png deleted file mode 100644 index 5dd8803c3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3bc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3bc.png deleted file mode 100644 index a550478096..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c1.png deleted file mode 100644 index 58840eed17..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c2.png deleted file mode 100644 index f773a858d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c3.png deleted file mode 100644 index 834aea8a7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c4.png deleted file mode 100644 index 9f6a99602c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c5.png deleted file mode 100644 index 398ca64cf0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c6.png deleted file mode 100644 index 688a70fedb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c7.png deleted file mode 100644 index 3e6538a94b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c8.png deleted file mode 100644 index b0b2e3d21a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c9.png deleted file mode 100644 index 8b44c6227a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3ca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3ca.png deleted file mode 100644 index 8ff6f2be0b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3cb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3cb.png deleted file mode 100644 index 7b2f1b2f07..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3d7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3d7.png deleted file mode 100644 index 469f986802..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3d8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3d8.png deleted file mode 100644 index fe4f2f3cf9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e3d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e407.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e407.png deleted file mode 100644 index 7952dd48ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e407.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e408.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e408.png deleted file mode 100644 index b68aecb169..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e408.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e409.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e409.png deleted file mode 100644 index 615af1891d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e409.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40a.png deleted file mode 100644 index 952d8fdbf1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40b.png deleted file mode 100644 index 3af5451960..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40c.png deleted file mode 100644 index 743fce806e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40d.png deleted file mode 100644 index 95e0f785c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40e.png deleted file mode 100644 index 7025a5a578..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40f.png deleted file mode 100644 index c5e575c071..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e40f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e410.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e410.png deleted file mode 100644 index 18f092ee32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e410.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e411.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e411.png deleted file mode 100644 index 05655fc108..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e411.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e412.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e412.png deleted file mode 100644 index 1ce5ebb123..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e412.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e413.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e413.png deleted file mode 100644 index 5e9003b70b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e413.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e414.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e414.png deleted file mode 100644 index 34d8b73426..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e414.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e415.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e415.png deleted file mode 100644 index 539c8f9c00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e415.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e416.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e416.png deleted file mode 100644 index 31d4ab309f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e416.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e417.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e417.png deleted file mode 100644 index bd5b1d524c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e417.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e418.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e418.png deleted file mode 100644 index cbb4672ca7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e418.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e419.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e419.png deleted file mode 100644 index 843bd7ebcb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e419.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41a.png deleted file mode 100644 index 6edbe8836e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41b.png deleted file mode 100644 index 3874e44529..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41c.png deleted file mode 100644 index b024b8e50e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41d.png deleted file mode 100644 index 51ad7b9e7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e41d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44a.png deleted file mode 100644 index 541db6d99f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44b.png deleted file mode 100644 index 34f84db506..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44c.png deleted file mode 100644 index 703983028d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44d.png deleted file mode 100644 index 8b4ee81d61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44e.png deleted file mode 100644 index 63b7d99202..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44f.png deleted file mode 100644 index d5252e090a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e44f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e450.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e450.png deleted file mode 100644 index 482b7072ac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e450.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e451.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e451.png deleted file mode 100644 index b8f96931e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e451.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e452.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e452.png deleted file mode 100644 index 74840d4d05..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e452.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e453.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e453.png deleted file mode 100644 index 3c1054f224..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e453.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e454.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e454.png deleted file mode 100644 index 0b3949b5ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e454.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e4e8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e4e8.png deleted file mode 100644 index 9f4df70240..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e4e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e5b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e5b0.png deleted file mode 100644 index 76ec4f2159..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e5b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e5b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e5b1.png deleted file mode 100644 index 8d1cc2bca0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e5b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e61f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e61f.png deleted file mode 100644 index efedfbdf74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e61f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e620.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e620.png deleted file mode 100644 index 481ab70da2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e620.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e621.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e621.png deleted file mode 100644 index 009d26bfb7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e621.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e622.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e622.png deleted file mode 100644 index 54f2f53455..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e622.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e623.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e623.png deleted file mode 100644 index 58e136e1c2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e623.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e624.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e624.png deleted file mode 100644 index 098e8d29c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e624.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e625.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e625.png deleted file mode 100644 index 7488b19eba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e625.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e626.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e626.png deleted file mode 100644 index 90e0c3d5dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e626.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e627.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e627.png deleted file mode 100644 index 380f661f5d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e627.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e628.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e628.png deleted file mode 100644 index 08c2ffa351..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e628.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e629.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e629.png deleted file mode 100644 index a1ff112448..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e629.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e62b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e62b.png deleted file mode 100644 index be261370fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e62b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e62f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e62f.png deleted file mode 100644 index de08cc9b86..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e62f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e630.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e630.png deleted file mode 100644 index 2a9d01e559..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e630.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e631.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e631.png deleted file mode 100644 index a43cbad329..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e631.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64b.png deleted file mode 100644 index 532172dc8f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64c.png deleted file mode 100644 index 622c795bc3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64d.png deleted file mode 100644 index 1f0f796c49..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64e.png deleted file mode 100644 index d3a08be7bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64f.png deleted file mode 100644 index 18c0204cfb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e64f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e650.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e650.png deleted file mode 100644 index fdfa90c3e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e650.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e651.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e651.png deleted file mode 100644 index 0d3a5b25f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e651.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e652.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e652.png deleted file mode 100644 index 7e869d3d26..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e652.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e653.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e653.png deleted file mode 100644 index 181f1e75f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e653.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e654.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e654.png deleted file mode 100644 index 73090c93c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e654.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e655.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e655.png deleted file mode 100644 index 9a4b5fe7ed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e655.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e656.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e656.png deleted file mode 100644 index c7657bcdf0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e656.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e65a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e65a.png deleted file mode 100644 index 7ade6b27c3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e65a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e65f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e65f.png deleted file mode 100644 index a37d72e11e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e65f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e700.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e700.png deleted file mode 100644 index e476e6c33c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e700.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e701.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e701.png deleted file mode 100644 index 92e290769a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e701.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e702.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e702.png deleted file mode 100644 index fdbfddfbe4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e702.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e703.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e703.png deleted file mode 100644 index fa2cf2674b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e703.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e704.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e704.png deleted file mode 100644 index bac1463210..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e704.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e705.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e705.png deleted file mode 100644 index 0c8e6f9986..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e705.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e706.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e706.png deleted file mode 100644 index 0612fbe311..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e706.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e707.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e707.png deleted file mode 100644 index 0038ec333d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e707.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e708.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e708.png deleted file mode 100644 index 6c94154bb3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e708.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e709.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e709.png deleted file mode 100644 index 9433f0e5d2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e709.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70a.png deleted file mode 100644 index d8855e2d37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70b.png deleted file mode 100644 index 93f81722cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70c.png deleted file mode 100644 index 9209ae9aa6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70d.png deleted file mode 100644 index 61e57f4b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70e.png deleted file mode 100644 index bb15dfbc25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70f.png deleted file mode 100644 index c4bf6643fa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e70f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e710.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e710.png deleted file mode 100644 index d927ee5731..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e710.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e711.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e711.png deleted file mode 100644 index 6f21d14b8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e711.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e712.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e712.png deleted file mode 100644 index 0eae13208a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e712.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e713.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e713.png deleted file mode 100644 index e2c2125f54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e713.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e714.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e714.png deleted file mode 100644 index 1f5cb49c01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e714.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e715.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e715.png deleted file mode 100644 index c34b716467..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e715.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e716.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e716.png deleted file mode 100644 index 709f6c66fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e716.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e717.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e717.png deleted file mode 100644 index e2ea556b98..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e717.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e718.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e718.png deleted file mode 100644 index 998a2d0d6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e718.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e719.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e719.png deleted file mode 100644 index 98c2dc25c9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e719.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71a.png deleted file mode 100644 index da228859be..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71b.png deleted file mode 100644 index 560232f34d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71c.png deleted file mode 100644 index dd980699b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71d.png deleted file mode 100644 index 28582d40ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71e.png deleted file mode 100644 index 5284a70036..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71f.png deleted file mode 100644 index 72d714cbec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e71f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e720.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e720.png deleted file mode 100644 index 44c468eb57..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e720.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e721.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e721.png deleted file mode 100644 index 8d584d7816..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e721.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e722.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e722.png deleted file mode 100644 index fafa755e08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e722.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e723.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e723.png deleted file mode 100644 index 8e80db3c58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e723.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e724.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e724.png deleted file mode 100644 index d610219de7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e724.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e725.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e725.png deleted file mode 100644 index 68fe578297..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e725.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e726.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e726.png deleted file mode 100644 index 9a5ae6c041..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e726.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e727.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e727.png deleted file mode 100644 index 17b925264e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e727.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e728.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e728.png deleted file mode 100644 index 989729c05a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e728.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e729.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e729.png deleted file mode 100644 index 4daeea9694..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e729.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72a.png deleted file mode 100644 index e496ce5dc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72b.png deleted file mode 100644 index a918ed4d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72c.png deleted file mode 100644 index 8d80c6b8b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72d.png deleted file mode 100644 index 3ecc548c2a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72e.png deleted file mode 100644 index a199124ecf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72f.png deleted file mode 100644 index 2f0d66bbb2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e72f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e730.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e730.png deleted file mode 100644 index e5fb94c257..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e730.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e731.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e731.png deleted file mode 100644 index 4bf54b0ede..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e731.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e733.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e733.png deleted file mode 100644 index 91f9f940c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e733.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e734.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e734.png deleted file mode 100644 index 80076f8638..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e734.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e735.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e735.png deleted file mode 100644 index 399049c9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e735.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e736.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e736.png deleted file mode 100644 index 01722fb8e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e736.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e737.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e737.png deleted file mode 100644 index 40f3967c89..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e737.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e738.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e738.png deleted file mode 100644 index 8d28787065..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e738.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e739.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e739.png deleted file mode 100644 index 4743e6d47d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e739.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73a.png deleted file mode 100644 index 6dc75f6f89..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73b.png deleted file mode 100644 index ca6e878b37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73c.png deleted file mode 100644 index 11413e1d40..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73d.png deleted file mode 100644 index bf770b0315..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73e.png deleted file mode 100644 index 169ad62494..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73f.png deleted file mode 100644 index c0109acc68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e73f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e740.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e740.png deleted file mode 100644 index 664a780630..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e740.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e741.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e741.png deleted file mode 100644 index 64d1c5851e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e741.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e742.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e742.png deleted file mode 100644 index ca01a19298..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e742.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e743.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e743.png deleted file mode 100644 index 8b2cf963a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e743.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e744.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e744.png deleted file mode 100644 index 14fe1b8bd2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e744.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e745.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e745.png deleted file mode 100644 index 51e72d81da..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e745.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e746.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e746.png deleted file mode 100644 index b26fbc0143..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e746.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e747.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e747.png deleted file mode 100644 index ca6e878b37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e747.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e748.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e748.png deleted file mode 100644 index d0e8725c88..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e748.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e749.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e749.png deleted file mode 100644 index f3032f169a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e749.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74a.png deleted file mode 100644 index 19da9498e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74b.png deleted file mode 100644 index 03064b1192..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74c.png deleted file mode 100644 index 7affe76594..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74d.png deleted file mode 100644 index ebe5adb88a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74e.png deleted file mode 100644 index 74a36daec8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74f.png deleted file mode 100644 index 386a1c3c2b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e74f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e750.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e750.png deleted file mode 100644 index afe723148f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e750.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e751.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e751.png deleted file mode 100644 index 2fe8ff0151..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e751.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e752.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e752.png deleted file mode 100644 index 469f986802..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e752.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e753.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e753.png deleted file mode 100644 index 4558566ed8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e753.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e754.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e754.png deleted file mode 100644 index a8216716ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e754.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e755.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e755.png deleted file mode 100644 index 2a4821d2be..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e755.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e756.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e756.png deleted file mode 100644 index 2f62e377a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e756.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e759.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e759.png deleted file mode 100644 index 9439e0bd00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e759.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75a.png deleted file mode 100644 index addeed29e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75b.png deleted file mode 100644 index ae972c8591..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75c.png deleted file mode 100644 index 5db0f3fa17..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75d.png deleted file mode 100644 index c937142216..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75e.png deleted file mode 100644 index 099dce9923..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75f.png deleted file mode 100644 index 1df5233631..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e75f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e760.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e760.png deleted file mode 100644 index 99142c3010..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e760.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e761.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e761.png deleted file mode 100644 index 2fba5fa77b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e761.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e762.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e762.png deleted file mode 100644 index 24fc572c16..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e762.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e763.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e763.png deleted file mode 100644 index 9062350526..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e763.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e764.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e764.png deleted file mode 100644 index ae3577fb15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e764.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e765.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e765.png deleted file mode 100644 index 6b71b2c829..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e765.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e766.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e766.png deleted file mode 100644 index 28a13e0b16..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e766.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e767.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e767.png deleted file mode 100644 index 7ffed96f50..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e767.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e768.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e768.png deleted file mode 100644 index 4b00605f5d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e768.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e769.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e769.png deleted file mode 100644 index 6aebab163c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e769.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76b.png deleted file mode 100644 index 42c393abc7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76c.png deleted file mode 100644 index af80a3bc58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76d.png deleted file mode 100644 index 4fefa13393..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76e.png deleted file mode 100644 index 85faa355e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76f.png deleted file mode 100644 index 27ff8fd2c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e76f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e770.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e770.png deleted file mode 100644 index 90b4e3d3a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e770.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e771.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e771.png deleted file mode 100644 index e134cc8d6f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e771.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e772.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e772.png deleted file mode 100644 index 875088ebf2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e772.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e773.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e773.png deleted file mode 100644 index e7e4685d36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e773.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e774.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e774.png deleted file mode 100644 index d714f5af73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e774.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e775.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e775.png deleted file mode 100644 index 8cf295da5f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e775.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e776.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e776.png deleted file mode 100644 index 1bb58207a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e776.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e777.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e777.png deleted file mode 100644 index 80ec9e3d40..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e777.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e778.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e778.png deleted file mode 100644 index 6fe36e986c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e778.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e779.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e779.png deleted file mode 100644 index dc3e8feb42..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e779.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77a.png deleted file mode 100644 index 18404a1e79..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77b.png deleted file mode 100644 index 27f41a9d74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77c.png deleted file mode 100644 index e00a86d45e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77e.png deleted file mode 100644 index 39f46fb9e7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77f.png deleted file mode 100644 index fc66d42e9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e77f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e780.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e780.png deleted file mode 100644 index 9ae02528c1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e780.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e781.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e781.png deleted file mode 100644 index b6e4df0e0a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e781.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e783.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e783.png deleted file mode 100644 index 59fa26a1a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e783.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e784.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e784.png deleted file mode 100644 index 69a8e116ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e784.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e785.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e785.png deleted file mode 100644 index e876982b93..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e785.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e786.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e786.png deleted file mode 100644 index 68af6f5cd0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e786.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e787.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e787.png deleted file mode 100644 index cbe76942b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e787.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e788.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e788.png deleted file mode 100644 index 52611c10f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e788.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e789.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e789.png deleted file mode 100644 index f459df1f6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e789.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78a.png deleted file mode 100644 index fbe5d9beea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78b.png deleted file mode 100644 index 8f845a9dff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78c.png deleted file mode 100644 index c64be3fea4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e78c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e790.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e790.png deleted file mode 100644 index 44ffc533c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e790.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e791.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e791.png deleted file mode 100644 index cfc3157358..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e791.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e792.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e792.png deleted file mode 100644 index 11fae2548b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e792.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e793.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e793.png deleted file mode 100644 index a9af748115..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e793.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e794.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e794.png deleted file mode 100644 index 48671ac9d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e794.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e799.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e799.png deleted file mode 100644 index 9daac2cfa2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e799.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a1.png deleted file mode 100644 index 8cdd71f9a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a5.png deleted file mode 100644 index a640ab4f58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a6.png deleted file mode 100644 index 6c1c7309ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a7.png deleted file mode 100644 index 031630f246..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a8.png deleted file mode 100644 index 5024dc46c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7aa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7aa.png deleted file mode 100644 index 97587a96e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ac.png deleted file mode 100644 index afc7dabd0d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ad.png deleted file mode 100644 index 29ab1084b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b3.png deleted file mode 100644 index 7ef386e57e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b5.png deleted file mode 100644 index ad6281507c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b7.png deleted file mode 100644 index 67735ae6c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b8.png deleted file mode 100644 index 4450ab6292..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ba.png deleted file mode 100644 index c844433998..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7bc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7bc.png deleted file mode 100644 index e2ead1bc0a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7be.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7be.png deleted file mode 100644 index 7601eba6fa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7be.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7bf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7bf.png deleted file mode 100644 index adb59bdb51..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c0.png deleted file mode 100644 index bfea1b6e91..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c1.png deleted file mode 100644 index 101e9be244..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c2.png deleted file mode 100644 index d4183fa134..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c3.png deleted file mode 100644 index 7fa26e9e5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c4.png deleted file mode 100644 index 37e9eba039..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c5.png deleted file mode 100644 index 8e7c3a97f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c6.png deleted file mode 100644 index 6e5ad9d29e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c7.png deleted file mode 100644 index 6e2abf31bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c8.png deleted file mode 100644 index 608c8387f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c9.png deleted file mode 100644 index 157ba5d1bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7de.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7de.png deleted file mode 100644 index a6bfa3cb67..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7de.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e3.png deleted file mode 100644 index fb92d77627..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e6.png deleted file mode 100644 index 821b3c2594..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e7.png deleted file mode 100644 index 5344b4a1fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e8.png deleted file mode 100644 index 3540ea73a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ea.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ea.png deleted file mode 100644 index 6132d640f8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7eb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7eb.png deleted file mode 100644 index dcb63a68cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ec.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ec.png deleted file mode 100644 index 9710a653fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ed.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ed.png deleted file mode 100644 index d672858ea1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ee.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ee.png deleted file mode 100644 index e7b57264f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ef.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ef.png deleted file mode 100644 index 88ff7fcc41..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f0.png deleted file mode 100644 index f2a8c0af3d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f1.png deleted file mode 100644 index 8138dd0697..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f2.png deleted file mode 100644 index 1f0678ff55..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f3.png deleted file mode 100644 index 4e4bd4d4a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f4.png deleted file mode 100644 index 3d07e7b114..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f5.png deleted file mode 100644 index ff13d2d805..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f6.png deleted file mode 100644 index 48ac47d4ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f7.png deleted file mode 100644 index 6e96a79054..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f8.png deleted file mode 100644 index a47f3d1003..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f9.png deleted file mode 100644 index e6f03c197b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fa.png deleted file mode 100644 index de09a2d8e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fb.png deleted file mode 100644 index c8d17db430..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fc.png deleted file mode 100644 index 5dfd3b4f36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fd.png deleted file mode 100644 index 7ce3ec708e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e7fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e802.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e802.png deleted file mode 100644 index fc584c9a0f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e802.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e803.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e803.png deleted file mode 100644 index 2d0540ad15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e803.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e804.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e804.png deleted file mode 100644 index 9710a653fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e804.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e805.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e805.png deleted file mode 100644 index bb1d58a8a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e805.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e806.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e806.png deleted file mode 100644 index 6d43df0abd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e806.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e809.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e809.png deleted file mode 100644 index 9e3d4fc2b7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e809.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80a.png deleted file mode 100644 index a3011b36bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80b.png deleted file mode 100644 index cd1bd107a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80c.png deleted file mode 100644 index c7d8b18ec5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80d.png deleted file mode 100644 index acd7440ff7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80f.png deleted file mode 100644 index e4f63c1adf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e80f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e811.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e811.png deleted file mode 100644 index 1a4bfc63d9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e811.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e812.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e812.png deleted file mode 100644 index 9385bd8de4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e812.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e813.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e813.png deleted file mode 100644 index f28172f315..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e813.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e814.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e814.png deleted file mode 100644 index 6155bf5c28..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e814.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e815.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e815.png deleted file mode 100644 index 7684a5ebe9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e815.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e816.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e816.png deleted file mode 100644 index 54c3e114c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e816.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e819.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e819.png deleted file mode 100644 index 2d1c5c1fc2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e819.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81a.png deleted file mode 100644 index 788b914e5a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81b.png deleted file mode 100644 index 101e9be244..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81c.png deleted file mode 100644 index 3732eed898..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81d.png deleted file mode 100644 index 9aef1dd963..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81e.png deleted file mode 100644 index ff6575c9c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81f.png deleted file mode 100644 index 2b7d03efee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e81f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e821.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e821.png deleted file mode 100644 index 3c517807dc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e821.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e822.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e822.png deleted file mode 100644 index 0800aa99c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e822.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e823.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e823.png deleted file mode 100644 index b2b1e8a9d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e823.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e825.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e825.png deleted file mode 100644 index 57103eba56..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e825.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e826.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e826.png deleted file mode 100644 index e3a17dc432..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e826.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e829.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e829.png deleted file mode 100644 index 8f5975bfc0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e829.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82a.png deleted file mode 100644 index 1ea54a3cfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82b.png deleted file mode 100644 index dec6f2f4c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82c.png deleted file mode 100644 index 79d92de118..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82d.png deleted file mode 100644 index 3ba4ee86b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82e.png deleted file mode 100644 index f0142e93b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82f.png deleted file mode 100644 index caff7a4f52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e82f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e830.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e830.png deleted file mode 100644 index e1dc69bda4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e830.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e835.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e835.png deleted file mode 100644 index 7d2b508cd9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e835.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e836.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e836.png deleted file mode 100644 index 40732679c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e836.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e838.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e838.png deleted file mode 100644 index d83806c8f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e838.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e839.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e839.png deleted file mode 100644 index 8263345789..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e839.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83a.png deleted file mode 100644 index 46f6c20753..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83b.png deleted file mode 100644 index 86cbdeec94..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83c.png deleted file mode 100644 index e67f3b2130..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83d.png deleted file mode 100644 index 41e586e1b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83e.png deleted file mode 100644 index 121e5b9a70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83f.png deleted file mode 100644 index 33fe17f753..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e83f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e840.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e840.png deleted file mode 100644 index 998a2d0d6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e840.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e841.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e841.png deleted file mode 100644 index 58b61bb002..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e841.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e842.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e842.png deleted file mode 100644 index 58b61bb002..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e842.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e843.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e843.png deleted file mode 100644 index becbef0132..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e843.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e844.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e844.png deleted file mode 100644 index e85b061f13..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e844.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e845.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e845.png deleted file mode 100644 index 7b8a69b276..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e845.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e846.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e846.png deleted file mode 100644 index 106c6ab20f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e846.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e847.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e847.png deleted file mode 100644 index 8192e55836..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e847.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e848.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e848.png deleted file mode 100644 index e9e56a9d34..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e848.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e849.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e849.png deleted file mode 100644 index 1e03921ca7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e849.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84a.png deleted file mode 100644 index ce44792978..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84b.png deleted file mode 100644 index 7097aabbd2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84c.png deleted file mode 100644 index b10048326a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84d.png deleted file mode 100644 index b3ec49905d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84e.png deleted file mode 100644 index cc8f4fb136..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84f.png deleted file mode 100644 index cd2eb935cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e84f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e850.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e850.png deleted file mode 100644 index d4cdcf5409..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e850.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e851.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e851.png deleted file mode 100644 index 48f15c06fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e851.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e852.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e852.png deleted file mode 100644 index d737316cbe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e852.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e853.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e853.png deleted file mode 100644 index c6f233e277..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e853.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e854.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e854.png deleted file mode 100644 index 10e4e3e57d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e854.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e855.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e855.png deleted file mode 100644 index 6e7d1cd447..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e855.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e856.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e856.png deleted file mode 100644 index 0f55ced690..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e856.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e857.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e857.png deleted file mode 100644 index 76ecb0f2f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e857.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e858.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e858.png deleted file mode 100644 index 5124f8a305..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e858.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e859.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e859.png deleted file mode 100644 index 62692666c3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e859.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85a.png deleted file mode 100644 index 30a1d2f64d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85b.png deleted file mode 100644 index 6fec573223..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85c.png deleted file mode 100644 index adf9db4b9e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85d.png deleted file mode 100644 index af087d0da8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85e.png deleted file mode 100644 index 85e7c34bb4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85f.png deleted file mode 100644 index 46aafce02f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e85f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e860.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e860.png deleted file mode 100644 index 99c3d1c39c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e860.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e861.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e861.png deleted file mode 100644 index 7e04a49732..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e861.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e862.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e862.png deleted file mode 100644 index d45e806682..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e862.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e863.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e863.png deleted file mode 100644 index 8ff1e0b8b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e863.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e864.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e864.png deleted file mode 100644 index eda4483bd7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e864.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e865.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e865.png deleted file mode 100644 index 6d38d764af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e865.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e866.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e866.png deleted file mode 100644 index fb8ef39c59..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e866.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e867.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e867.png deleted file mode 100644 index ea5b32d163..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e867.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e868.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e868.png deleted file mode 100644 index 2dccfcab9f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e868.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e869.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e869.png deleted file mode 100644 index 8afd3ef02f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e869.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86a.png deleted file mode 100644 index 2f0a8136f8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86b.png deleted file mode 100644 index 1647944c4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86c.png deleted file mode 100644 index 96dd944d3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86d.png deleted file mode 100644 index 43d5e2dfab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86e.png deleted file mode 100644 index 52aadb5894..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86f.png deleted file mode 100644 index 9cbdc9ee46..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e86f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e870.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e870.png deleted file mode 100644 index c6736d54c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e870.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e871.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e871.png deleted file mode 100644 index bce165921b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e871.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e872.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e872.png deleted file mode 100644 index 9713efd7d0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e872.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e873.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e873.png deleted file mode 100644 index 0623280e90..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e873.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e874.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e874.png deleted file mode 100644 index f064788930..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e874.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e875.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e875.png deleted file mode 100644 index 0bc5a44337..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e875.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e876.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e876.png deleted file mode 100644 index 3679602f2e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e876.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e877.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e877.png deleted file mode 100644 index 59e7236dd0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e877.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e878.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e878.png deleted file mode 100644 index d53f1257cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e878.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e879.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e879.png deleted file mode 100644 index 3e37e8ca7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e879.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87a.png deleted file mode 100644 index 55fc2121c1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87b.png deleted file mode 100644 index 638aa434df..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87c.png deleted file mode 100644 index 2a86b0b024..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87d.png deleted file mode 100644 index 5f0a6d53f2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87e.png deleted file mode 100644 index 089fcd35d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87f.png deleted file mode 100644 index 774e6fd88e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e87f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e880.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e880.png deleted file mode 100644 index 8ca1aa93f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e880.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e881.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e881.png deleted file mode 100644 index 2ada094d52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e881.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e882.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e882.png deleted file mode 100644 index dce6b9dd8f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e882.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e883.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e883.png deleted file mode 100644 index 2991fb26b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e883.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e884.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e884.png deleted file mode 100644 index 6e83216855..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e884.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e885.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e885.png deleted file mode 100644 index 1acc21fbf7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e885.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e886.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e886.png deleted file mode 100644 index 77daa4de37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e886.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e887.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e887.png deleted file mode 100644 index abd8036acb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e887.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e888.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e888.png deleted file mode 100644 index 359d5fe520..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e888.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e889.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e889.png deleted file mode 100644 index 572544fbb8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e889.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88a.png deleted file mode 100644 index bac1463210..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88b.png deleted file mode 100644 index 5f9eb6d4f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88c.png deleted file mode 100644 index 6f062aba8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88d.png deleted file mode 100644 index 4c17274a3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88e.png deleted file mode 100644 index e997faab75..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88f.png deleted file mode 100644 index e10315d8f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e88f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e890.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e890.png deleted file mode 100644 index 7ef386e57e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e890.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e891.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e891.png deleted file mode 100644 index 31c07187f8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e891.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e892.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e892.png deleted file mode 100644 index 61fc1369ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e892.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e893.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e893.png deleted file mode 100644 index 1f1a81dc73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e893.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e894.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e894.png deleted file mode 100644 index 6f21d14b8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e894.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e895.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e895.png deleted file mode 100644 index 19b2512f9d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e895.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e896.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e896.png deleted file mode 100644 index b3a94eec3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e896.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e897.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e897.png deleted file mode 100644 index c49f6c757e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e897.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e898.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e898.png deleted file mode 100644 index cf9cac3b3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e898.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e899.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e899.png deleted file mode 100644 index a33bca285b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e899.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89a.png deleted file mode 100644 index f4cb2455c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89b.png deleted file mode 100644 index 6094a2ca9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89c.png deleted file mode 100644 index 6592583c8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89e.png deleted file mode 100644 index 37586a959e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89f.png deleted file mode 100644 index d3184a4fc4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e89f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a0.png deleted file mode 100644 index 38fa2f9099..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a1.png deleted file mode 100644 index f53d3bade2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a2.png deleted file mode 100644 index 40b53bcf1f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a3.png deleted file mode 100644 index ca60e10e93..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a4.png deleted file mode 100644 index 60d5d90159..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a5.png deleted file mode 100644 index 7fa26e9e5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a6.png deleted file mode 100644 index d3dfacd585..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a7.png deleted file mode 100644 index bc5d72bd5b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a8.png deleted file mode 100644 index b94878c745..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a9.png deleted file mode 100644 index 04ebed4a27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8aa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8aa.png deleted file mode 100644 index ba0910db7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ab.png deleted file mode 100644 index 87ad732eb9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ac.png deleted file mode 100644 index ad2c29c313..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ad.png deleted file mode 100644 index d52865d339..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ae.png deleted file mode 100644 index 046adfa868..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8af.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8af.png deleted file mode 100644 index aef69bbdd4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b0.png deleted file mode 100644 index 3d9ec46540..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b1.png deleted file mode 100644 index ae488f9c8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b2.png deleted file mode 100644 index e22bd1d927..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b3.png deleted file mode 100644 index 42444fc09d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b4.png deleted file mode 100644 index 63a919e063..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b5.png deleted file mode 100644 index 3ca3c9f4e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b6.png deleted file mode 100644 index d54bfadd69..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b7.png deleted file mode 100644 index a7c4825bba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b8.png deleted file mode 100644 index 915202e1ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b9.png deleted file mode 100644 index 763eed8bba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ba.png deleted file mode 100644 index 0a2131118f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bb.png deleted file mode 100644 index 8d90e43317..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bc.png deleted file mode 100644 index db900d6946..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bd.png deleted file mode 100644 index e050611d3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8be.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8be.png deleted file mode 100644 index 4bcd611b32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8be.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bf.png deleted file mode 100644 index f51dca150e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c0.png deleted file mode 100644 index 62e93f10bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c1.png deleted file mode 100644 index 93dccf88f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c2.png deleted file mode 100644 index 1520712481..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c3.png deleted file mode 100644 index 77f56a3779..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c4.png deleted file mode 100644 index 1e5bf8d1a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c5.png deleted file mode 100644 index 5b68b4d205..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c6.png deleted file mode 100644 index 23f3e49a02..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c7.png deleted file mode 100644 index c184f61d92..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c8.png deleted file mode 100644 index 0e8b29c4a9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c9.png deleted file mode 100644 index da1ba66a70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ca.png deleted file mode 100644 index 8464c88bf5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cb.png deleted file mode 100644 index 64b8579d4f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cc.png deleted file mode 100644 index b2b5df3cf4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cd.png deleted file mode 100644 index 4cb7e174d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ce.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ce.png deleted file mode 100644 index ed83a1fa81..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cf.png deleted file mode 100644 index 49ecc1f38d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8cf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d0.png deleted file mode 100644 index 3353aefbb7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d1.png deleted file mode 100644 index a2e7caf5d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d2.png deleted file mode 100644 index 098a778184..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d3.png deleted file mode 100644 index 615d8bd88b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d4.png deleted file mode 100644 index f71dc9ea73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d5.png deleted file mode 100644 index 429ede02a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d6.png deleted file mode 100644 index 1cd9fcc439..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d7.png deleted file mode 100644 index e4e2d8e53b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d8.png deleted file mode 100644 index 9e713c479b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d9.png deleted file mode 100644 index fb90b31767..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8da.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8da.png deleted file mode 100644 index 17aadeee74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8da.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8db.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8db.png deleted file mode 100644 index f531bd8b4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8db.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8dc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8dc.png deleted file mode 100644 index 4a2ad0d2b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8dc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8dd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8dd.png deleted file mode 100644 index a1c2de336f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8dd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8de.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8de.png deleted file mode 100644 index 6ee84d01e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8de.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8df.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8df.png deleted file mode 100644 index 9b19d80b00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8df.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e0.png deleted file mode 100644 index f72f465db2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e1.png deleted file mode 100644 index d64030f986..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e2.png deleted file mode 100644 index 5c4b1e33ca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e3.png deleted file mode 100644 index 2ecc967594..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e4.png deleted file mode 100644 index d7f300022a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e5.png deleted file mode 100644 index 1b1e905ee6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e6.png deleted file mode 100644 index c9ca40d3e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e7.png deleted file mode 100644 index e02e2b60eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e8.png deleted file mode 100644 index 4acf4565ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e9.png deleted file mode 100644 index 4bd16df843..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ea.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ea.png deleted file mode 100644 index 97254b84f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8eb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8eb.png deleted file mode 100644 index ee97aeb361..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ec.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ec.png deleted file mode 100644 index 61abc243cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ed.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ed.png deleted file mode 100644 index e9753f6454..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ee.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ee.png deleted file mode 100644 index 71f2311590..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ef.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ef.png deleted file mode 100644 index d1b4e81444..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f0.png deleted file mode 100644 index 5a7d2fb0b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f1.png deleted file mode 100644 index 9fd3c2f309..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f2.png deleted file mode 100644 index d5815e6c6f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f3.png deleted file mode 100644 index d5a4f0081e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f4.png deleted file mode 100644 index 48f12b4249..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f5.png deleted file mode 100644 index 5c93f80d19..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f6.png deleted file mode 100644 index 289b6b0722..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f7.png deleted file mode 100644 index f876c03a80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f8.png deleted file mode 100644 index 7ef5f45dea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f9.png deleted file mode 100644 index 474902248e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fa.png deleted file mode 100644 index 57e0ae7457..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fb.png deleted file mode 100644 index 0558562e72..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fc.png deleted file mode 100644 index 003a0d9b26..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fd.png deleted file mode 100644 index 681179890a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fe.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fe.png deleted file mode 100644 index c141c31f70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8fe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ff.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ff.png deleted file mode 100644 index dad46c3bae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e8ff.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e902.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e902.png deleted file mode 100644 index 1069785492..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e902.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e904.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e904.png deleted file mode 100644 index 5d827d898b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e904.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e905.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e905.png deleted file mode 100644 index 5639c6da64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e905.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e906.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e906.png deleted file mode 100644 index 8092a37761..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e906.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e907.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e907.png deleted file mode 100644 index fccc915889..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e907.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e908.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e908.png deleted file mode 100644 index cdec744c43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e908.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e909.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e909.png deleted file mode 100644 index 2b4fcf1ca5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e909.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90a.png deleted file mode 100644 index b971bb8bbe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90b.png deleted file mode 100644 index 1afe85ec9d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90c.png deleted file mode 100644 index a5255a7bf6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90d.png deleted file mode 100644 index 273e04fc7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90e.png deleted file mode 100644 index bf3e9e0ccf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90f.png deleted file mode 100644 index bf78981931..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e90f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e910.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e910.png deleted file mode 100644 index 9b25fdcccd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e910.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e911.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e911.png deleted file mode 100644 index d707c678fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e911.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e912.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e912.png deleted file mode 100644 index fe06aca836..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e912.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e913.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e913.png deleted file mode 100644 index 23782a15f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e913.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e914.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e914.png deleted file mode 100644 index c4972eeea5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e914.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e915.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e915.png deleted file mode 100644 index 1941b12a92..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e915.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e916.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e916.png deleted file mode 100644 index fab863e036..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e916.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91b.png deleted file mode 100644 index 8f2b8fd6a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91c.png deleted file mode 100644 index 43155e9cdb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91f.png deleted file mode 100644 index ecb2625c56..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e91f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e921.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e921.png deleted file mode 100644 index 9f18f537b7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e921.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e922.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e922.png deleted file mode 100644 index beb9767afe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e922.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e923.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e923.png deleted file mode 100644 index fe7a806b47..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e923.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e924.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e924.png deleted file mode 100644 index 98518e8987..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e924.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e925.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e925.png deleted file mode 100644 index 9ac40b8af3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e925.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e926.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e926.png deleted file mode 100644 index 629973e9ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e926.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e927.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e927.png deleted file mode 100644 index 4e90799ad6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e927.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e928.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e928.png deleted file mode 100644 index 435d130452..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e928.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e929.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e929.png deleted file mode 100644 index d6f7764386..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e929.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92c.png deleted file mode 100644 index c17d8084ca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92d.png deleted file mode 100644 index c78dbc6b68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92e.png deleted file mode 100644 index 6b71b2c829..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92f.png deleted file mode 100644 index b1ebae68c2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e92f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e930.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e930.png deleted file mode 100644 index 40ace2ffac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e930.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e931.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e931.png deleted file mode 100644 index 20f942a73e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e931.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e932.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e932.png deleted file mode 100644 index ea3f9ce20e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e932.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e933.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e933.png deleted file mode 100644 index a325159425..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e933.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e934.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e934.png deleted file mode 100644 index 8ec59cd037..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e934.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e935.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e935.png deleted file mode 100644 index a6818687b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e935.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e936.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e936.png deleted file mode 100644 index 43610e1c0a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e936.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e937.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e937.png deleted file mode 100644 index f5aec4b232..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e937.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e938.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e938.png deleted file mode 100644 index 8a2af08348..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e938.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e939.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e939.png deleted file mode 100644 index b0bdd898bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e939.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e93c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e93c.png deleted file mode 100644 index ab50c485e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e93c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e93e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e93e.png deleted file mode 100644 index 1f2c1b9a47..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e93e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e943.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e943.png deleted file mode 100644 index fee705f8c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e943.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e944.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e944.png deleted file mode 100644 index 454cc49809..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e944.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e945.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e945.png deleted file mode 100644 index 8c2c425226..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e945.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e946.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e946.png deleted file mode 100644 index 1b232e013c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e946.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e947.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e947.png deleted file mode 100644 index 6f21d14b8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e947.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e948.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e948.png deleted file mode 100644 index d927ee5731..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e948.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e949.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e949.png deleted file mode 100644 index 8d28787065..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e949.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94a.png deleted file mode 100644 index 061d06255e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94b.png deleted file mode 100644 index 31c5811777..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94c.png deleted file mode 100644 index 41414647b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94d.png deleted file mode 100644 index edaf1c0322..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94e.png deleted file mode 100644 index ae5f905a9e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94f.png deleted file mode 100644 index afe723148f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e94f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e950.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e950.png deleted file mode 100644 index db6a771238..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e950.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e951.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e951.png deleted file mode 100644 index 38283984b7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e951.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e952.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e952.png deleted file mode 100644 index 709d4629d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e952.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e953.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e953.png deleted file mode 100644 index f6bbdae316..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e953.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e954.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e954.png deleted file mode 100644 index 0f75c62031..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e954.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e955.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e955.png deleted file mode 100644 index e50fb6b90c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e955.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e956.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e956.png deleted file mode 100644 index 0acd1682ea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e956.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e957.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e957.png deleted file mode 100644 index d273cb55e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e957.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e958.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e958.png deleted file mode 100644 index 2fd6479dac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e958.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95a.png deleted file mode 100644 index 7d4eed03eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95b.png deleted file mode 100644 index 67cbe6bfab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95d.png deleted file mode 100644 index 3c8b2d0557..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95e.png deleted file mode 100644 index d5b2890f90..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95f.png deleted file mode 100644 index d3dd1b0815..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e95f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e960.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e960.png deleted file mode 100644 index ea86c002f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e960.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e961.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e961.png deleted file mode 100644 index d513b858fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e961.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e962.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e962.png deleted file mode 100644 index 199b333101..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e962.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e963.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e963.png deleted file mode 100644 index 8550fe0e21..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e963.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e964.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e964.png deleted file mode 100644 index 8acc7b143f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e964.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e965.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e965.png deleted file mode 100644 index 6205269f7e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e965.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e966.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e966.png deleted file mode 100644 index 7cfc06d64d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e966.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e967.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e967.png deleted file mode 100644 index 8c778fa22e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e967.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e968.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e968.png deleted file mode 100644 index 780a772153..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e968.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e969.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e969.png deleted file mode 100644 index 465b6217af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e969.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96a.png deleted file mode 100644 index b826dc9ae9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96d.png deleted file mode 100644 index 53517afd40..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96e.png deleted file mode 100644 index 60e8b7be2c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96f.png deleted file mode 100644 index dcf5aa77cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e96f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e970.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e970.png deleted file mode 100644 index c29562136d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e970.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e971.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e971.png deleted file mode 100644 index b01be8d6e1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e971.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e972.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e972.png deleted file mode 100644 index 9b8bae62b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e972.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e973.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e973.png deleted file mode 100644 index 774a099e14..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e973.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e974.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e974.png deleted file mode 100644 index 6f75baade8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e974.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e975.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e975.png deleted file mode 100644 index 23e2185f20..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e975.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e976.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e976.png deleted file mode 100644 index 3b937a5ae0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e976.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e977.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e977.png deleted file mode 100644 index 15ea9c20fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e977.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e978.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e978.png deleted file mode 100644 index ca6e878b37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e978.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e979.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e979.png deleted file mode 100644 index 3f0f0f1d00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e979.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97a.png deleted file mode 100644 index 09e6a70e44..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97b.png deleted file mode 100644 index 21d2b1541b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97c.png deleted file mode 100644 index 48009491e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97d.png deleted file mode 100644 index 5f9eb6d4f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97e.png deleted file mode 100644 index 28976c014f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97f.png deleted file mode 100644 index 1de473fff7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e97f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e980.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e980.png deleted file mode 100644 index 65ba320f21..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e980.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e981.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e981.png deleted file mode 100644 index 41db49094a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e981.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e982.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e982.png deleted file mode 100644 index 7738d52cd7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e982.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e983.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e983.png deleted file mode 100644 index c649ae2e83..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e983.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e984.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e984.png deleted file mode 100644 index 53f397b805..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e984.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e985.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e985.png deleted file mode 100644 index a6bfa3cb67..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e985.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e986.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e986.png deleted file mode 100644 index b9dabcc512..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e986.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e987.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e987.png deleted file mode 100644 index 87f5968610..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e987.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e988.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e988.png deleted file mode 100644 index 1bf5cc6100..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e988.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e989.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e989.png deleted file mode 100644 index 81e2ccad27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e989.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e98a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e98a.png deleted file mode 100644 index 4c17274a3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e98a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e98f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e98f.png deleted file mode 100644 index c161b586d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e98f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e990.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e990.png deleted file mode 100644 index d6a531f53a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e990.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e992.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e992.png deleted file mode 100644 index 113a7105a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e992.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e993.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e993.png deleted file mode 100644 index d01ef69b30..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e993.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e994.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e994.png deleted file mode 100644 index 4bce0dff93..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e994.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e995.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e995.png deleted file mode 100644 index 7ffed96f50..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e995.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e996.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e996.png deleted file mode 100644 index 47d559445d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e996.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e998.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e998.png deleted file mode 100644 index 27f996c18b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e998.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e99a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e99a.png deleted file mode 100644 index 95dd656872..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e99a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a1.png deleted file mode 100644 index 3428864f11..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a4.png deleted file mode 100644 index 94a5e06c52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a6.png deleted file mode 100644 index 985de64c46..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a8.png deleted file mode 100644 index a8b4fd2d0d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a9.png deleted file mode 100644 index f10a437b29..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9aa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9aa.png deleted file mode 100644 index dd89039d05..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ab.png deleted file mode 100644 index 2cd2570a27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ac.png deleted file mode 100644 index 2afdb14a1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ad.png deleted file mode 100644 index 9673ee5be2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ae.png deleted file mode 100644 index 11c2ea5761..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9af.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9af.png deleted file mode 100644 index 50e034c315..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b0.png deleted file mode 100644 index ffc2a94338..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b1.png deleted file mode 100644 index 3f28214c0e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b2.png deleted file mode 100644 index 6f29098cf4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b3.png deleted file mode 100644 index 5ea757fc5b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b4.png deleted file mode 100644 index 1768ee6bdf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b5.png deleted file mode 100644 index d87d4ce287..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b6.png deleted file mode 100644 index 8513dfa227..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b7.png deleted file mode 100644 index ba1b4e156c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b8.png deleted file mode 100644 index bf8758ca75..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b9.png deleted file mode 100644 index 21ebd9efc3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ba.png deleted file mode 100644 index a8f372541e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9bb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9bb.png deleted file mode 100644 index cfeb016750..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9bc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9bc.png deleted file mode 100644 index ede0622515..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ca.png deleted file mode 100644 index 59879e9e4a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ce.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ce.png deleted file mode 100644 index 700f99d660..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d2.png deleted file mode 100644 index eca7a19769..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d5.png deleted file mode 100644 index 02249c547e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d9.png deleted file mode 100644 index 599396ec19..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9e9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9e9.png deleted file mode 100644 index 20eb9b6832..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f3.png deleted file mode 100644 index f128818ae1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f5.png deleted file mode 100644 index 9960b26cb3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f9.png deleted file mode 100644 index aa0d028e38..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/e9f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea0c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea0c.png deleted file mode 100644 index 3183a2a031..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea0c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea0d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea0d.png deleted file mode 100644 index 88ff7fcc41..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea0d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea14.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea14.png deleted file mode 100644 index 40074c411f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea14.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea18.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea18.png deleted file mode 100644 index 48c495ea45..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea18.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea1f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea1f.png deleted file mode 100644 index cf9efdad1e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea21.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea21.png deleted file mode 100644 index 6309a18bc1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea21.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea24.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea24.png deleted file mode 100644 index b0fdf0207f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea24.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea35.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea35.png deleted file mode 100644 index 73f4a21df3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea35.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea37.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea37.png deleted file mode 100644 index 4707f42fc1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea37.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea38.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea38.png deleted file mode 100644 index 937a407f15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea38.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea39.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea39.png deleted file mode 100644 index cb9f201e0c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea39.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3a.png deleted file mode 100644 index fa40b83242..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3b.png deleted file mode 100644 index cb54e214a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3c.png deleted file mode 100644 index cf97bf1fa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3d.png deleted file mode 100644 index 27d267ddde..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3f.png deleted file mode 100644 index fa40b83242..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea40.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea40.png deleted file mode 100644 index 80969fc7d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea41.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea41.png deleted file mode 100644 index a4835b7ae9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea42.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea42.png deleted file mode 100644 index feca961549..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea43.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea43.png deleted file mode 100644 index 7cd31eadcc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea43.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea44.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea44.png deleted file mode 100644 index cc70eab882..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea47.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea47.png deleted file mode 100644 index e34df96e27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea48.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea48.png deleted file mode 100644 index 419a9e00c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea48.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea49.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea49.png deleted file mode 100644 index 33bd72789d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4a.png deleted file mode 100644 index 7737672813..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4b.png deleted file mode 100644 index a5255a7bf6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4c.png deleted file mode 100644 index 273e04fc7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4e.png deleted file mode 100644 index 9f4f4e1b8b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4f.png deleted file mode 100644 index 0fbeaff5de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea50.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea50.png deleted file mode 100644 index e3a7646dc2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea50.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea51.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea51.png deleted file mode 100644 index ba322985f2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea51.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea52.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea52.png deleted file mode 100644 index 2bfa0c58ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea52.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea53.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea53.png deleted file mode 100644 index 1c54d9b72c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea53.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea54.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea54.png deleted file mode 100644 index d1dc48b98e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea54.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea55.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea55.png deleted file mode 100644 index 1217fb4e7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea56.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea56.png deleted file mode 100644 index 71e1c64ea3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea57.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea57.png deleted file mode 100644 index 873dd2e31b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea58.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea58.png deleted file mode 100644 index 16c281811f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5b.png deleted file mode 100644 index e288fa3281..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5c.png deleted file mode 100644 index 48630d9921..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5e.png deleted file mode 100644 index db26d1e553..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5f.png deleted file mode 100644 index 55f76de116..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea60.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea60.png deleted file mode 100644 index df1c5f55cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea60.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea61.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea61.png deleted file mode 100644 index 7c4ea991fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea62.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea62.png deleted file mode 100644 index b68508282f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea62.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea63.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea63.png deleted file mode 100644 index 6ab4991784..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea64.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea64.png deleted file mode 100644 index 8115cabf42..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea65.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea65.png deleted file mode 100644 index 08fcc33710..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea65.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea69.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea69.png deleted file mode 100644 index fb513bb193..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea69.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea6a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea6a.png deleted file mode 100644 index 67f761e82a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea6a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea6c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea6c.png deleted file mode 100644 index d4adcd545d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea6c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea79.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea79.png deleted file mode 100644 index d371fdf181..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea79.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea80.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea80.png deleted file mode 100644 index caff7a4f52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea80.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea81.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea81.png deleted file mode 100644 index 55e4726cae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea81.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea82.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea82.png deleted file mode 100644 index d8e2bca0f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea82.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea83.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea83.png deleted file mode 100644 index 338bc1a950..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea83.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea84.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea84.png deleted file mode 100644 index 9ddb5c33db..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea84.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea85.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea85.png deleted file mode 100644 index 204f6395bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea85.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea86.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea86.png deleted file mode 100644 index 792fbdd05d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea86.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea89.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea89.png deleted file mode 100644 index 88e660f8f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea89.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8a.png deleted file mode 100644 index c8f92527ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8b.png deleted file mode 100644 index 1c6879ea35..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8c.png deleted file mode 100644 index 4b72c9b2b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8d.png deleted file mode 100644 index d8cd24a2c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8e.png deleted file mode 100644 index 947cb6f3e7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8f.png deleted file mode 100644 index cb58517b35..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea8f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea90.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea90.png deleted file mode 100644 index 1ef582b9d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea90.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea91.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea91.png deleted file mode 100644 index 0c8a5fad6c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea91.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea92.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea92.png deleted file mode 100644 index 6b0ab8d72b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea92.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea93.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea93.png deleted file mode 100644 index 81b38acb0c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea93.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea94.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea94.png deleted file mode 100644 index a64ad49b8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea94.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea95.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea95.png deleted file mode 100644 index 3096fdfcab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea95.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea97.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea97.png deleted file mode 100644 index 00fd8633fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea97.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea98.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea98.png deleted file mode 100644 index 777bd4852f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea98.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea99.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea99.png deleted file mode 100644 index 587804cbf3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ea99.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eac2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eac2.png deleted file mode 100644 index dcb63a68cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eac2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eac7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eac7.png deleted file mode 100644 index 77f0e712ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eac7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead4.png deleted file mode 100644 index a54ac70c77..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead5.png deleted file mode 100644 index c642abd227..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead6.png deleted file mode 100644 index a5184595ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead7.png deleted file mode 100644 index 42bfca53af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ead7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eadf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eadf.png deleted file mode 100644 index 3c0fc4a9b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eadf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eafc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eafc.png deleted file mode 100644 index bcdecdfa88..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eafc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb05.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb05.png deleted file mode 100644 index b216c053e1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb05.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb0f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb0f.png deleted file mode 100644 index 56a424169c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb0f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb11.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb11.png deleted file mode 100644 index c36ce3ddf1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb11.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb19.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb19.png deleted file mode 100644 index 781e78abee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb19.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb1d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb1d.png deleted file mode 100644 index 8e532ad95d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb1d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb3b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb3b.png deleted file mode 100644 index 449b99e788..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb3c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb3c.png deleted file mode 100644 index 6400bf35e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb41.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb41.png deleted file mode 100644 index 23dc9d6d0f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb42.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb42.png deleted file mode 100644 index 046780e772..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb44.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb44.png deleted file mode 100644 index e9c4813932..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb47.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb47.png deleted file mode 100644 index 3d339acc64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb48.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb48.png deleted file mode 100644 index 11b76d5492..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb48.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb49.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb49.png deleted file mode 100644 index ea2bae62a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4a.png deleted file mode 100644 index 330ffed758..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4b.png deleted file mode 100644 index 3faba8eea0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4c.png deleted file mode 100644 index cbf1d7e01a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4d.png deleted file mode 100644 index e1a668c677..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4e.png deleted file mode 100644 index f28dd475dc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4f.png deleted file mode 100644 index 7b1390386b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb50.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb50.png deleted file mode 100644 index 3fbc0976d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb50.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb51.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb51.png deleted file mode 100644 index 47451dce5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb51.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb52.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb52.png deleted file mode 100644 index 201360a571..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb52.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb55.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb55.png deleted file mode 100644 index c3735722d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb56.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb56.png deleted file mode 100644 index 9fa44d1e71..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb57.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb57.png deleted file mode 100644 index 2e7bac8161..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb58.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb58.png deleted file mode 100644 index f0c47b61b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb59.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb59.png deleted file mode 100644 index 6fc8fabbec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb59.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5a.png deleted file mode 100644 index d95f044564..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5b.png deleted file mode 100644 index fcba0f2060..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5c.png deleted file mode 100644 index 6a05400a08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5d.png deleted file mode 100644 index 18d81286a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5e.png deleted file mode 100644 index a638e3c971..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5f.png deleted file mode 100644 index a121910a03..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb60.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb60.png deleted file mode 100644 index a88eb4746b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb60.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb61.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb61.png deleted file mode 100644 index d68c5dcf6e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb62.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb62.png deleted file mode 100644 index 680ca0d55e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb62.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb63.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb63.png deleted file mode 100644 index 182bdb73e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb66.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb66.png deleted file mode 100644 index 519d8b7e25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb66.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb67.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb67.png deleted file mode 100644 index edceb2f209..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb67.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb68.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb68.png deleted file mode 100644 index 917698c61d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb68.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb77.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb77.png deleted file mode 100644 index 574da7734d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb77.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb7e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb7e.png deleted file mode 100644 index fe99cdd655..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb7e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb82.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb82.png deleted file mode 100644 index fab1af3a68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb82.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb83.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb83.png deleted file mode 100644 index 215f94f4cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb83.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb84.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb84.png deleted file mode 100644 index b750b94902..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb84.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb85.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb85.png deleted file mode 100644 index 6ccc7c82a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb85.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb86.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb86.png deleted file mode 100644 index d50e030a3a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb86.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb87.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb87.png deleted file mode 100644 index 354c387b7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb87.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb88.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb88.png deleted file mode 100644 index f5288fd992..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb88.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb89.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb89.png deleted file mode 100644 index 6aba7446f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb89.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8a.png deleted file mode 100644 index b9eeaf294d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8b.png deleted file mode 100644 index a761ea68bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8c.png deleted file mode 100644 index fab1af3a68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8d.png deleted file mode 100644 index c59bd0cad4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb8d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb90.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb90.png deleted file mode 100644 index c53e28ee64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb90.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb91.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb91.png deleted file mode 100644 index 2d4f67eafd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb91.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb95.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb95.png deleted file mode 100644 index 843868c1d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb95.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb96.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb96.png deleted file mode 100644 index 9ee29fb3c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb96.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb97.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb97.png deleted file mode 100644 index c4952701a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb97.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9d.png deleted file mode 100644 index 4d3062d827..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9e.png deleted file mode 100644 index 2e7547719d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9f.png deleted file mode 100644 index 8f2b8fd6a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eb9f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba0.png deleted file mode 100644 index 98df9b73e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba1.png deleted file mode 100644 index a55863a765..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba2.png deleted file mode 100644 index b51354cd8d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba3.png deleted file mode 100644 index 4a541552e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba4.png deleted file mode 100644 index 805a2bd2ff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba5.png deleted file mode 100644 index 3d3da4fbfb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba6.png deleted file mode 100644 index ddf7753283..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba7.png deleted file mode 100644 index 9d65d5173b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba8.png deleted file mode 100644 index 9ed555da84..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba9.png deleted file mode 100644 index 755e464e96..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eba9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebaa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebaa.png deleted file mode 100644 index 7a3d1f8064..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebab.png deleted file mode 100644 index 538a5c55ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebac.png deleted file mode 100644 index 8f95ea01c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebad.png deleted file mode 100644 index 29de4d35b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebae.png deleted file mode 100644 index 2350a1eec7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebaf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebaf.png deleted file mode 100644 index 863dd9072b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb0.png deleted file mode 100644 index 0a9c0ca2b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb1.png deleted file mode 100644 index 01af201c69..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb2.png deleted file mode 100644 index faed30760c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb3.png deleted file mode 100644 index c53ebe764e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb4.png deleted file mode 100644 index 82faae25e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb5.png deleted file mode 100644 index e0152767d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb6.png deleted file mode 100644 index 5d9b19bf08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb7.png deleted file mode 100644 index ce458a9e00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb8.png deleted file mode 100644 index c65622db4a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb9.png deleted file mode 100644 index 9584bf8887..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebb9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebba.png deleted file mode 100644 index e323ff80e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbb.png deleted file mode 100644 index 6e46b6e1ce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbc.png deleted file mode 100644 index 932a95740c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbd.png deleted file mode 100644 index 6f6bd3058f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbe.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbe.png deleted file mode 100644 index baaca220de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbf.png deleted file mode 100644 index 282aaf9085..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebbf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc0.png deleted file mode 100644 index aab955b669..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc3.png deleted file mode 100644 index a9af5e28a9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc4.png deleted file mode 100644 index a385ebc6c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc5.png deleted file mode 100644 index 841fe6b782..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc6.png deleted file mode 100644 index 3f12482cb6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd2.png deleted file mode 100644 index 70b6ea3678..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd3.png deleted file mode 100644 index 5763f43461..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd4.png deleted file mode 100644 index f470984e76..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd5.png deleted file mode 100644 index e608519ea5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd6.png deleted file mode 100644 index 8d3c557ce4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd7.png deleted file mode 100644 index ecc1c68931..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd8.png deleted file mode 100644 index ea2576149b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd9.png deleted file mode 100644 index d0a19d3544..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebd9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebda.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebda.png deleted file mode 100644 index 19e7e04f66..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebda.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebdb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebdb.png deleted file mode 100644 index 777816ba89..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebdb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebde.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebde.png deleted file mode 100644 index 70ae7cd62a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebde.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe6.png deleted file mode 100644 index fd777dfb8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe7.png deleted file mode 100644 index 996476071b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe8.png deleted file mode 100644 index 61df88df59..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebe8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfc.png deleted file mode 100644 index 1e17648b22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfd.png deleted file mode 100644 index d5226128f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfe.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfe.png deleted file mode 100644 index 56904922ac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebfe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebff.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebff.png deleted file mode 100644 index 941ce399bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ebff.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec00.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec00.png deleted file mode 100644 index e747c68f23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec00.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec02.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec02.png deleted file mode 100644 index 764cff2c5f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec02.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec05.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec05.png deleted file mode 100644 index cbedc00737..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec05.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec06.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec06.png deleted file mode 100644 index 40d63d84e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec06.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec07.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec07.png deleted file mode 100644 index fb1a773f79..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec07.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec08.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec08.png deleted file mode 100644 index f78e3e744c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec08.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec09.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec09.png deleted file mode 100644 index c62b0a0416..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec09.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec0a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec0a.png deleted file mode 100644 index 6516212eb0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec0a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec0b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec0b.png deleted file mode 100644 index 8fc77b7065..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec0b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec11.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec11.png deleted file mode 100644 index e353e8c1dc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec11.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec12.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec12.png deleted file mode 100644 index 49a1d519e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec12.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec13.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec13.png deleted file mode 100644 index 5d9152ccb2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec13.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec14.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec14.png deleted file mode 100644 index ecb2625c56..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec14.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec15.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec15.png deleted file mode 100644 index fa2bfb25cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec15.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec16.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec16.png deleted file mode 100644 index 6affed8aa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec16.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec19.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec19.png deleted file mode 100644 index c595fe0fe0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec19.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec1b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec1b.png deleted file mode 100644 index 3f751405c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec1b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec1e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec1e.png deleted file mode 100644 index 767a29abeb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec1e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec20.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec20.png deleted file mode 100644 index 6e6f4303ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec20.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec24.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec24.png deleted file mode 100644 index 76482be02d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec24.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec25.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec25.png deleted file mode 100644 index 16bf48ea27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec25.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec26.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec26.png deleted file mode 100644 index e9bd8ed3ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec26.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec27.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec27.png deleted file mode 100644 index ea83510414..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec27.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec31.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec31.png deleted file mode 100644 index 989dfd3ed2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec31.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec32.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec32.png deleted file mode 100644 index 8138999675..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec32.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec34.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec34.png deleted file mode 100644 index 37c004228e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec34.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec37.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec37.png deleted file mode 100644 index 96dd944d3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec37.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec38.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec38.png deleted file mode 100644 index 43d5e2dfab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec38.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec39.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec39.png deleted file mode 100644 index 52aadb5894..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec39.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3a.png deleted file mode 100644 index 9cbdc9ee46..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3b.png deleted file mode 100644 index c6736d54c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3c.png deleted file mode 100644 index 9713efd7d0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3d.png deleted file mode 100644 index 0623280e90..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3e.png deleted file mode 100644 index f064788930..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3f.png deleted file mode 100644 index 92e290769a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec40.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec40.png deleted file mode 100644 index 9433f0e5d2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec41.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec41.png deleted file mode 100644 index fdbfddfbe4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec42.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec42.png deleted file mode 100644 index 43155e9cdb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec43.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec43.png deleted file mode 100644 index 9aef1dd963..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec43.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec44.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec44.png deleted file mode 100644 index bac1463210..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec45.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec45.png deleted file mode 100644 index a6bfa3cb67..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec45.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec46.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec46.png deleted file mode 100644 index 6c94154bb3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec46.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec47.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec47.png deleted file mode 100644 index 9710a653fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec48.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec48.png deleted file mode 100644 index 7b0f4157ce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec48.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec49.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec49.png deleted file mode 100644 index b8bba0cdf2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4a.png deleted file mode 100644 index 265b2293fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4e.png deleted file mode 100644 index e7797db859..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4f.png deleted file mode 100644 index 664d618226..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec50.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec50.png deleted file mode 100644 index 1441d6c792..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec50.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec51.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec51.png deleted file mode 100644 index cfacd8be8e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec51.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec52.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec52.png deleted file mode 100644 index 6132d640f8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec52.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec54.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec54.png deleted file mode 100644 index 51daae1511..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec54.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec55.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec55.png deleted file mode 100644 index 57ebef4e47..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec56.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec56.png deleted file mode 100644 index 41982ede7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec57.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec57.png deleted file mode 100644 index 2e408f85c2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec58.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec58.png deleted file mode 100644 index 24863ab3eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec59.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec59.png deleted file mode 100644 index 91fa277d16..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec59.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5a.png deleted file mode 100644 index bf5a7e96f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5b.png deleted file mode 100644 index 4527377751..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5c.png deleted file mode 100644 index c25030ea9c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec61.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec61.png deleted file mode 100644 index 79190b6f13..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec64.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec64.png deleted file mode 100644 index b88c229d2d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec6c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec6c.png deleted file mode 100644 index 7559da33eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec6c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec6d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec6d.png deleted file mode 100644 index 1abae1565c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec6d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec71.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec71.png deleted file mode 100644 index f2821fad9c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec71.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec72.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec72.png deleted file mode 100644 index 9dfef1f3b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec72.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec74.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec74.png deleted file mode 100644 index c7c6b74b12..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec74.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec75.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec75.png deleted file mode 100644 index 15e65a0f22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec75.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec76.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec76.png deleted file mode 100644 index f9817ceaf6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec76.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec77.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec77.png deleted file mode 100644 index d71a84ba27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec77.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7a.png deleted file mode 100644 index 3ac7bb18a2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7e.png deleted file mode 100644 index 1f0678ff55..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7f.png deleted file mode 100644 index 00fd8633fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec7f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec80.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec80.png deleted file mode 100644 index 0dec1583a0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec80.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec81.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec81.png deleted file mode 100644 index 090a38cc6e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec81.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec83.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec83.png deleted file mode 100644 index 2bbfe03054..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec83.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec87.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec87.png deleted file mode 100644 index 11d9ef3d32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec87.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec88.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec88.png deleted file mode 100644 index 909bb39ade..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec88.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec8a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec8a.png deleted file mode 100644 index 2d66ef225e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec8f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec8f.png deleted file mode 100644 index 2d18a34af3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec8f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec91.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec91.png deleted file mode 100644 index d082e70908..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec91.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec92.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec92.png deleted file mode 100644 index 80446dfe55..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec92.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec94.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec94.png deleted file mode 100644 index 7c5e7d165f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec94.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec9c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec9c.png deleted file mode 100644 index 88472b3be0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ec9c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eca5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eca5.png deleted file mode 100644 index 740234c74f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eca5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eca7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eca7.png deleted file mode 100644 index 8144e8579f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eca7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecaa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecaa.png deleted file mode 100644 index f39c5f1122..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecad.png deleted file mode 100644 index 8efc947555..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecaf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecaf.png deleted file mode 100644 index 0897d73696..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecb9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecb9.png deleted file mode 100644 index 98df9b73e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecb9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecba.png deleted file mode 100644 index a55863a765..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbb.png deleted file mode 100644 index 4a541552e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbc.png deleted file mode 100644 index 3d3da4fbfb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbd.png deleted file mode 100644 index 9d65d5173b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbe.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbe.png deleted file mode 100644 index 9ed555da84..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbf.png deleted file mode 100644 index 7a3d1f8064..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecbf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc4.png deleted file mode 100644 index 5cca934df6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc5.png deleted file mode 100644 index e606b1dcbf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc6.png deleted file mode 100644 index 84503a29ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc8.png deleted file mode 100644 index c82b233d7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc9.png deleted file mode 100644 index 5b64482967..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecc9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecca.png deleted file mode 100644 index ba342ec183..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccb.png deleted file mode 100644 index d0d4c19a65..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccc.png deleted file mode 100644 index 99b96cab96..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccd.png deleted file mode 100644 index 8e928373d9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eccd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece4.png deleted file mode 100644 index 040125d4f9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece7.png deleted file mode 100644 index 87aff655cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece8.png deleted file mode 100644 index f87ec6545f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece9.png deleted file mode 100644 index cf44f34ea2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ece9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf0.png deleted file mode 100644 index d1cd12a37e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf1.png deleted file mode 100644 index 66a370d410..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf3.png deleted file mode 100644 index 29dcace9b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ecf3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0c.png deleted file mode 100644 index e710f9b711..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0d.png deleted file mode 100644 index 43155e9cdb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0e.png deleted file mode 100644 index c44969d891..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed0e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed10.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed10.png deleted file mode 100644 index c01a624a90..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed10.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed11.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed11.png deleted file mode 100644 index c44969d891..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed11.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed14.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed14.png deleted file mode 100644 index 2a43fc18d2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed14.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed15.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed15.png deleted file mode 100644 index f486fda515..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed15.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1a.png deleted file mode 100644 index aeaeb6706d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1e.png deleted file mode 100644 index 734cfed7a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1f.png deleted file mode 100644 index 265adb346f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed21.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed21.png deleted file mode 100644 index f45e289856..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed21.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed25.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed25.png deleted file mode 100644 index d83806c8f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed25.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed28.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed28.png deleted file mode 100644 index 9c4eed7b22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed28.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2a.png deleted file mode 100644 index 2795b78860..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2b.png deleted file mode 100644 index 0a40f61b09..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2c.png deleted file mode 100644 index 0bc5a44337..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2d.png deleted file mode 100644 index ef36717461..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2e.png deleted file mode 100644 index e82dd586ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2f.png deleted file mode 100644 index 4cf15c27e7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed2f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed30.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed30.png deleted file mode 100644 index 222d5bd15e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed30.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed31.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed31.png deleted file mode 100644 index 7c1f08bdd6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed31.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed32.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed32.png deleted file mode 100644 index 7ca4826739..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed32.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed33.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed33.png deleted file mode 100644 index 09f28f4907..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed33.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed35.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed35.png deleted file mode 100644 index 61165c3318..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed35.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed37.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed37.png deleted file mode 100644 index 90cb98de48..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed37.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed39.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed39.png deleted file mode 100644 index 7b4d010b2c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed39.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3a.png deleted file mode 100644 index de6ff83cb0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3c.png deleted file mode 100644 index 337451da03..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3d.png deleted file mode 100644 index 0f067790f9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed41.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed41.png deleted file mode 100644 index 13e3129a0e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed42.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed42.png deleted file mode 100644 index d2cf8b9c0d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed43.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed43.png deleted file mode 100644 index 5083db364e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed43.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed44.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed44.png deleted file mode 100644 index 6f34869f7d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed47.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed47.png deleted file mode 100644 index 413cc0a4a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed4c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed4c.png deleted file mode 100644 index ae3577fb15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed4d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed4d.png deleted file mode 100644 index 99f08edc3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed4d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed53.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed53.png deleted file mode 100644 index c4be974f88..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed53.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed54.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed54.png deleted file mode 100644 index 1d624e63f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed54.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed55.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed55.png deleted file mode 100644 index a438b3cd9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed56.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed56.png deleted file mode 100644 index ce43e5de34..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed57.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed57.png deleted file mode 100644 index 56af8d2ee8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed58.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed58.png deleted file mode 100644 index dfd652fd68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed59.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed59.png deleted file mode 100644 index 8a2c086eca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed59.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5a.png deleted file mode 100644 index 65a178d490..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5b.png deleted file mode 100644 index fa40b83242..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5c.png deleted file mode 100644 index 6affed8aa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5d.png deleted file mode 100644 index 851e6537a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5e.png deleted file mode 100644 index 4be1a0c55b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5f.png deleted file mode 100644 index 8e457c86b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed60.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed60.png deleted file mode 100644 index b3d64a6bfc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed60.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed61.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed61.png deleted file mode 100644 index 91f54f2971..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed62.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed62.png deleted file mode 100644 index 2bd9b658b0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed62.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed63.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed63.png deleted file mode 100644 index b4161492c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed64.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed64.png deleted file mode 100644 index 114984aaa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed65.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed65.png deleted file mode 100644 index 00d6f1f0a9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed65.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed66.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed66.png deleted file mode 100644 index 409e42b0bc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed66.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed67.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed67.png deleted file mode 100644 index 508ee264f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ed67.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda2.png deleted file mode 100644 index 51c1e8a6d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda3.png deleted file mode 100644 index dfa98b3485..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda4.png deleted file mode 100644 index b29aefe693..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda5.png deleted file mode 100644 index 77fe1757c9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda6.png deleted file mode 100644 index 8bd245b787..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda7.png deleted file mode 100644 index 792bf88d2a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda8.png deleted file mode 100644 index ca7654f885..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda9.png deleted file mode 100644 index 114dcb4d02..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eda9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edaa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edaa.png deleted file mode 100644 index 745d9992fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edab.png deleted file mode 100644 index 63ad8a439d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edac.png deleted file mode 100644 index 772fd1b2de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edad.png deleted file mode 100644 index 6ffd15492c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edae.png deleted file mode 100644 index aa816465e1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edaf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edaf.png deleted file mode 100644 index 26918a4453..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb0.png deleted file mode 100644 index 9cc976b4f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb1.png deleted file mode 100644 index 7b3ceddb90..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb3.png deleted file mode 100644 index f2ee24d3c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb4.png deleted file mode 100644 index f2fc1edab6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb5.png deleted file mode 100644 index 8c3d944e73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edb5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edc6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edc6.png deleted file mode 100644 index 5f4a871801..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd5.png deleted file mode 100644 index 5297c8db2f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd6.png deleted file mode 100644 index 101387a967..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd7.png deleted file mode 100644 index 689a961e0c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd8.png deleted file mode 100644 index 291da174ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd9.png deleted file mode 100644 index dc13abf676..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edd9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edda.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edda.png deleted file mode 100644 index dc5a9444cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edda.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eddb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eddb.png deleted file mode 100644 index acf20fd641..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eddb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eddc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eddc.png deleted file mode 100644 index 35a796ba93..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eddc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede0.png deleted file mode 100644 index 4ae0c0da4a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede1.png deleted file mode 100644 index ad0a9c8d15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede2.png deleted file mode 100644 index 87014c07b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede3.png deleted file mode 100644 index e3a3d3e92e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede4.png deleted file mode 100644 index ff8aa5bdbe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede5.png deleted file mode 100644 index 94a92ee33a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ede5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edfb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edfb.png deleted file mode 100644 index de35a8472a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/edfb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee35.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee35.png deleted file mode 100644 index fe3eef6e44..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee35.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee3f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee3f.png deleted file mode 100644 index 1fb44cad12..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee40.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee40.png deleted file mode 100644 index 37e9eba039..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee41.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee41.png deleted file mode 100644 index b8ac796771..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee42.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee42.png deleted file mode 100644 index 51b68aa481..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee43.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee43.png deleted file mode 100644 index 3ad62baa18..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee43.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee44.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee44.png deleted file mode 100644 index 49413a3b09..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee45.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee45.png deleted file mode 100644 index 68410b1805..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee45.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee47.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee47.png deleted file mode 100644 index 8d7d89cf57..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee49.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee49.png deleted file mode 100644 index 4c8308b252..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee4a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee4a.png deleted file mode 100644 index eb3e9a184b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee56.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee56.png deleted file mode 100644 index 58fa7c4c6b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee57.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee57.png deleted file mode 100644 index 30caa15b46..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee63.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee63.png deleted file mode 100644 index 98df9b73e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee64.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee64.png deleted file mode 100644 index 0dbb03f6c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee65.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee65.png deleted file mode 100644 index 9e072aacd4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee65.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee6f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee6f.png deleted file mode 100644 index 945c371877..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee6f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee71.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee71.png deleted file mode 100644 index 19e78506ed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee71.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee77.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee77.png deleted file mode 100644 index 637477826c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee77.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee79.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee79.png deleted file mode 100644 index 11951d9340..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee79.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee7a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee7a.png deleted file mode 100644 index 61a7edd304..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee7a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee7e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee7e.png deleted file mode 100644 index eb8250fa78..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee7e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee92.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee92.png deleted file mode 100644 index 019a9b57de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee92.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee93.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee93.png deleted file mode 100644 index 80446dfe55..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee93.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee94.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee94.png deleted file mode 100644 index d39b8def84..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee94.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee95.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee95.png deleted file mode 100644 index 162cec61f8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ee95.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea0.png deleted file mode 100644 index 5320cbcf42..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea1.png deleted file mode 100644 index 8dc1146110..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea3.png deleted file mode 100644 index 5dfd0ba6f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eea3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eeca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eeca.png deleted file mode 100644 index 2427cb2032..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/eeca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef15.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef15.png deleted file mode 100644 index c902ae7d4e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef15.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef16.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef16.png deleted file mode 100644 index cefc4bbf60..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef16.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef17.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef17.png deleted file mode 100644 index 402b21d4aa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef17.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef18.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef18.png deleted file mode 100644 index 8a0af54d57..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef18.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef19.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef19.png deleted file mode 100644 index e38cf76014..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef19.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef1f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef1f.png deleted file mode 100644 index 3cb5adb891..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef20.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef20.png deleted file mode 100644 index 99ff5ff14a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef20.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2c.png deleted file mode 100644 index 47aa21cde5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2d.png deleted file mode 100644 index c32891af9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2e.png deleted file mode 100644 index f08fd7f65b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2f.png deleted file mode 100644 index 8819e24512..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef2f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef31.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef31.png deleted file mode 100644 index 8f19f9e49e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef31.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3b.png deleted file mode 100644 index 63e63b048f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3c.png deleted file mode 100644 index 5794b02546..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3d.png deleted file mode 100644 index 91e66d4b4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3e.png deleted file mode 100644 index fd88afd541..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3f.png deleted file mode 100644 index 1a8372beb2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef40.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef40.png deleted file mode 100644 index 0e55dbc636..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef42.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef42.png deleted file mode 100644 index 2f3157c39a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef58.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef58.png deleted file mode 100644 index 8e0dfd8247..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef60.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef60.png deleted file mode 100644 index 85680dc132..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef60.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef6b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef6b.png deleted file mode 100644 index e6243e7a1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef6b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef90.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef90.png deleted file mode 100644 index 8f28c8580d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/ef90.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efa5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efa5.png deleted file mode 100644 index 03df06614f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efa5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efa9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efa9.png deleted file mode 100644 index 83e75f33e7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efa9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efda.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efda.png deleted file mode 100644 index 8cc73bc151..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efda.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efff.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efff.png deleted file mode 100644 index 011dc7d82e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/efff.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f000.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f000.png deleted file mode 100644 index af388271b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f000.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f003.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f003.png deleted file mode 100644 index 9e471e60c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f003.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f012.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f012.png deleted file mode 100644 index 21d5f88ca9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f012.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f080.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f080.png deleted file mode 100644 index c2226d8bba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f080.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f081.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f081.png deleted file mode 100644 index e5789808e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f081.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f085.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f085.png deleted file mode 100644 index 77470cee0d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f085.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08c.png deleted file mode 100644 index 3e4e3329f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08d.png deleted file mode 100644 index 5cdfe4ab47..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08e.png deleted file mode 100644 index 5fa7025617..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08f.png deleted file mode 100644 index 58c4fe95eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f08f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f090.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f090.png deleted file mode 100644 index c183678bb2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f090.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f093.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f093.png deleted file mode 100644 index 6f25fbe83c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f093.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f094.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f094.png deleted file mode 100644 index 5a4301bdd5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f094.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f095.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f095.png deleted file mode 100644 index 047f060d6f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f095.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f096.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f096.png deleted file mode 100644 index 86b1469d64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f096.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ad.png deleted file mode 100644 index 1f2678e6a0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ae.png deleted file mode 100644 index fa8829618d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0af.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0af.png deleted file mode 100644 index 2d7c283d9f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b0.png deleted file mode 100644 index 6dc9d34499..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b2.png deleted file mode 100644 index f09770cda1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b3.png deleted file mode 100644 index 78a4a502cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b4.png deleted file mode 100644 index 13bdc81a31..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b5.png deleted file mode 100644 index 9802a4e910..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b6.png deleted file mode 100644 index f66a777778..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b7.png deleted file mode 100644 index 76714f7659..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b8.png deleted file mode 100644 index b4a5a6c7fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b9.png deleted file mode 100644 index 56a35f6d74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0c6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0c6.png deleted file mode 100644 index 6fff819ca9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0c7.png deleted file mode 100644 index 573ea51cc8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ca.png deleted file mode 100644 index 62fdad4bf2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cb.png deleted file mode 100644 index 5ad3f31179..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cc.png deleted file mode 100644 index 913da19a7d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cd.png deleted file mode 100644 index 3543d976e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ce.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ce.png deleted file mode 100644 index be3fdd06b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d2.png deleted file mode 100644 index e496ce5dc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d3.png deleted file mode 100644 index a918ed4d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d5.png deleted file mode 100644 index 856be436f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d6.png deleted file mode 100644 index 38a9f4f333..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d7.png deleted file mode 100644 index a2b2e61e0b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d8.png deleted file mode 100644 index 24dc4e6f32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e2.png deleted file mode 100644 index 04ebed4a27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e3.png deleted file mode 100644 index ff2b9e3599..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e4.png deleted file mode 100644 index 486d87ae61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e5.png deleted file mode 100644 index b13837da8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e6.png deleted file mode 100644 index e39b9a67b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e7.png deleted file mode 100644 index 49345f424a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e8.png deleted file mode 100644 index e27b1284cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e9.png deleted file mode 100644 index d32636b882..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ea.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ea.png deleted file mode 100644 index 1ad29336fd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0eb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0eb.png deleted file mode 100644 index b5db67a8b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ec.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ec.png deleted file mode 100644 index 4e25dd8729..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ed.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ed.png deleted file mode 100644 index b048d0d9e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ee.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ee.png deleted file mode 100644 index 1fde3d9b1e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ef.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ef.png deleted file mode 100644 index 53003defb3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f7.png deleted file mode 100644 index 739be6a33d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f8.png deleted file mode 100644 index 1dbfc6b9cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f9.png deleted file mode 100644 index 41875871f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0fb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0fb.png deleted file mode 100644 index d79a068269..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f0fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f103.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f103.png deleted file mode 100644 index 44e264113c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f103.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f108.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f108.png deleted file mode 100644 index c35581d151..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f108.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f109.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f109.png deleted file mode 100644 index eb1e5c646a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f109.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10a.png deleted file mode 100644 index 0023f88316..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10b.png deleted file mode 100644 index b4be169788..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10c.png deleted file mode 100644 index ecbbdf0508..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10d.png deleted file mode 100644 index aa3b17791a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10e.png deleted file mode 100644 index fc8ddac1bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f10e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f110.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f110.png deleted file mode 100644 index a37254ab78..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f110.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f111.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f111.png deleted file mode 100644 index dfe077d2e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f111.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f112.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f112.png deleted file mode 100644 index 0f72f3fac3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f112.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f117.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f117.png deleted file mode 100644 index beaaf84026..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f117.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f119.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f119.png deleted file mode 100644 index 4f0bc600c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f119.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f11b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f11b.png deleted file mode 100644 index ef5f41718b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f11b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f120.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f120.png deleted file mode 100644 index b9cc9fa3c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f120.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f126.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f126.png deleted file mode 100644 index cd34402204..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f126.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f127.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f127.png deleted file mode 100644 index 446afd41ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f127.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f128.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f128.png deleted file mode 100644 index b4f1d3e60e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f128.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f129.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f129.png deleted file mode 100644 index 8e2ad48c7d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f129.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12a.png deleted file mode 100644 index 8cb2e3dd87..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12b.png deleted file mode 100644 index a7c4825bba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12e.png deleted file mode 100644 index 9b97e18816..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12f.png deleted file mode 100644 index 7acdcc6c07..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f12f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f131.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f131.png deleted file mode 100644 index 64bce805c3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f131.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f133.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f133.png deleted file mode 100644 index 32ff733fbd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f133.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f136.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f136.png deleted file mode 100644 index a7da39f74d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f136.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f137.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f137.png deleted file mode 100644 index 90fdc234ed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f137.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f138.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f138.png deleted file mode 100644 index 53382c9d12..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f138.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f139.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f139.png deleted file mode 100644 index 917d510a42..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f139.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13a.png deleted file mode 100644 index c5d90b153c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13b.png deleted file mode 100644 index 3dc599a894..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13c.png deleted file mode 100644 index 72f2419a8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13d.png deleted file mode 100644 index 6c72303980..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13e.png deleted file mode 100644 index 1ea505a8be..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13f.png deleted file mode 100644 index db7894ce2c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f13f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f140.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f140.png deleted file mode 100644 index ae6cd8ff00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f140.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f141.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f141.png deleted file mode 100644 index ed59935bd7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f141.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f142.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f142.png deleted file mode 100644 index b890772224..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f142.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f143.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f143.png deleted file mode 100644 index e52bf19751..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f143.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f146.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f146.png deleted file mode 100644 index 9a27701487..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f146.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f147.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f147.png deleted file mode 100644 index a7c5221240..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f147.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f148.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f148.png deleted file mode 100644 index a658ee21ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f148.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f149.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f149.png deleted file mode 100644 index 08f80d926c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f149.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14a.png deleted file mode 100644 index 40f6cf4f03..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14b.png deleted file mode 100644 index 4ef3acf029..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14c.png deleted file mode 100644 index c3897032b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14d.png deleted file mode 100644 index a724425d58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14e.png deleted file mode 100644 index 6d32dcd12d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14f.png deleted file mode 100644 index 533ddf8dfd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f14f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f150.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f150.png deleted file mode 100644 index ea543366fd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f150.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f151.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f151.png deleted file mode 100644 index c1160b0ff7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f151.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f152.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f152.png deleted file mode 100644 index 0128cb4a05..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f152.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f153.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f153.png deleted file mode 100644 index 894c551fb1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f153.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f154.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f154.png deleted file mode 100644 index daed1dbf3a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f154.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f155.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f155.png deleted file mode 100644 index 2bc4732390..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f155.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f156.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f156.png deleted file mode 100644 index ff6575c9c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f156.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f157.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f157.png deleted file mode 100644 index 37371ad729..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f157.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f158.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f158.png deleted file mode 100644 index e5b041c29c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f158.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f159.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f159.png deleted file mode 100644 index 64d639e620..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f159.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f15f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f15f.png deleted file mode 100644 index 734cfed7a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f15f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f161.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f161.png deleted file mode 100644 index 3c67a5b6e1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f161.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f163.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f163.png deleted file mode 100644 index 7589ec4e33..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f163.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f164.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f164.png deleted file mode 100644 index e5ef21d14d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f164.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f165.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f165.png deleted file mode 100644 index ccd5a588a8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f165.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f166.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f166.png deleted file mode 100644 index c278b20e9c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f166.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f167.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f167.png deleted file mode 100644 index c5e3158e3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f167.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f168.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f168.png deleted file mode 100644 index fdd7875dd6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f168.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f169.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f169.png deleted file mode 100644 index 5a55b98b86..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f169.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16a.png deleted file mode 100644 index 9d11e743e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16b.png deleted file mode 100644 index 73abea284d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16c.png deleted file mode 100644 index a10286af7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16d.png deleted file mode 100644 index df5411f250..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16e.png deleted file mode 100644 index 9574d0435a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f16e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f175.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f175.png deleted file mode 100644 index 5bf3b89cbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f175.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f17f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f17f.png deleted file mode 100644 index b1c7210c92..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f17f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f180.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f180.png deleted file mode 100644 index b8421b8c95..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f180.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f182.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f182.png deleted file mode 100644 index 43a747cb0b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f182.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f191.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f191.png deleted file mode 100644 index e755d69d8b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f191.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f193.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f193.png deleted file mode 100644 index 67b5228840..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f193.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f196.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f196.png deleted file mode 100644 index 417e5d1e4b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f196.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19d.png deleted file mode 100644 index 6807a4800b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19e.png deleted file mode 100644 index a90b646278..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19f.png deleted file mode 100644 index ba7da14ff4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f19f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1ad.png deleted file mode 100644 index db4408ea38..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1b1.png deleted file mode 100644 index 3cc071c6e6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1cb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1cb.png deleted file mode 100644 index 7a4e55a9a8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1cc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1cc.png deleted file mode 100644 index 63a2d857fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1d8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1d8.png deleted file mode 100644 index e643827c8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1d9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1d9.png deleted file mode 100644 index ba9dcea501..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1db.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1db.png deleted file mode 100644 index 2375e66fc0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1db.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1e8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1e8.png deleted file mode 100644 index 0bbed60082..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f1e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f20c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f20c.png deleted file mode 100644 index 9062350526..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f20c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f20d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f20d.png deleted file mode 100644 index ae3577fb15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f20d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f210.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f210.png deleted file mode 100644 index 57ee1bac1d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f210.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f211.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f211.png deleted file mode 100644 index 9baa6a0011..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f211.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f22c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f22c.png deleted file mode 100644 index e426439f1f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f22c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f22e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f22e.png deleted file mode 100644 index d177fc80b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f22e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f232.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f232.png deleted file mode 100644 index a3c402da9e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f232.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f246.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f246.png deleted file mode 100644 index aa408be47c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f246.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f259.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f259.png deleted file mode 100644 index d02a31e28b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f259.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f260.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f260.png deleted file mode 100644 index e9f354be74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f260.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f261.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f261.png deleted file mode 100644 index 655b74254b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f261.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26b.png deleted file mode 100644 index d82b840059..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26c.png deleted file mode 100644 index 52c47f4101..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26d.png deleted file mode 100644 index 973c0541f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26e.png deleted file mode 100644 index 0b5c0d617c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f26e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f270.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f270.png deleted file mode 100644 index 461f2225d7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f270.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f271.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f271.png deleted file mode 100644 index 918423b006..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f271.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f272.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f272.png deleted file mode 100644 index 140f3b2b08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f272.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f27c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f27c.png deleted file mode 100644 index 120ec488f1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f27c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f27f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f27f.png deleted file mode 100644 index a0ba14e32d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f27f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f285.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f285.png deleted file mode 100644 index 36886903ca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f285.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f28b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f28b.png deleted file mode 100644 index fd01aec0a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f28b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a3.png deleted file mode 100644 index e1ccf330e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a5.png deleted file mode 100644 index fac96a94da..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a8.png deleted file mode 100644 index 5b62ee7d36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2b7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2b7.png deleted file mode 100644 index 64943552ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2c7.png deleted file mode 100644 index 8e3043c8ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2c8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2c8.png deleted file mode 100644 index f8619c526c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2d9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2d9.png deleted file mode 100644 index fbe846271c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f2d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f32a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f32a.png deleted file mode 100644 index 98f3beeaac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f32a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f354.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f354.png deleted file mode 100644 index 7d57e8dc5b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f354.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f384.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f384.png deleted file mode 100644 index 053d8b1ad3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f384.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f385.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f385.png deleted file mode 100644 index ceca2ed351..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f385.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f386.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f386.png deleted file mode 100644 index 823279302a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f386.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3b1.png deleted file mode 100644 index 6e5c5f7929..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3cc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3cc.png deleted file mode 100644 index 21e897feb0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3cd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3cd.png deleted file mode 100644 index df42312539..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3e2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3e2.png deleted file mode 100644 index 97fcf042f9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3e7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3e7.png deleted file mode 100644 index ae5de5a416..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f3e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f404.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f404.png deleted file mode 100644 index 6f1b34d657..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f404.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f405.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f405.png deleted file mode 100644 index e5e25168a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f405.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f406.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f406.png deleted file mode 100644 index f0963faa3d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f406.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f407.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f407.png deleted file mode 100644 index b557d9213c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f407.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f408.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f408.png deleted file mode 100644 index 63db34b0a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f408.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f413.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f413.png deleted file mode 100644 index 6df634b761..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f413.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f427.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f427.png deleted file mode 100644 index 30caa15b46..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f427.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f432.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f432.png deleted file mode 100644 index 3fd84b3bdd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f432.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f439.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f439.png deleted file mode 100644 index 23846e7da3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f439.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f45e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f45e.png deleted file mode 100644 index 9834ba2a63..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f45e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f45f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f45f.png deleted file mode 100644 index c7e8aecf43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f45f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f460.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f460.png deleted file mode 100644 index ebbbae8852..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f460.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f461.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f461.png deleted file mode 100644 index 8f2a90d1c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f461.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f462.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f462.png deleted file mode 100644 index 0860a1f5e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f462.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f463.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f463.png deleted file mode 100644 index 056d3a2ad9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f463.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f464.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f464.png deleted file mode 100644 index af0c0e2618..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f464.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f465.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f465.png deleted file mode 100644 index 78935d3c1c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f465.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f466.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f466.png deleted file mode 100644 index cc48825469..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f466.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f473.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f473.png deleted file mode 100644 index a88eb4746b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f473.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f474.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f474.png deleted file mode 100644 index d68c5dcf6e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f474.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f475.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f475.png deleted file mode 100644 index 680ca0d55e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f475.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f476.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f476.png deleted file mode 100644 index 182bdb73e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f476.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f47f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f47f.png deleted file mode 100644 index dfca312342..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f47f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f49a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f49a.png deleted file mode 100644 index 1b1a8f5326..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f49a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4a5.png deleted file mode 100644 index ed1c9486aa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4a9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4a9.png deleted file mode 100644 index 69214dfe86..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4aa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4aa.png deleted file mode 100644 index 8d095df9ff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4bd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4bd.png deleted file mode 100644 index 13c3a3f2dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4bd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4be.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4be.png deleted file mode 100644 index 05651dbcb9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4be.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4bf.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4bf.png deleted file mode 100644 index b5cb2e05e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4c0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4c0.png deleted file mode 100644 index f5c3aaa993..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4c3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4c3.png deleted file mode 100644 index 6fd7f890b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f4c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f540.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f540.png deleted file mode 100644 index cc7387ae9e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f540.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f552.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f552.png deleted file mode 100644 index 34dab2829d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f552.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56d.png deleted file mode 100644 index e90ba78920..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56e.png deleted file mode 100644 index 384ab77f10..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56f.png deleted file mode 100644 index 83e596e52d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f56f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f570.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f570.png deleted file mode 100644 index 83e1e36ee0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f570.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f571.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f571.png deleted file mode 100644 index aadd18dc81..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f571.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f572.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f572.png deleted file mode 100644 index 7cd07931f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f572.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f573.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f573.png deleted file mode 100644 index 3a5c95c7d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f573.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f574.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f574.png deleted file mode 100644 index 459a8cf96a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f574.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f575.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f575.png deleted file mode 100644 index fe39c89292..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f575.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f576.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f576.png deleted file mode 100644 index 6c5b9585d0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f576.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f577.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f577.png deleted file mode 100644 index f87b2fc85b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f577.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f578.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f578.png deleted file mode 100644 index d3261dde04..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f578.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f579.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f579.png deleted file mode 100644 index df837a0c84..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f579.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57a.png deleted file mode 100644 index 7814bce33e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57b.png deleted file mode 100644 index 298050b9de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57c.png deleted file mode 100644 index cd71d3894e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57d.png deleted file mode 100644 index 302a46f4ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57e.png deleted file mode 100644 index 7303f39dcb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57f.png deleted file mode 100644 index 564613ad25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f57f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f580.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f580.png deleted file mode 100644 index 0658fcb2d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f580.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f581.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f581.png deleted file mode 100644 index 354ed90ae9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f581.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f582.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f582.png deleted file mode 100644 index 510ca1ce2d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f582.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f583.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f583.png deleted file mode 100644 index 530470d88c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f583.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f584.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f584.png deleted file mode 100644 index a9151381e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f584.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f585.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f585.png deleted file mode 100644 index ffeb444ae0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f585.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f586.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f586.png deleted file mode 100644 index 3c7a764592..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f586.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f587.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f587.png deleted file mode 100644 index 3a1549ec65..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f587.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f588.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f588.png deleted file mode 100644 index 07fac8270a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f588.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f589.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f589.png deleted file mode 100644 index e0decde943..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f589.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58a.png deleted file mode 100644 index ddb23da082..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58b.png deleted file mode 100644 index 92dad950c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58c.png deleted file mode 100644 index 728ed3b7dc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58d.png deleted file mode 100644 index 8cfcb07028..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58e.png deleted file mode 100644 index 82da3be4ff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58f.png deleted file mode 100644 index 8d558b437a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f58f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f590.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f590.png deleted file mode 100644 index 0e889f645f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f590.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f591.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f591.png deleted file mode 100644 index af56ad048a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f591.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f592.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f592.png deleted file mode 100644 index 4745cfe541..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f592.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f593.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f593.png deleted file mode 100644 index e807e8af76..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f593.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f594.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f594.png deleted file mode 100644 index de20f1ea01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f594.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f595.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f595.png deleted file mode 100644 index 3590310af7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f595.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f596.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f596.png deleted file mode 100644 index 34712d20e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f596.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f597.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f597.png deleted file mode 100644 index 89c44f859f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f597.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f598.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f598.png deleted file mode 100644 index 1029a67ad6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f598.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f599.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f599.png deleted file mode 100644 index eaab440bf9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f599.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59a.png deleted file mode 100644 index fc3a25b098..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59b.png deleted file mode 100644 index 472467aefa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59c.png deleted file mode 100644 index 917e64f07b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59d.png deleted file mode 100644 index e8492f8e2e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59e.png deleted file mode 100644 index 9a540ca6dc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59f.png deleted file mode 100644 index fc5a53ccd2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f59f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a0.png deleted file mode 100644 index cfcd9783e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a1.png deleted file mode 100644 index 14cfce0028..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a2.png deleted file mode 100644 index f1bdb40ddd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a3.png deleted file mode 100644 index 707edad69e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a4.png deleted file mode 100644 index 619a78be99..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a5.png deleted file mode 100644 index bcde67c9ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a6.png deleted file mode 100644 index 79dd07fb2d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a7.png deleted file mode 100644 index 4288bc3f69..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a8.png deleted file mode 100644 index 91724b14af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a9.png deleted file mode 100644 index 73710d72c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5aa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5aa.png deleted file mode 100644 index c0cedf381f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ab.png deleted file mode 100644 index c854364a52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ac.png deleted file mode 100644 index 483c8ea311..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ad.png deleted file mode 100644 index 36683f5b80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ae.png deleted file mode 100644 index 78eb948ee1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5b0.png deleted file mode 100644 index bcc8332253..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5e7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5e7.png deleted file mode 100644 index 82ae5f575a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ed.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ed.png deleted file mode 100644 index edd054e586..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ee.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ee.png deleted file mode 100644 index 4853415c60..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ef.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ef.png deleted file mode 100644 index de4a2b18e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f2.png deleted file mode 100644 index bcc7b41525..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f3.png deleted file mode 100644 index d54c58fc61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f4.png deleted file mode 100644 index 23aab83bb7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f5.png deleted file mode 100644 index 0c43a3208d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f6.png deleted file mode 100644 index 676cd2ea50..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f7.png deleted file mode 100644 index 9034abf528..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f8.png deleted file mode 100644 index 5e621e5631..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f9.png deleted file mode 100644 index 4ddac37cbf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fa.png deleted file mode 100644 index a06c346e6f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fb.png deleted file mode 100644 index 55dabe9de9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fc.png deleted file mode 100644 index b864407094..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fd.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fd.png deleted file mode 100644 index 95a0503ece..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fe.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fe.png deleted file mode 100644 index 01cd2a08c9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5fe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ff.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ff.png deleted file mode 100644 index 39cfd3e3b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f5ff.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f600.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f600.png deleted file mode 100644 index 292ff02cfc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f600.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f601.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f601.png deleted file mode 100644 index 798c2c6428..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f601.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f602.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f602.png deleted file mode 100644 index 88ecc9445f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f602.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f603.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f603.png deleted file mode 100644 index b10339b80f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f603.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f604.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f604.png deleted file mode 100644 index 09c4a6fadf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f604.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f605.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f605.png deleted file mode 100644 index 96a8c9c1a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f605.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f606.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f606.png deleted file mode 100644 index 5a6b797065..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f606.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f607.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f607.png deleted file mode 100644 index 343d4ad441..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f607.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f608.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f608.png deleted file mode 100644 index 820654c265..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f608.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f618.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f618.png deleted file mode 100644 index c854364a52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f618.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f619.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f619.png deleted file mode 100644 index 3679602f2e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f619.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61a.png deleted file mode 100644 index 0bc5a44337..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61b.png deleted file mode 100644 index 2795b78860..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61c.png deleted file mode 100644 index 0a40f61b09..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61d.png deleted file mode 100644 index 0bc5a44337..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61e.png deleted file mode 100644 index ef36717461..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61f.png deleted file mode 100644 index a78d2bf7bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f61f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f620.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f620.png deleted file mode 100644 index 7a789aa072..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f620.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f623.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f623.png deleted file mode 100644 index 984ae86eca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f623.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f624.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f624.png deleted file mode 100644 index 217f5078b0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f624.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f63c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f63c.png deleted file mode 100644 index 446afd41ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f63c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f657.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f657.png deleted file mode 100644 index f470984e76..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f657.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f658.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f658.png deleted file mode 100644 index e608519ea5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f658.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f659.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f659.png deleted file mode 100644 index 8d3c557ce4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f659.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65a.png deleted file mode 100644 index ecc1c68931..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65b.png deleted file mode 100644 index ea2576149b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65c.png deleted file mode 100644 index d0a19d3544..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f65c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f67b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f67b.png deleted file mode 100644 index c2fdbf172c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f67b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f683.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f683.png deleted file mode 100644 index eadb71e08a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f683.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f684.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f684.png deleted file mode 100644 index e531269a92..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f684.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f698.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f698.png deleted file mode 100644 index c7de267674..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f698.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f69b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f69b.png deleted file mode 100644 index e50fa147c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f69b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f69e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f69e.png deleted file mode 100644 index aff51125b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f69e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6a9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6a9.png deleted file mode 100644 index 59621faddb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6b8.png deleted file mode 100644 index 5e74395872..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6ba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6ba.png deleted file mode 100644 index 7f92b76b35..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c4.png deleted file mode 100644 index 54d3a4fcc5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c5.png deleted file mode 100644 index 8c500f13e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c6.png deleted file mode 100644 index c37ec2938b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c7.png deleted file mode 100644 index d34c81da29..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6fa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6fa.png deleted file mode 100644 index e12964ab22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f6fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f712.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f712.png deleted file mode 100644 index ac90613563..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f712.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f714.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f714.png deleted file mode 100644 index 06eb872885..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f714.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f715.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f715.png deleted file mode 100644 index 7e742eec9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f715.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f716.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f716.png deleted file mode 100644 index 6ac8a6258a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f716.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71a.png deleted file mode 100644 index f6e4948cc0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71c.png deleted file mode 100644 index fa1ea23dfe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71d.png deleted file mode 100644 index 40074c411f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71e.png deleted file mode 100644 index e7797db859..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f71e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f738.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f738.png deleted file mode 100644 index 3732eed898..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f738.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f739.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f739.png deleted file mode 100644 index e428aa85d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f739.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73d.png deleted file mode 100644 index a0d0876807..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73e.png deleted file mode 100644 index 427a7749b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73f.png deleted file mode 100644 index 5740a990e7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f73f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f740.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f740.png deleted file mode 100644 index 18423eabac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f740.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f741.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f741.png deleted file mode 100644 index c302b427f9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f741.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f742.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f742.png deleted file mode 100644 index f719e4f833..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f742.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f743.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f743.png deleted file mode 100644 index 072bdc0739..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f743.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f744.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f744.png deleted file mode 100644 index 35e00bd2a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f744.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f745.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f745.png deleted file mode 100644 index 8a7033f854..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f745.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f746.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f746.png deleted file mode 100644 index a27835e41c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f746.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f763.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f763.png deleted file mode 100644 index 0141ece082..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f763.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f781.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f781.png deleted file mode 100644 index 5901b0196e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f781.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f785.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f785.png deleted file mode 100644 index d82895b2cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f785.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78a.png deleted file mode 100644 index 141af5c854..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78b.png deleted file mode 100644 index 22e0bd4eec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78c.png deleted file mode 100644 index c02d3fb379..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78d.png deleted file mode 100644 index 27808419c2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f78d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ad.png deleted file mode 100644 index bbda639381..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ae.png deleted file mode 100644 index 04b1f09a56..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7af.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7af.png deleted file mode 100644 index edde026536..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b0.png deleted file mode 100644 index 31ba01bc7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b1.png deleted file mode 100644 index 9b6c1a0757..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b2.png deleted file mode 100644 index 0da0505556..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b3.png deleted file mode 100644 index fc39e98539..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b4.png deleted file mode 100644 index 0da0505556..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b5.png deleted file mode 100644 index ec0ec4118c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b6.png deleted file mode 100644 index 16fba1a6bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b7.png deleted file mode 100644 index 8b29482037..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b8.png deleted file mode 100644 index f8200337ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b9.png deleted file mode 100644 index deec986cb5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ba.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ba.png deleted file mode 100644 index 16fba1a6bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7bb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7bb.png deleted file mode 100644 index b4ec13a2c1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ed.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ed.png deleted file mode 100644 index 4cb936c2dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ee.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ee.png deleted file mode 100644 index a17c84803a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f7ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f809.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f809.png deleted file mode 100644 index 3501216b61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f809.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83b.png deleted file mode 100644 index 99f08edc3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83d.png deleted file mode 100644 index 6eaa4de5e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83e.png deleted file mode 100644 index ee79505a17..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83f.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83f.png deleted file mode 100644 index 55e4726cae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f83f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f847.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f847.png deleted file mode 100644 index c37f7f876a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f847.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87b.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87b.png deleted file mode 100644 index c19d80fabf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87c.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87c.png deleted file mode 100644 index 87c828a867..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87d.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87d.png deleted file mode 100644 index 0948b017da..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87e.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87e.png deleted file mode 100644 index 4db7472a25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f87e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f89a.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f89a.png deleted file mode 100644 index 9a0cfc128d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f89a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8a5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8a5.png deleted file mode 100644 index 66e46c5a6e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8a6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8a6.png deleted file mode 100644 index afe532cc64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8aa.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8aa.png deleted file mode 100644 index 5c48be3051..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ab.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ab.png deleted file mode 100644 index 752af5f8e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ac.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ac.png deleted file mode 100644 index e500f16adf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ad.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ad.png deleted file mode 100644 index cc1a7dd967..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ae.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ae.png deleted file mode 100644 index 4f420f6fac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8af.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8af.png deleted file mode 100644 index b0946af649..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b0.png deleted file mode 100644 index c8f0121452..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b1.png deleted file mode 100644 index 3669cb60f9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b2.png deleted file mode 100644 index 780c50ae29..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b3.png deleted file mode 100644 index c8cdc59bcc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c0.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c0.png deleted file mode 100644 index 14dca178d8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c1.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c1.png deleted file mode 100644 index 0ff84a3f1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c2.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c2.png deleted file mode 100644 index 393c46371b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c3.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c3.png deleted file mode 100644 index eb78e434fd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c4.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c4.png deleted file mode 100644 index 218dec95e6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c5.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c5.png deleted file mode 100644 index dd72b0ac03..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c6.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c6.png deleted file mode 100644 index 878023296a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c7.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c7.png deleted file mode 100644 index c946355cb6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c8.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c8.png deleted file mode 100644 index 17adafbf3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c9.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c9.png deleted file mode 100644 index 13034b3a70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ca.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ca.png deleted file mode 100644 index c4fe7de6a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8cb.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8cb.png deleted file mode 100644 index bd280d9419..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8cc.png b/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8cc.png deleted file mode 100644 index 054505e50c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-fluent-icons/f8cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/EDE0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/EDE0.png deleted file mode 100644 index b7747b249d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/EDE0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/EE47.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/EE47.png deleted file mode 100644 index 7dca5fecae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/EE47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/EE49.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/EE49.png deleted file mode 100644 index de66ad22fd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/EE49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F0EF.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/F0EF.png deleted file mode 100644 index 407ed5f6e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F0EF.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F19E.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/F19E.png deleted file mode 100644 index 6a05a4ef09..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F19E.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F19F.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/F19F.png deleted file mode 100644 index 59609ffe97..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F19F.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F354.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/F354.png deleted file mode 100644 index 3118424fc0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F354.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F8B3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/F8B3.png deleted file mode 100644 index ee9475b664..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/F8B3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e008.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e008.png deleted file mode 100644 index a04c68163f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e008.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e009.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e009.png deleted file mode 100644 index dc349823d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e009.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e010.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e010.png deleted file mode 100644 index b058316b1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e010.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e011.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e011.png deleted file mode 100644 index 83ae642772..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e011.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e012.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e012.png deleted file mode 100644 index 6e02108905..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e012.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e013.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e013.png deleted file mode 100644 index c29da7860d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e013.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e014.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e014.png deleted file mode 100644 index b058316b1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e014.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e015.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e015.png deleted file mode 100644 index 83ae642772..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e015.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e016.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e016.png deleted file mode 100644 index 6e02108905..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e016.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e017.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e017.png deleted file mode 100644 index c29da7860d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e017.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e018.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e018.png deleted file mode 100644 index b058316b1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e018.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e019.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e019.png deleted file mode 100644 index 83ae642772..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e019.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e052.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e052.png deleted file mode 100644 index 961e85c670..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e052.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e081.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e081.png deleted file mode 100644 index 640107b7ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e081.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e082.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e082.png deleted file mode 100644 index eb6c6a2c83..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e082.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e087.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e087.png deleted file mode 100644 index ffd485926e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e087.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e08f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e08f.png deleted file mode 100644 index 2dfe5b9bcb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e08f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e094.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e094.png deleted file mode 100644 index e9909066b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e094.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e096.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e096.png deleted file mode 100644 index 6e02108905..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e096.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e097.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e097.png deleted file mode 100644 index c29da7860d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e097.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e098.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e098.png deleted file mode 100644 index b058316b1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e098.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e099.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e099.png deleted file mode 100644 index 83ae642772..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e099.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09a.png deleted file mode 100644 index 6e02108905..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09b.png deleted file mode 100644 index c29da7860d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09c.png deleted file mode 100644 index b058316b1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09d.png deleted file mode 100644 index 83ae642772..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09e.png deleted file mode 100644 index 6e02108905..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09f.png deleted file mode 100644 index c29da7860d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e09f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e100.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e100.png deleted file mode 100644 index 8d98028ed7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e100.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e101.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e101.png deleted file mode 100644 index 2008d349af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e101.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e102.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e102.png deleted file mode 100644 index 181a545d3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e102.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e103.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e103.png deleted file mode 100644 index bade3687bc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e103.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e104.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e104.png deleted file mode 100644 index 7a83a97058..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e104.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e105.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e105.png deleted file mode 100644 index 22d27666c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e105.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e106.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e106.png deleted file mode 100644 index 72ff735603..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e106.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e107.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e107.png deleted file mode 100644 index 36cad48872..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e107.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e108.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e108.png deleted file mode 100644 index 21df65e916..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e108.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e109.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e109.png deleted file mode 100644 index 0c5a82213e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e109.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10a.png deleted file mode 100644 index b4d9f96117..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10b.png deleted file mode 100644 index 640107b7ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10c.png deleted file mode 100644 index 62be073684..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10d.png deleted file mode 100644 index ca69b5e248..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10e.png deleted file mode 100644 index b6987d0dff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10f.png deleted file mode 100644 index d748f5a364..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e10f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e110.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e110.png deleted file mode 100644 index 27d3d9eac9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e110.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e111.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e111.png deleted file mode 100644 index 1b23da3fbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e111.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e112.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e112.png deleted file mode 100644 index c8578f00c9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e112.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e113.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e113.png deleted file mode 100644 index eb6c6a2c83..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e113.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e114.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e114.png deleted file mode 100644 index ece6662fe8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e114.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e115.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e115.png deleted file mode 100644 index d551cab333..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e115.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e116.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e116.png deleted file mode 100644 index 89731ae288..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e116.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e117.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e117.png deleted file mode 100644 index 71475caf7d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e117.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e118.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e118.png deleted file mode 100644 index 95ffdcb488..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e118.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e119.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e119.png deleted file mode 100644 index ec2b6cc0cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e119.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11a.png deleted file mode 100644 index e9909066b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11b.png deleted file mode 100644 index fdb6565f32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11c.png deleted file mode 100644 index ca1f51930c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11d.png deleted file mode 100644 index 904bbf15af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11e.png deleted file mode 100644 index 948b0ac076..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11f.png deleted file mode 100644 index 19b488af7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e11f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e120.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e120.png deleted file mode 100644 index fdb9be9917..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e120.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e121.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e121.png deleted file mode 100644 index e42e1b1d58..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e121.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e122.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e122.png deleted file mode 100644 index 894c5cf49e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e122.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e123.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e123.png deleted file mode 100644 index 59c35aeaa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e123.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e124.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e124.png deleted file mode 100644 index a4970c1610..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e124.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e125.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e125.png deleted file mode 100644 index aaa9eb1738..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e125.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e126.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e126.png deleted file mode 100644 index 1d5093c155..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e126.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e127.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e127.png deleted file mode 100644 index 284fe45538..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e127.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e128.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e128.png deleted file mode 100644 index 69e6955dfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e128.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e129.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e129.png deleted file mode 100644 index 95aa5db4a6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e129.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12a.png deleted file mode 100644 index 158271a34c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12b.png deleted file mode 100644 index ae675dfa0f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12c.png deleted file mode 100644 index ee50c5ee95..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12d.png deleted file mode 100644 index 5646ee3cb8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12e.png deleted file mode 100644 index 436e837fa0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12f.png deleted file mode 100644 index d1a446d5a2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e12f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e130.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e130.png deleted file mode 100644 index bac89ef926..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e130.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e131.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e131.png deleted file mode 100644 index a17b40c81f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e131.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e132.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e132.png deleted file mode 100644 index 1edd2269bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e132.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e133.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e133.png deleted file mode 100644 index b788b24e01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e133.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e134.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e134.png deleted file mode 100644 index daa4e1edfe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e134.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e135.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e135.png deleted file mode 100644 index 3771c1747c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e135.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e136.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e136.png deleted file mode 100644 index 7922ca3bf1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e136.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e137.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e137.png deleted file mode 100644 index c3abc018bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e137.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e138.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e138.png deleted file mode 100644 index d66876ecb2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e138.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e139.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e139.png deleted file mode 100644 index 6a52ebe183..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e139.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13a.png deleted file mode 100644 index e1d0596e7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13b.png deleted file mode 100644 index ddcd170339..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13c.png deleted file mode 100644 index d0752259be..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13d.png deleted file mode 100644 index 71757fcf59..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13e.png deleted file mode 100644 index 8eb7e96653..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13f.png deleted file mode 100644 index 817164f83f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e13f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e140.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e140.png deleted file mode 100644 index 1bef011d88..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e140.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e141.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e141.png deleted file mode 100644 index 8fac30961b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e141.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e142.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e142.png deleted file mode 100644 index bbbedd99e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e142.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e143.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e143.png deleted file mode 100644 index d1f1be4fa0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e143.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e144.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e144.png deleted file mode 100644 index 2fc86fa67f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e144.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e145.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e145.png deleted file mode 100644 index d30ecd25cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e145.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e146.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e146.png deleted file mode 100644 index f6cd7a57a8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e146.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e147.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e147.png deleted file mode 100644 index b507a42f0a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e147.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e148.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e148.png deleted file mode 100644 index 32ed85bf33..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e148.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e149.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e149.png deleted file mode 100644 index 0325e122eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e149.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14a.png deleted file mode 100644 index 5d936a54c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14b.png deleted file mode 100644 index 34aa39a58e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14c.png deleted file mode 100644 index b03c761b08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14d.png deleted file mode 100644 index 6007a96abf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14e.png deleted file mode 100644 index f3feda2fe0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14f.png deleted file mode 100644 index 1610e3c545..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e14f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e150.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e150.png deleted file mode 100644 index 4457d937bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e150.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e151.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e151.png deleted file mode 100644 index 41acf95283..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e151.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e152.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e152.png deleted file mode 100644 index 7a4bba6a53..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e152.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e153.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e153.png deleted file mode 100644 index b5558a387b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e153.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e154.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e154.png deleted file mode 100644 index d66876ecb2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e154.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e155.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e155.png deleted file mode 100644 index 905bdbaffa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e155.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e156.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e156.png deleted file mode 100644 index 7e3c15f533..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e156.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e158.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e158.png deleted file mode 100644 index 1301344af2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e158.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e159.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e159.png deleted file mode 100644 index 19ddc53cb8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e159.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15a.png deleted file mode 100644 index 15be8c6887..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15b.png deleted file mode 100644 index 69e0a97327..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15c.png deleted file mode 100644 index e292a8c2dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15d.png deleted file mode 100644 index 163fdaac9b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15e.png deleted file mode 100644 index 1fc1b48742..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15f.png deleted file mode 100644 index bd27fff83d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e15f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e160.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e160.png deleted file mode 100644 index 33a6ca300c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e160.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e161.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e161.png deleted file mode 100644 index 036e0f51cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e161.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e162.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e162.png deleted file mode 100644 index 502d2db0c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e162.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e163.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e163.png deleted file mode 100644 index 2672ebd025..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e163.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e164.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e164.png deleted file mode 100644 index adc03c176d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e164.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e165.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e165.png deleted file mode 100644 index 78c258be01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e165.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e166.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e166.png deleted file mode 100644 index 749d3c4a4f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e166.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e167.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e167.png deleted file mode 100644 index 63ab9bf4a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e167.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e168.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e168.png deleted file mode 100644 index 3153177458..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e168.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e169.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e169.png deleted file mode 100644 index d733886eba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e169.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16a.png deleted file mode 100644 index 488a06bf2b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16b.png deleted file mode 100644 index 79714e82b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16c.png deleted file mode 100644 index b84ad0ef84..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16d.png deleted file mode 100644 index 72da180ea1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16e.png deleted file mode 100644 index dda42cb97b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16f.png deleted file mode 100644 index 6ed67ac5bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e16f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e170.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e170.png deleted file mode 100644 index a15e2aaa65..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e170.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e171.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e171.png deleted file mode 100644 index 738adb6bfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e171.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e172.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e172.png deleted file mode 100644 index fa8f6033e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e172.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e173.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e173.png deleted file mode 100644 index dd966275ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e173.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e174.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e174.png deleted file mode 100644 index 9506d14678..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e174.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e175.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e175.png deleted file mode 100644 index f5e4d2f875..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e175.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e176.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e176.png deleted file mode 100644 index c21ed2b38c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e176.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e177.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e177.png deleted file mode 100644 index 680722e604..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e177.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e178.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e178.png deleted file mode 100644 index 35abddacc1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e178.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e179.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e179.png deleted file mode 100644 index 680d95ed8d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e179.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17a.png deleted file mode 100644 index ce91d69889..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17b.png deleted file mode 100644 index e20f8c19c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17c.png deleted file mode 100644 index fe92b2dd55..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17d.png deleted file mode 100644 index 060ffd74ac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e17d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e181.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e181.png deleted file mode 100644 index 8ae6418c2e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e181.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e182.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e182.png deleted file mode 100644 index 313ce31d6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e182.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e183.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e183.png deleted file mode 100644 index ca1f51930c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e183.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e184.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e184.png deleted file mode 100644 index a1750eebf6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e184.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e185.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e185.png deleted file mode 100644 index 03124c634d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e185.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e186.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e186.png deleted file mode 100644 index 8b35cdcb0f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e186.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e187.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e187.png deleted file mode 100644 index 10bd238876..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e187.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e188.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e188.png deleted file mode 100644 index 21b96081b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e188.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e189.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e189.png deleted file mode 100644 index dd5e447912..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e189.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18a.png deleted file mode 100644 index bd24a8c160..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18b.png deleted file mode 100644 index 961e85c670..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18c.png deleted file mode 100644 index bd1ff36d32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18d.png deleted file mode 100644 index 1b074f1185..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18e.png deleted file mode 100644 index 838bf79afe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18f.png deleted file mode 100644 index 91e0fc6a8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e18f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e190.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e190.png deleted file mode 100644 index a24489cea1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e190.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e191.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e191.png deleted file mode 100644 index 840c40e9e6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e191.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e192.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e192.png deleted file mode 100644 index 140ddacb9f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e192.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e193.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e193.png deleted file mode 100644 index 43a2d0be43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e193.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e194.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e194.png deleted file mode 100644 index 7959c00c00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e194.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e195.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e195.png deleted file mode 100644 index eede043375..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e195.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e196.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e196.png deleted file mode 100644 index 3ab3073d76..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e196.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e197.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e197.png deleted file mode 100644 index 8d5bf46574..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e197.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e198.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e198.png deleted file mode 100644 index df9e65f371..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e198.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e199.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e199.png deleted file mode 100644 index 3a7c64d5c3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e199.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19a.png deleted file mode 100644 index eee3b82f13..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19b.png deleted file mode 100644 index b2a316b041..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19c.png deleted file mode 100644 index 90ed462a5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19d.png deleted file mode 100644 index 6877530779..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19e.png deleted file mode 100644 index 822fc3c5e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19f.png deleted file mode 100644 index b5af41daee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e19f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e206.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e206.png deleted file mode 100644 index bd27fff83d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e206.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e208.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e208.png deleted file mode 100644 index 8db10029a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e208.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e209.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e209.png deleted file mode 100644 index b5af41daee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e209.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e20a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e20a.png deleted file mode 100644 index 89731ae288..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e20a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e20b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e20b.png deleted file mode 100644 index 3771c1747c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e20b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e211.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e211.png deleted file mode 100644 index aaac33b673..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e211.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e212.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e212.png deleted file mode 100644 index e019f9f00c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e212.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e224.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e224.png deleted file mode 100644 index 8db10029a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e224.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e228.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e228.png deleted file mode 100644 index 8b2a0c5d36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e228.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e248.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e248.png deleted file mode 100644 index 39fcd71be4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e248.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e249.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e249.png deleted file mode 100644 index eb6c6a2c83..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e249.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e24a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e24a.png deleted file mode 100644 index 8db10029a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e24a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25a.png deleted file mode 100644 index 3869322bf0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25b.png deleted file mode 100644 index d945f411cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25c.png deleted file mode 100644 index 1c6d032142..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25d.png deleted file mode 100644 index 424b6f019b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25e.png deleted file mode 100644 index dc349823d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e25e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e26b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e26b.png deleted file mode 100644 index d860eb955a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e26b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e26c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e26c.png deleted file mode 100644 index 24463365fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e26c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e28f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e28f.png deleted file mode 100644 index 428354d23f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e28f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e290.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e290.png deleted file mode 100644 index 6b8640b45d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e290.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e291.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e291.png deleted file mode 100644 index c6adaaa8bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e291.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e292.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e292.png deleted file mode 100644 index b03c761b08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e292.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e294.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e294.png deleted file mode 100644 index 9f17b3816f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e294.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e295.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e295.png deleted file mode 100644 index ba4f852a22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e295.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e297.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e297.png deleted file mode 100644 index 69f6e09475..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e297.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e298.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e298.png deleted file mode 100644 index e737cfb323..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e298.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e299.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e299.png deleted file mode 100644 index f5e4d2f875..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e299.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e29b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e29b.png deleted file mode 100644 index 2769a2fccd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e29b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e312.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e312.png deleted file mode 100644 index 7ffd238b7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e312.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e361.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e361.png deleted file mode 100644 index e277cead6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e361.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e363.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e363.png deleted file mode 100644 index 4c98111a87..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e363.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e37a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e37a.png deleted file mode 100644 index c932c44198..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e37a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e407.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e407.png deleted file mode 100644 index 640daa178e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e407.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e408.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e408.png deleted file mode 100644 index bd9f87b31e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e408.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e409.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e409.png deleted file mode 100644 index c5bbdd44d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e409.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40a.png deleted file mode 100644 index 842cdcb972..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40b.png deleted file mode 100644 index 1f889b196c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40c.png deleted file mode 100644 index 1f22386899..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40d.png deleted file mode 100644 index 1e45b4b398..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40e.png deleted file mode 100644 index 9c51de15f9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40f.png deleted file mode 100644 index 1a2fcde3aa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e40f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e410.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e410.png deleted file mode 100644 index f6a24ce788..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e410.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e411.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e411.png deleted file mode 100644 index 3f3577cc8b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e411.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e412.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e412.png deleted file mode 100644 index c17715295e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e412.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e413.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e413.png deleted file mode 100644 index da65e91f5e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e413.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e414.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e414.png deleted file mode 100644 index c11ec36240..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e414.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e415.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e415.png deleted file mode 100644 index 325d964a31..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e415.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e416.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e416.png deleted file mode 100644 index e40100aaea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e416.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e417.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e417.png deleted file mode 100644 index b2afa7d0bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e417.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e418.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e418.png deleted file mode 100644 index 7289d3a3b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e418.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e419.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e419.png deleted file mode 100644 index 56bd4eaf99..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e419.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41a.png deleted file mode 100644 index d1ec4e5af2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41b.png deleted file mode 100644 index e3508b1340..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41c.png deleted file mode 100644 index d23cd2cd0b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41d.png deleted file mode 100644 index 852230df8d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e41d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44a.png deleted file mode 100644 index 6d4af7dc0b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44b.png deleted file mode 100644 index b3cf626a8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44c.png deleted file mode 100644 index 15691cdc99..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44d.png deleted file mode 100644 index 115952bf24..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44e.png deleted file mode 100644 index c949e2352a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44f.png deleted file mode 100644 index 113698c702..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e44f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e450.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e450.png deleted file mode 100644 index b51e065c97..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e450.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e451.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e451.png deleted file mode 100644 index 854f493655..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e451.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e452.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e452.png deleted file mode 100644 index 4ce7cb4467..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e452.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e453.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e453.png deleted file mode 100644 index 82578a5911..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e453.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e454.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e454.png deleted file mode 100644 index b3b8745251..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e454.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e61f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e61f.png deleted file mode 100644 index 4abb519e03..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e61f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e620.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e620.png deleted file mode 100644 index 840c40e9e6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e620.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e621.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e621.png deleted file mode 100644 index 90bc9e7cad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e621.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e622.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e622.png deleted file mode 100644 index 8cd49c21ce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e622.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e623.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e623.png deleted file mode 100644 index 62aaee54b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e623.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e624.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e624.png deleted file mode 100644 index 718151d270..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e624.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e625.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e625.png deleted file mode 100644 index 9f919d035b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e625.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e626.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e626.png deleted file mode 100644 index 8132dee1ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e626.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e627.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e627.png deleted file mode 100644 index 1c1e0a8176..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e627.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e628.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e628.png deleted file mode 100644 index a701c00ae3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e628.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e629.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e629.png deleted file mode 100644 index 419cf56382..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e629.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e62b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e62b.png deleted file mode 100644 index 5a733876a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e62b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e62f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e62f.png deleted file mode 100644 index 8e188b197b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e62f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e630.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e630.png deleted file mode 100644 index 4e07a13a02..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e630.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e631.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e631.png deleted file mode 100644 index 3d0128f93a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e631.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64b.png deleted file mode 100644 index 8b896fee78..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64c.png deleted file mode 100644 index b0fdfa4406..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64d.png deleted file mode 100644 index e06d75e131..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64e.png deleted file mode 100644 index 08d90d3e06..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64f.png deleted file mode 100644 index fe7acfce15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e64f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e650.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e650.png deleted file mode 100644 index 28c1dc2d45..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e650.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e651.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e651.png deleted file mode 100644 index 7e11632bce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e651.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e652.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e652.png deleted file mode 100644 index bf68b55ee2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e652.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e653.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e653.png deleted file mode 100644 index a78a655d07..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e653.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e654.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e654.png deleted file mode 100644 index 2a15313733..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e654.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e655.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e655.png deleted file mode 100644 index 50e8dcb64a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e655.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e656.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e656.png deleted file mode 100644 index 63d62d069e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e656.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e65a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e65a.png deleted file mode 100644 index 6a816e2bf8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e65a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e65f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e65f.png deleted file mode 100644 index 1021cbd08f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e65f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e700.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e700.png deleted file mode 100644 index c11fbdfa52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e700.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e701.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e701.png deleted file mode 100644 index c523cd154b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e701.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e702.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e702.png deleted file mode 100644 index f42470254f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e702.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e703.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e703.png deleted file mode 100644 index 84db33ee75..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e703.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e704.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e704.png deleted file mode 100644 index b9e145ed2d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e704.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e705.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e705.png deleted file mode 100644 index 242170a66f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e705.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e706.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e706.png deleted file mode 100644 index 619ce9c78d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e706.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e707.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e707.png deleted file mode 100644 index 1e1991fa67..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e707.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e708.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e708.png deleted file mode 100644 index 5b7e52fc62..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e708.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e709.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e709.png deleted file mode 100644 index 5ccfc890c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e709.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70a.png deleted file mode 100644 index 9b391c877f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70b.png deleted file mode 100644 index 1cb4031f02..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70c.png deleted file mode 100644 index 15c972565e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70d.png deleted file mode 100644 index 83ae642772..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70e.png deleted file mode 100644 index b058316b1a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70f.png deleted file mode 100644 index 7a83a97058..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e70f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e710.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e710.png deleted file mode 100644 index 0c5a82213e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e710.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e711.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e711.png deleted file mode 100644 index b4d9f96117..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e711.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e712.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e712.png deleted file mode 100644 index 62be073684..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e712.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e713.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e713.png deleted file mode 100644 index d551cab333..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e713.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e714.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e714.png deleted file mode 100644 index 89731ae288..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e714.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e715.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e715.png deleted file mode 100644 index ec2b6cc0cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e715.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e716.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e716.png deleted file mode 100644 index aaa9eb1738..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e716.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e717.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e717.png deleted file mode 100644 index e1d0596e7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e717.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e718.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e718.png deleted file mode 100644 index 8fac30961b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e718.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e719.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e719.png deleted file mode 100644 index 6007a96abf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e719.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71a.png deleted file mode 100644 index 69e0a97327..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71b.png deleted file mode 100644 index 63ab9bf4a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71c.png deleted file mode 100644 index dda42cb97b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71d.png deleted file mode 100644 index 680d95ed8d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71e.png deleted file mode 100644 index af6918a543..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71f.png deleted file mode 100644 index 640a7e8239..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e71f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e720.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e720.png deleted file mode 100644 index e7d08166bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e720.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e721.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e721.png deleted file mode 100644 index e9909066b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e721.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e722.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e722.png deleted file mode 100644 index ece6662fe8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e722.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e723.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e723.png deleted file mode 100644 index b84ad0ef84..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e723.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e724.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e724.png deleted file mode 100644 index 027033658f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e724.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e725.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e725.png deleted file mode 100644 index 2de82ae980..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e725.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e726.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e726.png deleted file mode 100644 index 1cb42db0f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e726.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e727.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e727.png deleted file mode 100644 index eacc8dedca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e727.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e728.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e728.png deleted file mode 100644 index 9819ff5a27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e728.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e729.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e729.png deleted file mode 100644 index 1edd2269bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e729.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72a.png deleted file mode 100644 index 1b23da3fbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72b.png deleted file mode 100644 index c8578f00c9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72c.png deleted file mode 100644 index 0325e122eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72d.png deleted file mode 100644 index 45ae9ce297..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72e.png deleted file mode 100644 index 489f30e194..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e72e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e730.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e730.png deleted file mode 100644 index 03cf735040..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e730.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e731.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e731.png deleted file mode 100644 index 3d21af5e8e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e731.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e734.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e734.png deleted file mode 100644 index 8db10029a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e734.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e735.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e735.png deleted file mode 100644 index eb6c6a2c83..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e735.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e736.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e736.png deleted file mode 100644 index 00a96083c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e736.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e737.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e737.png deleted file mode 100644 index 99275a0e42..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e737.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e738.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e738.png deleted file mode 100644 index 21df65e916..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e738.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e739.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e739.png deleted file mode 100644 index 748084ca0b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e739.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73a.png deleted file mode 100644 index 88d318bfbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73b.png deleted file mode 100644 index dc349823d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73c.png deleted file mode 100644 index 419cf56382..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73d.png deleted file mode 100644 index b89803b8d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73e.png deleted file mode 100644 index a04c68163f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73f.png deleted file mode 100644 index 7603077fdd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e73f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e740.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e740.png deleted file mode 100644 index 81cb5d1c5e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e740.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e741.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e741.png deleted file mode 100644 index a3668b5012..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e741.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e742.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e742.png deleted file mode 100644 index f7a1ae5925..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e742.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e743.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e743.png deleted file mode 100644 index c1998b645f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e743.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e744.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e744.png deleted file mode 100644 index c3b84f6a73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e744.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e745.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e745.png deleted file mode 100644 index 2be6782798..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e745.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e746.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e746.png deleted file mode 100644 index 7fd6218a27..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e746.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e747.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e747.png deleted file mode 100644 index dc349823d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e747.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e748.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e748.png deleted file mode 100644 index 9fab0959b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e748.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e749.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e749.png deleted file mode 100644 index 5552b7ad2f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e749.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74a.png deleted file mode 100644 index 27d3d9eac9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74b.png deleted file mode 100644 index 39e5d25c3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74c.png deleted file mode 100644 index 92f695280b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74d.png deleted file mode 100644 index 36cad48872..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74e.png deleted file mode 100644 index 22d27666c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74f.png deleted file mode 100644 index df9e65f371..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e74f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e750.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e750.png deleted file mode 100644 index 455c9175bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e750.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e751.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e751.png deleted file mode 100644 index 43bb022a9c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e751.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e752.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e752.png deleted file mode 100644 index 98c4f2aa8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e752.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e753.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e753.png deleted file mode 100644 index f1aaca0168..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e753.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e754.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e754.png deleted file mode 100644 index a238aaac6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e754.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e755.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e755.png deleted file mode 100644 index 7fe46e0a87..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e755.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e756.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e756.png deleted file mode 100644 index 85b6e0da08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e756.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e759.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e759.png deleted file mode 100644 index 8a3c730b4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e759.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75a.png deleted file mode 100644 index 83eee2ed43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75b.png deleted file mode 100644 index 1db1b4c765..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75c.png deleted file mode 100644 index 9fd16a8f75..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75d.png deleted file mode 100644 index 6f4ceb093c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75e.png deleted file mode 100644 index 5b239327d2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75f.png deleted file mode 100644 index 5403e52683..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e75f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e760.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e760.png deleted file mode 100644 index fe9404e8f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e760.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e761.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e761.png deleted file mode 100644 index 6a43050457..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e761.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e762.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e762.png deleted file mode 100644 index b788b24e01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e762.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e763.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e763.png deleted file mode 100644 index 34669a166e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e763.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e764.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e764.png deleted file mode 100644 index 42e1bf8db9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e764.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e765.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e765.png deleted file mode 100644 index 2fc86fa67f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e765.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e766.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e766.png deleted file mode 100644 index 2dfe5b9bcb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e766.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e767.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e767.png deleted file mode 100644 index 163fdaac9b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e767.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e768.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e768.png deleted file mode 100644 index 181a545d3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e768.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e769.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e769.png deleted file mode 100644 index bade3687bc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e769.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76b.png deleted file mode 100644 index 6e02108905..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76c.png deleted file mode 100644 index c29da7860d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76d.png deleted file mode 100644 index 52fb211fa8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76e.png deleted file mode 100644 index a15e2aaa65..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76f.png deleted file mode 100644 index 8194ad26f8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e76f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e770.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e770.png deleted file mode 100644 index f98f2f9b68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e770.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e771.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e771.png deleted file mode 100644 index 3a21997aa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e771.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e772.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e772.png deleted file mode 100644 index b743866990..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e772.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e773.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e773.png deleted file mode 100644 index 9af34d3c0d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e773.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e774.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e774.png deleted file mode 100644 index ae675dfa0f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e774.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e775.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e775.png deleted file mode 100644 index 0b2c10408b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e775.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e776.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e776.png deleted file mode 100644 index 6f8708f2b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e776.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e777.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e777.png deleted file mode 100644 index 3cad422125..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e777.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e778.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e778.png deleted file mode 100644 index c3abc018bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e778.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e779.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e779.png deleted file mode 100644 index 7922ca3bf1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e779.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77a.png deleted file mode 100644 index 3ab3073d76..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77b.png deleted file mode 100644 index 71757fcf59..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77c.png deleted file mode 100644 index a35049fc0d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77e.png deleted file mode 100644 index 79d2bd908a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77f.png deleted file mode 100644 index 72da180ea1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e77f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e780.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e780.png deleted file mode 100644 index 7ffed4caa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e780.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e781.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e781.png deleted file mode 100644 index a8d41b4dd8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e781.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e783.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e783.png deleted file mode 100644 index 49c62a684b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e783.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e784.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e784.png deleted file mode 100644 index d67e6257c1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e784.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e785.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e785.png deleted file mode 100644 index 6a0185b40d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e785.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e786.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e786.png deleted file mode 100644 index dd966275ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e786.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e787.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e787.png deleted file mode 100644 index 2672ebd025..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e787.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e788.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e788.png deleted file mode 100644 index e14c659a4a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e788.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e789.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e789.png deleted file mode 100644 index 38d63a5d4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e789.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78a.png deleted file mode 100644 index ee50c5ee95..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78b.png deleted file mode 100644 index fe92b2dd55..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78c.png deleted file mode 100644 index 19ddc53cb8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e78c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e790.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e790.png deleted file mode 100644 index b7e45b9328..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e790.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e791.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e791.png deleted file mode 100644 index 5fbb0462cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e791.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e792.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e792.png deleted file mode 100644 index 428354d23f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e792.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e793.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e793.png deleted file mode 100644 index caceccf8c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e793.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e799.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e799.png deleted file mode 100644 index f23a9a3bba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e799.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a5.png deleted file mode 100644 index 0751975374..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a6.png deleted file mode 100644 index ca69b5e248..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a7.png deleted file mode 100644 index b6987d0dff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a8.png deleted file mode 100644 index 59c35aeaa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ac.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ac.png deleted file mode 100644 index 060ffd74ac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ad.png deleted file mode 100644 index 51a106d19c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b3.png deleted file mode 100644 index be9cc949ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b5.png deleted file mode 100644 index bd1ff36d32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b7.png deleted file mode 100644 index 6a52ebe183..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b8.png deleted file mode 100644 index 9cb2a09b88..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ba.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ba.png deleted file mode 100644 index d4aaa3539c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7bc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7bc.png deleted file mode 100644 index 86db0d8d7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7be.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7be.png deleted file mode 100644 index 5cd4797ee2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7be.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7bf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7bf.png deleted file mode 100644 index ac57045104..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c0.png deleted file mode 100644 index 3251d5b3a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c1.png deleted file mode 100644 index 95aa5db4a6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c2.png deleted file mode 100644 index 4fc277e2a0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c3.png deleted file mode 100644 index 33a6ca300c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c4.png deleted file mode 100644 index de3a54839e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c5.png deleted file mode 100644 index 905bdbaffa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c6.png deleted file mode 100644 index 14294e0aac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c7.png deleted file mode 100644 index 8f6bac57a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c8.png deleted file mode 100644 index 6c99c38a6e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c9.png deleted file mode 100644 index d4bd120037..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7de.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7de.png deleted file mode 100644 index 39a1ae5ceb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7de.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e3.png deleted file mode 100644 index e9c279166e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e6.png deleted file mode 100644 index 43a2d0be43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e7.png deleted file mode 100644 index 4125708db5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e8.png deleted file mode 100644 index e160f2be3c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ea.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ea.png deleted file mode 100644 index 690b2ed49d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7eb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7eb.png deleted file mode 100644 index 2caa45480c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ec.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ec.png deleted file mode 100644 index 03cf4124e7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ed.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ed.png deleted file mode 100644 index 9dfef74786..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ee.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ee.png deleted file mode 100644 index 2cac6d111c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ef.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ef.png deleted file mode 100644 index e2412646c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f0.png deleted file mode 100644 index a24489cea1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f1.png deleted file mode 100644 index 1817d2e0e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f2.png deleted file mode 100644 index 4db999ce38..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f3.png deleted file mode 100644 index 114a89b1d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f4.png deleted file mode 100644 index 57120f0ca1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f5.png deleted file mode 100644 index fca9ebbf7e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f6.png deleted file mode 100644 index b98bb55b45..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f7.png deleted file mode 100644 index fe440c3d2b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f8.png deleted file mode 100644 index 8815aa4e80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f9.png deleted file mode 100644 index 303246e608..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fa.png deleted file mode 100644 index fb68768d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fb.png deleted file mode 100644 index a96248c375..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fc.png deleted file mode 100644 index 6c2a3863ce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fd.png deleted file mode 100644 index a9e9135525..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e7fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e802.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e802.png deleted file mode 100644 index 063da0a174..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e802.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e803.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e803.png deleted file mode 100644 index 21b30e2a23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e803.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e804.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e804.png deleted file mode 100644 index 03cf4124e7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e804.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e805.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e805.png deleted file mode 100644 index 846ffc26b0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e805.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e806.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e806.png deleted file mode 100644 index 3ca869d181..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e806.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e809.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e809.png deleted file mode 100644 index fa68559cdc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e809.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80a.png deleted file mode 100644 index 1e981ed418..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80b.png deleted file mode 100644 index e907613b09..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80c.png deleted file mode 100644 index f03ad4889b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80d.png deleted file mode 100644 index deaf2dbbf3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80f.png deleted file mode 100644 index d748f5a364..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e80f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e811.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e811.png deleted file mode 100644 index a97c4987bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e811.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e812.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e812.png deleted file mode 100644 index 947da2c8e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e812.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e813.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e813.png deleted file mode 100644 index e138596c2e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e813.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e814.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e814.png deleted file mode 100644 index 4db74d026d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e814.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e815.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e815.png deleted file mode 100644 index 99130f11d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e815.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e816.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e816.png deleted file mode 100644 index 578c5bd84b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e816.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e819.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e819.png deleted file mode 100644 index 57e294f033..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e819.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81a.png deleted file mode 100644 index fac265218b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81b.png deleted file mode 100644 index 95aa5db4a6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81c.png deleted file mode 100644 index 5c45c0c18d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81d.png deleted file mode 100644 index c4f1daf2c1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81e.png deleted file mode 100644 index b387ca0354..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81f.png deleted file mode 100644 index d5d857a76c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e81f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e821.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e821.png deleted file mode 100644 index 7385434160..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e821.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e822.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e822.png deleted file mode 100644 index 5d1629f510..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e822.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e823.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e823.png deleted file mode 100644 index 65a178d490..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e823.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e825.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e825.png deleted file mode 100644 index f6969d6021..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e825.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e826.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e826.png deleted file mode 100644 index 851a6d4fdf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e826.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e829.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e829.png deleted file mode 100644 index 29beba168e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e829.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82a.png deleted file mode 100644 index c92c77b7bc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82b.png deleted file mode 100644 index da206365ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82c.png deleted file mode 100644 index c6ce5fe845..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82d.png deleted file mode 100644 index ce309b7f26..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82e.png deleted file mode 100644 index 49e47f1ffb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82f.png deleted file mode 100644 index 1920bc1c98..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e82f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e830.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e830.png deleted file mode 100644 index 421b1e7f3a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e830.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e835.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e835.png deleted file mode 100644 index cb80edef8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e835.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e836.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e836.png deleted file mode 100644 index 7367791a8f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e836.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e838.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e838.png deleted file mode 100644 index 0416c54e1d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e838.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e839.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e839.png deleted file mode 100644 index 56a0cac1a2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e839.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83a.png deleted file mode 100644 index 1d4818c233..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83b.png deleted file mode 100644 index 6921a27811..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83c.png deleted file mode 100644 index cd7def217b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83d.png deleted file mode 100644 index c9aced6d7a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83e.png deleted file mode 100644 index 169543cd26..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83f.png deleted file mode 100644 index 72f068d90f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e83f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e840.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e840.png deleted file mode 100644 index b53ad89847..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e840.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e841.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e841.png deleted file mode 100644 index a11f11f397..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e841.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e842.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e842.png deleted file mode 100644 index fa3c75c2a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e842.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e843.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e843.png deleted file mode 100644 index 2b00f85c08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e843.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e844.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e844.png deleted file mode 100644 index 332a4d06b0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e844.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e845.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e845.png deleted file mode 100644 index f39a7a7e78..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e845.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e846.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e846.png deleted file mode 100644 index 56905a83e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e846.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e847.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e847.png deleted file mode 100644 index efe4db789e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e847.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e848.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e848.png deleted file mode 100644 index 6aabbdbd46..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e848.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e849.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e849.png deleted file mode 100644 index 5b160f80d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e849.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84a.png deleted file mode 100644 index 742c747848..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84b.png deleted file mode 100644 index 74b687176a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84c.png deleted file mode 100644 index b10048326a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84d.png deleted file mode 100644 index acc4aee1d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84e.png deleted file mode 100644 index 7a2273244a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84f.png deleted file mode 100644 index c1548b749c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e84f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e850.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e850.png deleted file mode 100644 index c2ef604d60..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e850.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e851.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e851.png deleted file mode 100644 index e30bf4c166..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e851.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e852.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e852.png deleted file mode 100644 index 3df577db38..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e852.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e853.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e853.png deleted file mode 100644 index fdcfb6c632..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e853.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e854.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e854.png deleted file mode 100644 index 3a7c0b8abd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e854.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e855.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e855.png deleted file mode 100644 index 3ac83011b2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e855.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e856.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e856.png deleted file mode 100644 index dbbdd5500f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e856.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e857.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e857.png deleted file mode 100644 index f9e3baf629..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e857.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e858.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e858.png deleted file mode 100644 index 8268212dc0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e858.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e859.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e859.png deleted file mode 100644 index 3134a70719..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e859.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85a.png deleted file mode 100644 index 3e71d87355..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85b.png deleted file mode 100644 index 02a0fc8aca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85c.png deleted file mode 100644 index eaad0ed1a6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85d.png deleted file mode 100644 index 9cc9807c1c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85e.png deleted file mode 100644 index 260af622e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85f.png deleted file mode 100644 index 368cef2c7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e85f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e860.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e860.png deleted file mode 100644 index 0964f00f77..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e860.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e861.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e861.png deleted file mode 100644 index b141b2796d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e861.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e862.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e862.png deleted file mode 100644 index 55115e2186..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e862.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e863.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e863.png deleted file mode 100644 index 38f10c2715..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e863.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e864.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e864.png deleted file mode 100644 index ae24ec6602..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e864.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e865.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e865.png deleted file mode 100644 index 20aae8e4d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e865.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e866.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e866.png deleted file mode 100644 index 0547ac887c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e866.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e867.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e867.png deleted file mode 100644 index f62bf9c3ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e867.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e868.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e868.png deleted file mode 100644 index a282452645..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e868.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e869.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e869.png deleted file mode 100644 index dab3e3f6b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e869.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86a.png deleted file mode 100644 index 0b4513b13f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86b.png deleted file mode 100644 index 74a47e63ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86c.png deleted file mode 100644 index 567fb725cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86d.png deleted file mode 100644 index 1640440065..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86e.png deleted file mode 100644 index 8adf660bf8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86f.png deleted file mode 100644 index fb933df464..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e86f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e870.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e870.png deleted file mode 100644 index c220b1df99..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e870.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e871.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e871.png deleted file mode 100644 index 2ad9b1fa37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e871.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e872.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e872.png deleted file mode 100644 index 1eb5b870da..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e872.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e873.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e873.png deleted file mode 100644 index 5774d728c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e873.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e874.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e874.png deleted file mode 100644 index 7f18ec7653..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e874.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e875.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e875.png deleted file mode 100644 index 13880f979d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e875.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e876.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e876.png deleted file mode 100644 index 9ce2cb6b9f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e876.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e877.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e877.png deleted file mode 100644 index 9904793aee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e877.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e878.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e878.png deleted file mode 100644 index 7d651edf98..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e878.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e879.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e879.png deleted file mode 100644 index d78b0475e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e879.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87a.png deleted file mode 100644 index c168226792..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87b.png deleted file mode 100644 index 47a43b57cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87c.png deleted file mode 100644 index a85db685e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87d.png deleted file mode 100644 index 85c237dab1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87e.png deleted file mode 100644 index c8319cdfa6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87f.png deleted file mode 100644 index f171c77838..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e87f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e880.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e880.png deleted file mode 100644 index 163a3ea97c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e880.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e881.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e881.png deleted file mode 100644 index 9dd6d73278..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e881.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e882.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e882.png deleted file mode 100644 index b5618d56e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e882.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e883.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e883.png deleted file mode 100644 index 16929d7411..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e883.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e884.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e884.png deleted file mode 100644 index 4b8743e398..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e884.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e885.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e885.png deleted file mode 100644 index 173cace41d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e885.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e886.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e886.png deleted file mode 100644 index 193da9a448..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e886.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e887.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e887.png deleted file mode 100644 index f224e15021..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e887.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e888.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e888.png deleted file mode 100644 index bacd0dc852..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e888.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e889.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e889.png deleted file mode 100644 index 4da51a86fe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e889.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88a.png deleted file mode 100644 index b9e145ed2d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88b.png deleted file mode 100644 index 66b9601ee8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88c.png deleted file mode 100644 index 78e2abd394..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88d.png deleted file mode 100644 index 811d766821..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88e.png deleted file mode 100644 index bea24b5b8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88f.png deleted file mode 100644 index 2f9ceb91d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e88f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e890.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e890.png deleted file mode 100644 index 961e85c670..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e890.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e891.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e891.png deleted file mode 100644 index e714298947..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e891.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e892.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e892.png deleted file mode 100644 index 8d98028ed7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e892.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e893.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e893.png deleted file mode 100644 index 2008d349af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e893.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e894.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e894.png deleted file mode 100644 index 72ff735603..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e894.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e895.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e895.png deleted file mode 100644 index 71475caf7d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e895.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e896.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e896.png deleted file mode 100644 index 95ffdcb488..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e896.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e897.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e897.png deleted file mode 100644 index fdb6565f32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e897.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e898.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e898.png deleted file mode 100644 index ca1f51930c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e898.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e899.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e899.png deleted file mode 100644 index 904bbf15af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e899.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89a.png deleted file mode 100644 index 948b0ac076..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89b.png deleted file mode 100644 index 19b488af7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89c.png deleted file mode 100644 index fdb9be9917..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89e.png deleted file mode 100644 index a4970c1610..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89f.png deleted file mode 100644 index 1d5093c155..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e89f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a0.png deleted file mode 100644 index 284fe45538..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a1.png deleted file mode 100644 index 158271a34c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a2.png deleted file mode 100644 index 5646ee3cb8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a3.png deleted file mode 100644 index 436e837fa0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a4.png deleted file mode 100644 index d1a446d5a2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a5.png deleted file mode 100644 index bac89ef926..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a6.png deleted file mode 100644 index a17b40c81f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a7.png deleted file mode 100644 index a4eb74a555..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a8.png deleted file mode 100644 index 3771c1747c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a9.png deleted file mode 100644 index d66876ecb2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8aa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8aa.png deleted file mode 100644 index ddcd170339..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ab.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ab.png deleted file mode 100644 index d0752259be..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ac.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ac.png deleted file mode 100644 index 8eb7e96653..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ad.png deleted file mode 100644 index d1f1be4fa0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ae.png deleted file mode 100644 index c1239f4326..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8af.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8af.png deleted file mode 100644 index 32ed85bf33..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b0.png deleted file mode 100644 index f8959cc242..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b1.png deleted file mode 100644 index 34aa39a58e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b2.png deleted file mode 100644 index b43df15024..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b3.png deleted file mode 100644 index f3feda2fe0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b4.png deleted file mode 100644 index 1610e3c545..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b5.png deleted file mode 100644 index 4457d937bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b6.png deleted file mode 100644 index 41acf95283..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b7.png deleted file mode 100644 index 9d0c9cbce9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b8.png deleted file mode 100644 index 7e3c15f533..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b9.png deleted file mode 100644 index 1301344af2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ba.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ba.png deleted file mode 100644 index 15be8c6887..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bb.png deleted file mode 100644 index af67868682..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bc.png deleted file mode 100644 index e292a8c2dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bd.png deleted file mode 100644 index bd27fff83d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8be.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8be.png deleted file mode 100644 index 420489a81a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8be.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bf.png deleted file mode 100644 index 0ed112bd40..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c0.png deleted file mode 100644 index 502d2db0c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c1.png deleted file mode 100644 index adc03c176d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c2.png deleted file mode 100644 index 78c258be01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c3.png deleted file mode 100644 index 749d3c4a4f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c4.png deleted file mode 100644 index d733886eba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c5.png deleted file mode 100644 index 488a06bf2b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c6.png deleted file mode 100644 index 79714e82b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c7.png deleted file mode 100644 index 00717e462a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c8.png deleted file mode 100644 index 6ed67ac5bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c9.png deleted file mode 100644 index 738adb6bfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ca.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ca.png deleted file mode 100644 index fa8f6033e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cb.png deleted file mode 100644 index 9506d14678..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cc.png deleted file mode 100644 index 1ccba42b4b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cd.png deleted file mode 100644 index ce91d69889..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ce.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ce.png deleted file mode 100644 index e20f8c19c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cf.png deleted file mode 100644 index 8ae6418c2e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8cf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d0.png deleted file mode 100644 index 313ce31d6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d1.png deleted file mode 100644 index a1750eebf6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d2.png deleted file mode 100644 index 03124c634d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d3.png deleted file mode 100644 index 6697cf94d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d4.png deleted file mode 100644 index 10bd238876..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d5.png deleted file mode 100644 index 21b96081b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d6.png deleted file mode 100644 index dd5e447912..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d7.png deleted file mode 100644 index 140ddacb9f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d8.png deleted file mode 100644 index 7959c00c00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d9.png deleted file mode 100644 index eede043375..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8da.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8da.png deleted file mode 100644 index 8d5bf46574..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8da.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8db.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8db.png deleted file mode 100644 index be0fd6a769..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8db.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8dc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8dc.png deleted file mode 100644 index 981b173d78..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8dc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8dd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8dd.png deleted file mode 100644 index 463835ce8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8dd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8de.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8de.png deleted file mode 100644 index 90ed462a5c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8de.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8df.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8df.png deleted file mode 100644 index 6877530779..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8df.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e0.png deleted file mode 100644 index 822fc3c5e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e1.png deleted file mode 100644 index b5af41daee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e2.png deleted file mode 100644 index c346200506..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e3.png deleted file mode 100644 index 7b89601498..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e4.png deleted file mode 100644 index 824f9b2353..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e5.png deleted file mode 100644 index a445d1134c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e6.png deleted file mode 100644 index ac40c87c5e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e7.png deleted file mode 100644 index d110efb9f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e8.png deleted file mode 100644 index a536e0fed3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e9.png deleted file mode 100644 index bf9a48d4c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ea.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ea.png deleted file mode 100644 index 3869322bf0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8eb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8eb.png deleted file mode 100644 index 460bc3eb9b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ec.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ec.png deleted file mode 100644 index 5357860e7d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ed.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ed.png deleted file mode 100644 index df926da69f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ee.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ee.png deleted file mode 100644 index f80709fc8b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ef.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ef.png deleted file mode 100644 index 7c38a2b062..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f0.png deleted file mode 100644 index 6e84dd076a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f1.png deleted file mode 100644 index 7401bcff59..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f2.png deleted file mode 100644 index 82733caa8e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f3.png deleted file mode 100644 index 9e09578fc0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f4.png deleted file mode 100644 index 8b55005c01..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f5.png deleted file mode 100644 index eb623805d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f6.png deleted file mode 100644 index 0419d189b7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f7.png deleted file mode 100644 index b9f4709914..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f8.png deleted file mode 100644 index 2463bb2798..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f9.png deleted file mode 100644 index 6543d87748..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fa.png deleted file mode 100644 index 043b50bb7c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fb.png deleted file mode 100644 index 640107b7ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fc.png deleted file mode 100644 index 8d7f94453a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fd.png deleted file mode 100644 index b03c761b08..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fe.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fe.png deleted file mode 100644 index 9f17b3816f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8fe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ff.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ff.png deleted file mode 100644 index ba4f852a22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e8ff.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e902.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e902.png deleted file mode 100644 index a0b7c01621..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e902.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e904.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e904.png deleted file mode 100644 index 6c211556c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e904.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e905.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e905.png deleted file mode 100644 index 03193ddc8f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e905.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e906.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e906.png deleted file mode 100644 index 2ea72d4d4e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e906.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e907.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e907.png deleted file mode 100644 index 00f9a101da..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e907.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e908.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e908.png deleted file mode 100644 index 04e00aa50e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e908.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e909.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e909.png deleted file mode 100644 index 69e6955dfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e909.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90a.png deleted file mode 100644 index daa4e1edfe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90b.png deleted file mode 100644 index bbbedd99e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90c.png deleted file mode 100644 index d30ecd25cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90d.png deleted file mode 100644 index f6cd7a57a8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90e.png deleted file mode 100644 index b507a42f0a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90f.png deleted file mode 100644 index 1fc1b48742..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e90f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e910.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e910.png deleted file mode 100644 index 3153177458..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e910.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e911.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e911.png deleted file mode 100644 index 38cc74b6d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e911.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e912.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e912.png deleted file mode 100644 index 35abddacc1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e912.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e913.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e913.png deleted file mode 100644 index 7112e9d82f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e913.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e914.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e914.png deleted file mode 100644 index 11e407e794..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e914.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e915.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e915.png deleted file mode 100644 index 484cbea7b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e915.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e916.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e916.png deleted file mode 100644 index 20bf51ef18..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e916.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91b.png deleted file mode 100644 index 47bdbcd8fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91c.png deleted file mode 100644 index 2f779375cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91f.png deleted file mode 100644 index 446afd41ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e91f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e921.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e921.png deleted file mode 100644 index 0beba27182..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e921.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e922.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e922.png deleted file mode 100644 index 8b23591fbd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e922.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e923.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e923.png deleted file mode 100644 index 433ff36272..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e923.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e924.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e924.png deleted file mode 100644 index 1f24f17236..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e924.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e925.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e925.png deleted file mode 100644 index b9126a4768..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e925.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e926.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e926.png deleted file mode 100644 index 8844e2ab8d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e926.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e927.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e927.png deleted file mode 100644 index 357d7cc980..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e927.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e928.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e928.png deleted file mode 100644 index f4b48fa688..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e928.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e929.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e929.png deleted file mode 100644 index 4e380b66ea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e929.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92c.png deleted file mode 100644 index f9d252be0c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92d.png deleted file mode 100644 index b8e27c8c94..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92e.png deleted file mode 100644 index ffd485926e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92f.png deleted file mode 100644 index e2364ea6a6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e92f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e930.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e930.png deleted file mode 100644 index 822fe728d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e930.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e931.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e931.png deleted file mode 100644 index fe4fe502d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e931.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e932.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e932.png deleted file mode 100644 index 07a8a095a8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e932.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e933.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e933.png deleted file mode 100644 index a325159425..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e933.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e934.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e934.png deleted file mode 100644 index 8ec59cd037..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e934.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e935.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e935.png deleted file mode 100644 index a6818687b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e935.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e936.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e936.png deleted file mode 100644 index 43610e1c0a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e936.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e937.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e937.png deleted file mode 100644 index f5aec4b232..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e937.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e938.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e938.png deleted file mode 100644 index 8a2af08348..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e938.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e939.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e939.png deleted file mode 100644 index 9025f9563d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e939.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e93c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e93c.png deleted file mode 100644 index 1f62816031..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e93c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e93e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e93e.png deleted file mode 100644 index 3272ef01cf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e93e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e943.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e943.png deleted file mode 100644 index 508cd6ef2a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e943.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e944.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e944.png deleted file mode 100644 index 7c9cfe8bef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e944.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e945.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e945.png deleted file mode 100644 index d8ce8fe87c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e945.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e946.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e946.png deleted file mode 100644 index e0a4e42bbe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e946.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e947.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e947.png deleted file mode 100644 index acdc4aa6c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e947.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e948.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e948.png deleted file mode 100644 index 95e30db90d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e948.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e949.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e949.png deleted file mode 100644 index 2e9a10b2fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e949.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94a.png deleted file mode 100644 index 05cf5db953..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94b.png deleted file mode 100644 index 16c9466a2d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94c.png deleted file mode 100644 index 5fb0ae50ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94d.png deleted file mode 100644 index 133cf2fc72..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94e.png deleted file mode 100644 index 70e2a69d2c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94f.png deleted file mode 100644 index 455c9175bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e94f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e950.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e950.png deleted file mode 100644 index 78a396d2ca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e950.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e951.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e951.png deleted file mode 100644 index 7dda3c684c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e951.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e952.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e952.png deleted file mode 100644 index 8638fc17c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e952.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e953.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e953.png deleted file mode 100644 index 439570dcd0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e953.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e954.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e954.png deleted file mode 100644 index 1ba25c27b2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e954.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e955.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e955.png deleted file mode 100644 index e12bc14214..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e955.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e956.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e956.png deleted file mode 100644 index e8c4dc4421..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e956.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e957.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e957.png deleted file mode 100644 index 685f628821..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e957.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e958.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e958.png deleted file mode 100644 index c4891faa0e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e958.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95a.png deleted file mode 100644 index e0ce79c1ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95b.png deleted file mode 100644 index d58bdcfce0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95d.png deleted file mode 100644 index 437e1c050a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95e.png deleted file mode 100644 index 0fb8992ec7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95f.png deleted file mode 100644 index 21995ceb43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e95f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e960.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e960.png deleted file mode 100644 index 625d1e2a60..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e960.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e961.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e961.png deleted file mode 100644 index 31fc1d5753..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e961.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e962.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e962.png deleted file mode 100644 index 6bfa5c026a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e962.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e963.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e963.png deleted file mode 100644 index e5872ff46e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e963.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e964.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e964.png deleted file mode 100644 index 123ec82dfd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e964.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e965.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e965.png deleted file mode 100644 index aa76c72cca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e965.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e966.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e966.png deleted file mode 100644 index 919bf919aa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e966.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e967.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e967.png deleted file mode 100644 index d57c861cb4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e967.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e968.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e968.png deleted file mode 100644 index 8351aa3dbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e968.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e969.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e969.png deleted file mode 100644 index f3f1fbd861..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e969.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96a.png deleted file mode 100644 index 308618ac74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96d.png deleted file mode 100644 index 22526d9b54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96e.png deleted file mode 100644 index 8b2a0c5d36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96f.png deleted file mode 100644 index 24463365fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e96f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e970.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e970.png deleted file mode 100644 index d860eb955a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e970.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e971.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e971.png deleted file mode 100644 index cac8c65452..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e971.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e972.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e972.png deleted file mode 100644 index ae584e6919..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e972.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e973.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e973.png deleted file mode 100644 index c59a2f4749..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e973.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e974.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e974.png deleted file mode 100644 index 0aa139d98c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e974.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e975.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e975.png deleted file mode 100644 index e019f9f00c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e975.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e976.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e976.png deleted file mode 100644 index 817164f83f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e976.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e977.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e977.png deleted file mode 100644 index aaac33b673..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e977.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e978.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e978.png deleted file mode 100644 index dc349823d6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e978.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e979.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e979.png deleted file mode 100644 index 424b6f019b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e979.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97a.png deleted file mode 100644 index 39fcd71be4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97b.png deleted file mode 100644 index 1b074f1185..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97c.png deleted file mode 100644 index 321cf3d7af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97d.png deleted file mode 100644 index 41dd18e91a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97e.png deleted file mode 100644 index 98e4d46b2c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97f.png deleted file mode 100644 index 295f68b0c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e97f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e980.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e980.png deleted file mode 100644 index 4f978e4e1d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e980.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e981.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e981.png deleted file mode 100644 index eb8c7ceea4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e981.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e982.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e982.png deleted file mode 100644 index 2f0779b36f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e982.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e983.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e983.png deleted file mode 100644 index 328b3c8c1d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e983.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e984.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e984.png deleted file mode 100644 index 01ff077dd0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e984.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e985.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e985.png deleted file mode 100644 index 80091f162a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e985.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e986.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e986.png deleted file mode 100644 index cc2cb0faab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e986.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e987.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e987.png deleted file mode 100644 index ed6364ef43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e987.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e988.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e988.png deleted file mode 100644 index 69666783fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e988.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e989.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e989.png deleted file mode 100644 index 306c9771a2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e989.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e98a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e98a.png deleted file mode 100644 index 1d575d3da8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e98a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e98f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e98f.png deleted file mode 100644 index 9185094861..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e98f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e990.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e990.png deleted file mode 100644 index b4ae1bba3a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e990.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e992.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e992.png deleted file mode 100644 index e740eb8ab4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e992.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e993.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e993.png deleted file mode 100644 index c4a96003b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e993.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e994.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e994.png deleted file mode 100644 index 9b785de6b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e994.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e995.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e995.png deleted file mode 100644 index 7eca00f2a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e995.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e996.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e996.png deleted file mode 100644 index 6c09fc42b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e996.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e998.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e998.png deleted file mode 100644 index a23107599f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e998.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e99a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e99a.png deleted file mode 100644 index 8fff55c540..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e99a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a1.png deleted file mode 100644 index 0b3e038699..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a6.png deleted file mode 100644 index fc0044bd96..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a8.png deleted file mode 100644 index cb08e7e025..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a9.png deleted file mode 100644 index 3e0e3bee81..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9aa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9aa.png deleted file mode 100644 index 0ce73fcbe0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ab.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ab.png deleted file mode 100644 index f89342d705..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ac.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ac.png deleted file mode 100644 index 2ede7ad5d2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ad.png deleted file mode 100644 index b672e4b728..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ae.png deleted file mode 100644 index 11c2ea5761..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9af.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9af.png deleted file mode 100644 index 08c0026833..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b0.png deleted file mode 100644 index 26c35ae980..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b1.png deleted file mode 100644 index a24f7d68c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b2.png deleted file mode 100644 index ccf6b1c959..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b3.png deleted file mode 100644 index 158866b04a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b4.png deleted file mode 100644 index febe4716b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b5.png deleted file mode 100644 index d87d4ce287..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b6.png deleted file mode 100644 index 8513dfa227..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b7.png deleted file mode 100644 index d97a4eb777..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b8.png deleted file mode 100644 index bf8758ca75..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b9.png deleted file mode 100644 index 2509085afa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ba.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ba.png deleted file mode 100644 index f60866f256..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9bb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9bb.png deleted file mode 100644 index 0c02923b29..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9bc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9bc.png deleted file mode 100644 index 010a966230..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ca.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ca.png deleted file mode 100644 index b9fc37e514..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ce.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ce.png deleted file mode 100644 index 9e0dde0318..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d2.png deleted file mode 100644 index c1525c8ef3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d5.png deleted file mode 100644 index 711e08f059..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d9.png deleted file mode 100644 index a46f17f4b3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9e9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9e9.png deleted file mode 100644 index 528e33857a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f3.png deleted file mode 100644 index f7acfdc6e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f5.png deleted file mode 100644 index 79cf59ce9c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f9.png deleted file mode 100644 index c6eb3de57c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/e9f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea0c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea0c.png deleted file mode 100644 index 5a7252c7c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea0c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea0d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea0d.png deleted file mode 100644 index e5d4e9f410..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea0d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea14.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea14.png deleted file mode 100644 index 393aea5b77..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea14.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea18.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea18.png deleted file mode 100644 index 2a025e9413..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea18.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea1f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea1f.png deleted file mode 100644 index 3f72a37fb6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea21.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea21.png deleted file mode 100644 index bbe4dea5a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea21.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea24.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea24.png deleted file mode 100644 index afaf879253..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea24.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea35.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea35.png deleted file mode 100644 index f781f3b713..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea35.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea37.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea37.png deleted file mode 100644 index 39830f7d1d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea37.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea38.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea38.png deleted file mode 100644 index f3d81f23c3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea38.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea39.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea39.png deleted file mode 100644 index 4abdcf8a4c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea39.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3a.png deleted file mode 100644 index 32d884a79e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3b.png deleted file mode 100644 index 30791db7bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3c.png deleted file mode 100644 index 3070997a17..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3d.png deleted file mode 100644 index f57ea0a16f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3f.png deleted file mode 100644 index 95681edad9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea40.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea40.png deleted file mode 100644 index c0fde54804..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea41.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea41.png deleted file mode 100644 index bf56ff3ac4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea42.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea42.png deleted file mode 100644 index f5e4d2f875..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea43.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea43.png deleted file mode 100644 index 78515b6d47..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea43.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea44.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea44.png deleted file mode 100644 index 4e6081248e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea47.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea47.png deleted file mode 100644 index 4105a02429..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea48.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea48.png deleted file mode 100644 index b272acb1bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea48.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea49.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea49.png deleted file mode 100644 index 1e1fe00849..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4a.png deleted file mode 100644 index 028f9345d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4b.png deleted file mode 100644 index d30ecd25cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4c.png deleted file mode 100644 index f6cd7a57a8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4e.png deleted file mode 100644 index c21ed2b38c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4f.png deleted file mode 100644 index 957d390ed3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea50.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea50.png deleted file mode 100644 index c09f5f8770..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea50.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea51.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea51.png deleted file mode 100644 index 8d93ef5bc5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea51.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea52.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea52.png deleted file mode 100644 index 07e22d09df..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea52.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea53.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea53.png deleted file mode 100644 index 90ac7234f2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea53.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea54.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea54.png deleted file mode 100644 index 6893d14c2f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea54.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea55.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea55.png deleted file mode 100644 index fa5909d7dc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea56.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea56.png deleted file mode 100644 index 8aeb9bc687..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea57.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea57.png deleted file mode 100644 index 796da88edc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea58.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea58.png deleted file mode 100644 index 601b9b4b60..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5b.png deleted file mode 100644 index 7b332f7d52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5c.png deleted file mode 100644 index 3ffeaefced..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5e.png deleted file mode 100644 index 39b75f0ed3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5f.png deleted file mode 100644 index f55948da4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea60.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea60.png deleted file mode 100644 index 0a40ca13fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea60.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea61.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea61.png deleted file mode 100644 index 9d4171b322..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea62.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea62.png deleted file mode 100644 index f75015562c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea62.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea63.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea63.png deleted file mode 100644 index 95d2ab4c50..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea64.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea64.png deleted file mode 100644 index 49055d6abe..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea65.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea65.png deleted file mode 100644 index 5229407124..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea65.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea69.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea69.png deleted file mode 100644 index 352aa93c00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea69.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea6a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea6a.png deleted file mode 100644 index 220f68a835..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea6a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea6c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea6c.png deleted file mode 100644 index 5be1c68942..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea6c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea79.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea79.png deleted file mode 100644 index f9675f2f49..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea79.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea80.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea80.png deleted file mode 100644 index 1920bc1c98..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea80.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea81.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea81.png deleted file mode 100644 index 257ab5da8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea81.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea82.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea82.png deleted file mode 100644 index af12ff76f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea82.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea83.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea83.png deleted file mode 100644 index 002cb3fae9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea83.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea84.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea84.png deleted file mode 100644 index 509aef3ff9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea84.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea86.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea86.png deleted file mode 100644 index 5652980928..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea86.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea89.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea89.png deleted file mode 100644 index 5a1b25ff7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea89.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8a.png deleted file mode 100644 index edd2904039..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8b.png deleted file mode 100644 index d5f554e1e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8c.png deleted file mode 100644 index c457ca03ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8d.png deleted file mode 100644 index 9740dcbd3a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8e.png deleted file mode 100644 index bd24db976e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8f.png deleted file mode 100644 index 6cbb5b9a63..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea8f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea90.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea90.png deleted file mode 100644 index 0eb1290dce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea90.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea91.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea91.png deleted file mode 100644 index e5079d0bbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea91.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea92.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea92.png deleted file mode 100644 index 89407c8f63..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea92.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea93.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea93.png deleted file mode 100644 index 28ee24c7d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea93.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea94.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea94.png deleted file mode 100644 index 001700b570..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea94.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea95.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea95.png deleted file mode 100644 index 89bdda15ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea95.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea97.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea97.png deleted file mode 100644 index 02e9251da3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea97.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea98.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea98.png deleted file mode 100644 index f8750326b7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea98.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea99.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea99.png deleted file mode 100644 index ad8c074f49..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ea99.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eac2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eac2.png deleted file mode 100644 index 12780dbf30..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eac2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eadf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eadf.png deleted file mode 100644 index 5dd380ff98..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eadf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eafc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eafc.png deleted file mode 100644 index 6410432645..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eafc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb05.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb05.png deleted file mode 100644 index 573230a1c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb05.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb0f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb0f.png deleted file mode 100644 index 7e71a2dd12..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb0f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb11.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb11.png deleted file mode 100644 index 58a1e51286..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb11.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb3c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb3c.png deleted file mode 100644 index f448725d82..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb41.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb41.png deleted file mode 100644 index 16018f4d7a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb42.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb42.png deleted file mode 100644 index 3e14c10896..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb44.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb44.png deleted file mode 100644 index a686cbee16..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb47.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb47.png deleted file mode 100644 index 16cc14a475..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb48.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb48.png deleted file mode 100644 index 8c49a2914b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb48.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb49.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb49.png deleted file mode 100644 index d5d8ce3784..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4a.png deleted file mode 100644 index 790dc3819e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4b.png deleted file mode 100644 index 57bd22fe6c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4c.png deleted file mode 100644 index fc00904c59..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4d.png deleted file mode 100644 index 0ab7e8c534..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4e.png deleted file mode 100644 index 886ed4e331..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4f.png deleted file mode 100644 index 73768c5946..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb50.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb50.png deleted file mode 100644 index c3a64fd1b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb50.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb51.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb51.png deleted file mode 100644 index 53552cbb28..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb51.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb52.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb52.png deleted file mode 100644 index 07c70a8dfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb52.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb55.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb55.png deleted file mode 100644 index 4e2b275584..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb56.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb56.png deleted file mode 100644 index da0ca7aa5a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb57.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb57.png deleted file mode 100644 index f2c0816d3c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb58.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb58.png deleted file mode 100644 index 6a7d6adca7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb59.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb59.png deleted file mode 100644 index 0ea1631a80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb59.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5a.png deleted file mode 100644 index a088fdcf76..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5b.png deleted file mode 100644 index 2fb632de39..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5c.png deleted file mode 100644 index b48e48c0a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5d.png deleted file mode 100644 index 03d568de70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5e.png deleted file mode 100644 index 2858362c19..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5f.png deleted file mode 100644 index 57ae755318..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb60.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb60.png deleted file mode 100644 index 15e122a750..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb60.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb61.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb61.png deleted file mode 100644 index aac1aecfd0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb62.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb62.png deleted file mode 100644 index 3f89aefb20..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb62.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb63.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb63.png deleted file mode 100644 index 5259990009..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb66.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb66.png deleted file mode 100644 index 530c1f35d0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb66.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb67.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb67.png deleted file mode 100644 index 893d9043fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb67.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb68.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb68.png deleted file mode 100644 index 5c5d2f1771..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb68.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb77.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb77.png deleted file mode 100644 index 37bdac3bbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb77.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb7e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb7e.png deleted file mode 100644 index 604fde0d40..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb7e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb82.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb82.png deleted file mode 100644 index 84f46cc3ce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb82.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb83.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb83.png deleted file mode 100644 index 215f94f4cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb83.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb84.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb84.png deleted file mode 100644 index 9456995c5a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb84.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb85.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb85.png deleted file mode 100644 index 6ccc7c82a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb85.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb86.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb86.png deleted file mode 100644 index a946f7c901..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb86.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb87.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb87.png deleted file mode 100644 index 6fdbf6f65c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb87.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb88.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb88.png deleted file mode 100644 index 54a2b4c2b2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb88.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb89.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb89.png deleted file mode 100644 index 6aba7446f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb89.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8a.png deleted file mode 100644 index 6bcf3349a7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8b.png deleted file mode 100644 index a761ea68bb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8c.png deleted file mode 100644 index 84f46cc3ce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8d.png deleted file mode 100644 index c59bd0cad4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb8d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb90.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb90.png deleted file mode 100644 index 4d4618c22d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb90.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb91.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb91.png deleted file mode 100644 index f54e20d548..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb91.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb95.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb95.png deleted file mode 100644 index d076c653c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb95.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb96.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb96.png deleted file mode 100644 index 48f07d6129..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb96.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb97.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb97.png deleted file mode 100644 index 4656709e61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb97.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9d.png deleted file mode 100644 index bd8fb800ec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9e.png deleted file mode 100644 index d2cba69fce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9f.png deleted file mode 100644 index c85bf2940a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eb9f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba0.png deleted file mode 100644 index 3ea0b60b94..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba1.png deleted file mode 100644 index edcc645e3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba2.png deleted file mode 100644 index c23cf6ec4a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba3.png deleted file mode 100644 index 990a2ab7e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba4.png deleted file mode 100644 index 635d6a6daf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba5.png deleted file mode 100644 index d793ee6b82..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba6.png deleted file mode 100644 index 00c5d57047..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba7.png deleted file mode 100644 index 6b50d3dfed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba8.png deleted file mode 100644 index 9c6bd29cb8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba9.png deleted file mode 100644 index 2c90b4c46d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eba9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebaa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebaa.png deleted file mode 100644 index c5ca70fe80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebab.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebab.png deleted file mode 100644 index 2fce26984e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebac.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebac.png deleted file mode 100644 index 2fa99bf376..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebad.png deleted file mode 100644 index f8bf16df06..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebae.png deleted file mode 100644 index 3faa7da37e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebaf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebaf.png deleted file mode 100644 index 5e5cf88d6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb0.png deleted file mode 100644 index e54dd25ba2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb1.png deleted file mode 100644 index cb7b62a460..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb2.png deleted file mode 100644 index def9ded2a3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb3.png deleted file mode 100644 index 71ac12191d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb4.png deleted file mode 100644 index a6884b8d8a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb5.png deleted file mode 100644 index 94d60eb696..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb6.png deleted file mode 100644 index 0e5333a433..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb7.png deleted file mode 100644 index 62d671dbcb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb8.png deleted file mode 100644 index 8eacc00e74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb9.png deleted file mode 100644 index e3f22722ac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebb9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebba.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebba.png deleted file mode 100644 index f5925b6d6b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbb.png deleted file mode 100644 index b6eebb82d9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbc.png deleted file mode 100644 index 6892420b3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbd.png deleted file mode 100644 index 44c7d9a4eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbe.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbe.png deleted file mode 100644 index f6f63f3160..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbf.png deleted file mode 100644 index 684d6930ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebbf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc0.png deleted file mode 100644 index b39f3cdfcc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc3.png deleted file mode 100644 index b7874d6e3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc4.png deleted file mode 100644 index 45271a6eb1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc5.png deleted file mode 100644 index 48ddade1bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc6.png deleted file mode 100644 index 1db9f7adfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd2.png deleted file mode 100644 index 6314ea6f61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd3.png deleted file mode 100644 index 64f773390a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd4.png deleted file mode 100644 index 74deb0511f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd5.png deleted file mode 100644 index 705bf12a1d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd6.png deleted file mode 100644 index ef6bf2fc23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd7.png deleted file mode 100644 index 4126689bfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd8.png deleted file mode 100644 index c4dbaa451e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd9.png deleted file mode 100644 index 5863ffcf50..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebd9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebda.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebda.png deleted file mode 100644 index efafa114df..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebda.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebdb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebdb.png deleted file mode 100644 index 1c6d032142..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebdb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebde.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebde.png deleted file mode 100644 index 8c92b78a0f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebde.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe6.png deleted file mode 100644 index ebdc44f4c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe7.png deleted file mode 100644 index d04176467b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe8.png deleted file mode 100644 index 4e298adff9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebe8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfc.png deleted file mode 100644 index 60eb054403..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfd.png deleted file mode 100644 index 7f95ac95fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfe.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfe.png deleted file mode 100644 index 8eb1ce9054..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebfe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebff.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebff.png deleted file mode 100644 index 5b069d6714..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ebff.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec00.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec00.png deleted file mode 100644 index b45d90eb7d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec00.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec02.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec02.png deleted file mode 100644 index 0b8832da89..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec02.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec05.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec05.png deleted file mode 100644 index 79466303f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec05.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec06.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec06.png deleted file mode 100644 index ad140aea9f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec06.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec07.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec07.png deleted file mode 100644 index fb74259884..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec07.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec08.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec08.png deleted file mode 100644 index 2c59cbeb4f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec08.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec09.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec09.png deleted file mode 100644 index 75ddc7637a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec09.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec0a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec0a.png deleted file mode 100644 index e4b30f39f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec0a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec0b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec0b.png deleted file mode 100644 index e3d011e446..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec0b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec11.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec11.png deleted file mode 100644 index 4469f81027..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec11.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec12.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec12.png deleted file mode 100644 index b1f73da526..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec12.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec13.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec13.png deleted file mode 100644 index 9e7b400814..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec13.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec14.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec14.png deleted file mode 100644 index bd3a7b306d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec14.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec15.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec15.png deleted file mode 100644 index fa2bfb25cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec15.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec16.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec16.png deleted file mode 100644 index 6affed8aa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec16.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec19.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec19.png deleted file mode 100644 index 5b95fb1889..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec19.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec1b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec1b.png deleted file mode 100644 index 39182a94a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec1b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec1e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec1e.png deleted file mode 100644 index c0202ab30e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec1e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec20.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec20.png deleted file mode 100644 index 46e0cff595..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec20.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec24.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec24.png deleted file mode 100644 index 53d759f609..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec24.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec25.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec25.png deleted file mode 100644 index af7c4c286a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec25.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec26.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec26.png deleted file mode 100644 index 33ed69584b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec26.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec27.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec27.png deleted file mode 100644 index ea6483b99e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec27.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec31.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec31.png deleted file mode 100644 index b6526bcc33..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec31.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec32.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec32.png deleted file mode 100644 index f73021ef66..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec32.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec37.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec37.png deleted file mode 100644 index 2a864d1f7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec37.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec38.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec38.png deleted file mode 100644 index 26ff6ce74e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec38.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec39.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec39.png deleted file mode 100644 index fe0a817126..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec39.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3a.png deleted file mode 100644 index 54cba51cbf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3b.png deleted file mode 100644 index e110588a73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3c.png deleted file mode 100644 index 8a8da1559f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3d.png deleted file mode 100644 index fbc37dadcf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3e.png deleted file mode 100644 index a7114ca806..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3f.png deleted file mode 100644 index f467f6548a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec40.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec40.png deleted file mode 100644 index 6c37e55d41..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec41.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec41.png deleted file mode 100644 index fd8290b8b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec42.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec42.png deleted file mode 100644 index de861c31b4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec43.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec43.png deleted file mode 100644 index e60530d53d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec43.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec44.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec44.png deleted file mode 100644 index 5453c96fb8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec45.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec45.png deleted file mode 100644 index 30cb669cd5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec45.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec46.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec46.png deleted file mode 100644 index a2f9455af8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec46.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec47.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec47.png deleted file mode 100644 index efe013c124..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec48.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec48.png deleted file mode 100644 index 5bab78578d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec48.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec49.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec49.png deleted file mode 100644 index 3fa605f2fa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec49.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4a.png deleted file mode 100644 index c3278fcba6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4e.png deleted file mode 100644 index 4bea58544e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4f.png deleted file mode 100644 index 55292ab2de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec50.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec50.png deleted file mode 100644 index 960311c019..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec50.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec51.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec51.png deleted file mode 100644 index 3941c4dbd6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec51.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec52.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec52.png deleted file mode 100644 index 3a1a94e7aa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec52.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec54.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec54.png deleted file mode 100644 index 57acba62f5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec54.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec55.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec55.png deleted file mode 100644 index 22bcb3aff9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec56.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec56.png deleted file mode 100644 index 4d7c9ef249..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec57.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec57.png deleted file mode 100644 index c54d5532ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec58.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec58.png deleted file mode 100644 index bec0b99cc5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec59.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec59.png deleted file mode 100644 index ac1bffc5fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec59.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5a.png deleted file mode 100644 index f4e149cfac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5b.png deleted file mode 100644 index 48956fac21..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5c.png deleted file mode 100644 index a997a20994..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec61.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec61.png deleted file mode 100644 index 71781fcaf5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec64.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec64.png deleted file mode 100644 index 3f2fef8e3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec6c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec6c.png deleted file mode 100644 index 839a05494b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec6c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec6d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec6d.png deleted file mode 100644 index dd4f94143d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec6d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec71.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec71.png deleted file mode 100644 index 3848c43ace..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec71.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec72.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec72.png deleted file mode 100644 index 4cb6b7b3e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec72.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec74.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec74.png deleted file mode 100644 index f4293f528b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec74.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec75.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec75.png deleted file mode 100644 index 7b96a5c567..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec75.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec76.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec76.png deleted file mode 100644 index 75d1a804ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec76.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec77.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec77.png deleted file mode 100644 index 084d8a9732..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec77.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7a.png deleted file mode 100644 index cf46cf610a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7e.png deleted file mode 100644 index 2b66cbfc73..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7f.png deleted file mode 100644 index e0091cea2a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec7f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec80.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec80.png deleted file mode 100644 index 7e401d084e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec80.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec81.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec81.png deleted file mode 100644 index 8a6dda7fa0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec81.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec87.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec87.png deleted file mode 100644 index 569281c0e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec87.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec88.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec88.png deleted file mode 100644 index 641eccac1b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec88.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec8a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec8a.png deleted file mode 100644 index 425b2a27d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec8f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec8f.png deleted file mode 100644 index 6857c43486..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec8f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec92.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec92.png deleted file mode 100644 index 3eae583e74..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec92.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec94.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec94.png deleted file mode 100644 index 45a59ed816..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ec94.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eca5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eca5.png deleted file mode 100644 index 461b89c918..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eca5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eca7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eca7.png deleted file mode 100644 index b657902a00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eca7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecaa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecaa.png deleted file mode 100644 index 40db0b7161..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecad.png deleted file mode 100644 index 0ef7dc05dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecaf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecaf.png deleted file mode 100644 index 9e316527a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecb9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecb9.png deleted file mode 100644 index 6f8b40eb61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecb9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecba.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecba.png deleted file mode 100644 index 92e1d2c343..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbb.png deleted file mode 100644 index 0fac1de8d7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbc.png deleted file mode 100644 index 8a8e4883e1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbd.png deleted file mode 100644 index 9426fc7089..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbe.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbe.png deleted file mode 100644 index b8ee00589e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbf.png deleted file mode 100644 index 2c708fbf40..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecbf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc4.png deleted file mode 100644 index 4fe13e5868..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc5.png deleted file mode 100644 index 46680591dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc6.png deleted file mode 100644 index 8bf125cfd4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc8.png deleted file mode 100644 index 92036797ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc9.png deleted file mode 100644 index 59489633ff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecc9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecca.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecca.png deleted file mode 100644 index ad82cf2d25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccb.png deleted file mode 100644 index cc22157662..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccc.png deleted file mode 100644 index 2bd1ea6fea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccd.png deleted file mode 100644 index 15d2cdc503..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eccd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece4.png deleted file mode 100644 index 8d85c70e22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece7.png deleted file mode 100644 index 7d87b04a15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece8.png deleted file mode 100644 index e36e47bb3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece9.png deleted file mode 100644 index 0da1a218a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ece9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf0.png deleted file mode 100644 index 6d2ef4b99c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf1.png deleted file mode 100644 index 4a921bc6a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf3.png deleted file mode 100644 index c93743082b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ecf3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0c.png deleted file mode 100644 index b98ae30823..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0d.png deleted file mode 100644 index 2f779375cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0e.png deleted file mode 100644 index 5888c07cba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed0e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed10.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed10.png deleted file mode 100644 index fdc6f2ca29..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed10.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed11.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed11.png deleted file mode 100644 index d649d1305a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed11.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed14.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed14.png deleted file mode 100644 index 1c5a702578..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed14.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed15.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed15.png deleted file mode 100644 index 6988b2d23e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed15.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1a.png deleted file mode 100644 index e74524abe1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1e.png deleted file mode 100644 index c971e070e6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1f.png deleted file mode 100644 index 7ccb28bac5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed25.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed25.png deleted file mode 100644 index 2d4df29c71..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed25.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed28.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed28.png deleted file mode 100644 index 85d89ce0e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed28.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2a.png deleted file mode 100644 index 244f885f8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2b.png deleted file mode 100644 index 8f38170e15..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2c.png deleted file mode 100644 index f70169fcc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2d.png deleted file mode 100644 index 30d315dae7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2e.png deleted file mode 100644 index 77bee16f69..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2f.png deleted file mode 100644 index 4ad9e31ced..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed2f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed30.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed30.png deleted file mode 100644 index fa97862a8b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed30.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed31.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed31.png deleted file mode 100644 index 655fd59a77..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed31.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed32.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed32.png deleted file mode 100644 index a0e431642c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed32.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed33.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed33.png deleted file mode 100644 index 9c07ee9d70..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed33.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed35.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed35.png deleted file mode 100644 index 4890a23ad3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed35.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed39.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed39.png deleted file mode 100644 index ee01651378..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed39.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3a.png deleted file mode 100644 index 9af7474a64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3c.png deleted file mode 100644 index a24b309510..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3d.png deleted file mode 100644 index eecf3e8bec..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed41.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed41.png deleted file mode 100644 index cce05d9354..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed41.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed42.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed42.png deleted file mode 100644 index bb16e9d0f2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed43.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed43.png deleted file mode 100644 index 0416c54e1d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed43.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed44.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed44.png deleted file mode 100644 index 9c8389361a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed44.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed47.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed47.png deleted file mode 100644 index c55b808cc4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed47.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed4c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed4c.png deleted file mode 100644 index 18419b161f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed4d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed4d.png deleted file mode 100644 index c6e470a75a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed4d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed53.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed53.png deleted file mode 100644 index 99c9b4c1cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed53.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed54.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed54.png deleted file mode 100644 index 35b96bc6c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed54.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed55.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed55.png deleted file mode 100644 index 9b6993634e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed55.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed56.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed56.png deleted file mode 100644 index 1fd3495c82..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed57.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed57.png deleted file mode 100644 index 6c50222de1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed58.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed58.png deleted file mode 100644 index 31f8cbae5e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed59.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed59.png deleted file mode 100644 index edb9c2bb6d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed59.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5a.png deleted file mode 100644 index a490d19654..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5b.png deleted file mode 100644 index 1f9b4fa675..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5c.png deleted file mode 100644 index 6affed8aa5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5d.png deleted file mode 100644 index 963dee6d9d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5e.png deleted file mode 100644 index fbdd831e9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5f.png deleted file mode 100644 index 2146fe801c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed60.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed60.png deleted file mode 100644 index 2c5f40e076..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed60.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed61.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed61.png deleted file mode 100644 index 3240618dcf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed61.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed62.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed62.png deleted file mode 100644 index 84d5c1c15f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed62.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed63.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed63.png deleted file mode 100644 index b5a7da6f4f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed64.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed64.png deleted file mode 100644 index d4a2e276dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed65.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed65.png deleted file mode 100644 index 00d6f1f0a9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed65.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed66.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed66.png deleted file mode 100644 index 409e42b0bc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed66.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed67.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed67.png deleted file mode 100644 index 508ee264f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ed67.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda2.png deleted file mode 100644 index b24c95d01d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda3.png deleted file mode 100644 index 2fcb0ab0d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda4.png deleted file mode 100644 index 8ba80db719..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda5.png deleted file mode 100644 index a6ab23b3de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda6.png deleted file mode 100644 index bd2c31be93..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda7.png deleted file mode 100644 index eab1c69af6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda8.png deleted file mode 100644 index 913bea1b25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda9.png deleted file mode 100644 index a0e5cc1156..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eda9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edaa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edaa.png deleted file mode 100644 index 7ff1df0af3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edab.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edab.png deleted file mode 100644 index 5244efe12d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edac.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edac.png deleted file mode 100644 index 2b6a919911..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edad.png deleted file mode 100644 index a0cf936f61..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edae.png deleted file mode 100644 index 261a6246d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edaf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edaf.png deleted file mode 100644 index 3f60520ee0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb0.png deleted file mode 100644 index 9cc976b4f7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb1.png deleted file mode 100644 index ad7d6d1698..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb3.png deleted file mode 100644 index 35d7bb3f6e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb4.png deleted file mode 100644 index 099dfd3405..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb5.png deleted file mode 100644 index 810b13f11c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edb5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edc6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edc6.png deleted file mode 100644 index 343c5930a2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd5.png deleted file mode 100644 index 4481fa7a54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd6.png deleted file mode 100644 index c9d065934a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd7.png deleted file mode 100644 index b49fce3809..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd8.png deleted file mode 100644 index e1a888b3e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd9.png deleted file mode 100644 index d0396617a1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edd9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edda.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edda.png deleted file mode 100644 index b1a99a7166..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edda.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eddb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eddb.png deleted file mode 100644 index 4301a6565f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eddb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eddc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eddc.png deleted file mode 100644 index b47d1b784b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eddc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede1.png deleted file mode 100644 index 07e22d09df..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede2.png deleted file mode 100644 index 4457d937bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede3.png deleted file mode 100644 index 90e07aa9b6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede4.png deleted file mode 100644 index 9bfcc71f1f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede5.png deleted file mode 100644 index 61ad2a7d76..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ede5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edfb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/edfb.png deleted file mode 100644 index f458b42936..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/edfb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee35.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee35.png deleted file mode 100644 index f28fd139c4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee35.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee3f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee3f.png deleted file mode 100644 index 987be53b60..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee40.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee40.png deleted file mode 100644 index de3a54839e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee4a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee4a.png deleted file mode 100644 index 72d6662f53..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee56.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee56.png deleted file mode 100644 index 7231e4bc43..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee56.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee57.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee57.png deleted file mode 100644 index dee11b04b0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee57.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee63.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee63.png deleted file mode 100644 index a5226e92e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee63.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee64.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee64.png deleted file mode 100644 index 9ed971204e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee64.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee65.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee65.png deleted file mode 100644 index bb85b95fab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee65.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee6f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee6f.png deleted file mode 100644 index 18208eea0e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee6f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee71.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee71.png deleted file mode 100644 index 11baa17592..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee71.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee77.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee77.png deleted file mode 100644 index 11c17b82c2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee77.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee79.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee79.png deleted file mode 100644 index 3c3769d04e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee79.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee7a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee7a.png deleted file mode 100644 index d3912fe01f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee7a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee92.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee92.png deleted file mode 100644 index 96f0a2de62..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee92.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee93.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee93.png deleted file mode 100644 index 700c475f67..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee93.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee94.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee94.png deleted file mode 100644 index 1200f9cad4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ee94.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eea3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eea3.png deleted file mode 100644 index 72730c5e32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eea3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eeca.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/eeca.png deleted file mode 100644 index 996ed2be55..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/eeca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef15.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef15.png deleted file mode 100644 index 3b4b7b029b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef15.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef16.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef16.png deleted file mode 100644 index 5028eed07b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef16.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef17.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef17.png deleted file mode 100644 index 7444910798..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef17.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef18.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef18.png deleted file mode 100644 index b250d1bbc2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef18.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef19.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef19.png deleted file mode 100644 index 29d8b933f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef19.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef1f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef1f.png deleted file mode 100644 index 3fd863e581..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef20.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef20.png deleted file mode 100644 index 51beebefd9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef20.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2c.png deleted file mode 100644 index e1e107a3b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2d.png deleted file mode 100644 index fc82f7eb34..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2e.png deleted file mode 100644 index 7aaf9cac82..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2f.png deleted file mode 100644 index a933821d36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef2f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef31.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef31.png deleted file mode 100644 index 8af70c7d69..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef31.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3b.png deleted file mode 100644 index b500c85c8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3c.png deleted file mode 100644 index 77be4b659c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3d.png deleted file mode 100644 index f898424a3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3e.png deleted file mode 100644 index f03677237d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3f.png deleted file mode 100644 index 285e8f4369..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef40.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef40.png deleted file mode 100644 index cabcb2cf53..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef40.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef42.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef42.png deleted file mode 100644 index 6e8ebcdf37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef42.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef58.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef58.png deleted file mode 100644 index b65ed72948..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef58.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef6b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef6b.png deleted file mode 100644 index 859fe50d95..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef6b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef90.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef90.png deleted file mode 100644 index 130aef3315..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/ef90.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/efa5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/efa5.png deleted file mode 100644 index 9a1faa07f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/efa5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/efa9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/efa9.png deleted file mode 100644 index 13377c7c3a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/efa9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f000.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f000.png deleted file mode 100644 index 0b70999c8e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f000.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f003.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f003.png deleted file mode 100644 index e6e6cb2ec0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f003.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f012.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f012.png deleted file mode 100644 index 2750362209..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f012.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f080.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f080.png deleted file mode 100644 index 8fe54e1d97..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f080.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f081.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f081.png deleted file mode 100644 index 42ef3fb780..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f081.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f085.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f085.png deleted file mode 100644 index 4836a9a1af..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f085.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08c.png deleted file mode 100644 index 669105ae3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08d.png deleted file mode 100644 index 7ad974cec7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08e.png deleted file mode 100644 index 8fd8f48098..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08f.png deleted file mode 100644 index e33c6086c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f08f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f090.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f090.png deleted file mode 100644 index c2118b03b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f090.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f093.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f093.png deleted file mode 100644 index 30e5bf155f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f093.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f094.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f094.png deleted file mode 100644 index 463fd02aab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f094.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f095.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f095.png deleted file mode 100644 index 087da9ae20..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f095.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f096.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f096.png deleted file mode 100644 index e0af82b0a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f096.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ad.png deleted file mode 100644 index 1897b29118..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ae.png deleted file mode 100644 index 3147019c80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0af.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0af.png deleted file mode 100644 index 3acd84da2d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b0.png deleted file mode 100644 index 9e5e9c88f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b2.png deleted file mode 100644 index 7d3ad41b2f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b3.png deleted file mode 100644 index a62995c71b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b4.png deleted file mode 100644 index d08636f350..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b5.png deleted file mode 100644 index c77b787389..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b6.png deleted file mode 100644 index f7da98fbee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b7.png deleted file mode 100644 index 09c2bd8218..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b8.png deleted file mode 100644 index 42126df72e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b9.png deleted file mode 100644 index 536ab7c313..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0c6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0c6.png deleted file mode 100644 index 0b08e4d1ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0c7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0c7.png deleted file mode 100644 index 572595e617..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ca.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ca.png deleted file mode 100644 index f85c8d920c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cb.png deleted file mode 100644 index a6680b6f83..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cc.png deleted file mode 100644 index 45e2449c63..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cd.png deleted file mode 100644 index 1f3c56dcfa..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ce.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ce.png deleted file mode 100644 index a7ed39c8d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d2.png deleted file mode 100644 index c4eca77a6c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d3.png deleted file mode 100644 index ce0dae6179..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d5.png deleted file mode 100644 index 575d14448d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d6.png deleted file mode 100644 index 0eef318da7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d7.png deleted file mode 100644 index ba065feca1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d8.png deleted file mode 100644 index 3846703be9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e2.png deleted file mode 100644 index 8159c3ded7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e3.png deleted file mode 100644 index ee807b7a22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e4.png deleted file mode 100644 index 2f0518914e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e5.png deleted file mode 100644 index 6de0753a67..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e6.png deleted file mode 100644 index 45d37e64e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e7.png deleted file mode 100644 index 71e7ae7732..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e8.png deleted file mode 100644 index 8cb8e44291..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e9.png deleted file mode 100644 index 87fc451229..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ea.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ea.png deleted file mode 100644 index 560aa0c18f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0eb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0eb.png deleted file mode 100644 index 63912ea842..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ec.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ec.png deleted file mode 100644 index 14610a7d50..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ed.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ed.png deleted file mode 100644 index d92a08ba5f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ee.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ee.png deleted file mode 100644 index 4282cc73c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f7.png deleted file mode 100644 index 1518fc1fd2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f8.png deleted file mode 100644 index b0e65e92ba..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f9.png deleted file mode 100644 index 8c19f68522..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0fb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0fb.png deleted file mode 100644 index bf5ccffe25..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f0fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f103.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f103.png deleted file mode 100644 index 9109659682..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f103.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f108.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f108.png deleted file mode 100644 index 7c8ac013d2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f108.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f109.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f109.png deleted file mode 100644 index 575bf59894..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f109.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10a.png deleted file mode 100644 index ba845422e9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10b.png deleted file mode 100644 index b8ef3843ca..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10c.png deleted file mode 100644 index 369b5a06a4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10d.png deleted file mode 100644 index 0142771ca3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10e.png deleted file mode 100644 index 747b553fb5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f10e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f110.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f110.png deleted file mode 100644 index a37254ab78..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f110.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f111.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f111.png deleted file mode 100644 index 9a5308e9e3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f111.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f119.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f119.png deleted file mode 100644 index 4c0a31e474..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f119.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f11b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f11b.png deleted file mode 100644 index a98f49f192..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f11b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f126.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f126.png deleted file mode 100644 index ed82e80d39..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f126.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f127.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f127.png deleted file mode 100644 index 280eaff992..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f127.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f128.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f128.png deleted file mode 100644 index 47c2011fbf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f128.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f129.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f129.png deleted file mode 100644 index 690cd31f92..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f129.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12a.png deleted file mode 100644 index 7e57f81bb7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12b.png deleted file mode 100644 index 9e906428da..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12e.png deleted file mode 100644 index 7888df5c88..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12f.png deleted file mode 100644 index 1d07aee4d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f12f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f131.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f131.png deleted file mode 100644 index 3887627fcc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f131.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f133.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f133.png deleted file mode 100644 index 1df1fb490e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f133.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f136.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f136.png deleted file mode 100644 index bee35afbdc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f136.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f137.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f137.png deleted file mode 100644 index 90fdc234ed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f137.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f138.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f138.png deleted file mode 100644 index e2970f45b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f138.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f139.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f139.png deleted file mode 100644 index ddd27ebe39..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f139.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13a.png deleted file mode 100644 index bf843dd442..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13b.png deleted file mode 100644 index 12c9aab83a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13c.png deleted file mode 100644 index dc8d450a68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13d.png deleted file mode 100644 index a7dd42c7d4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13e.png deleted file mode 100644 index 88ee8c22f4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13f.png deleted file mode 100644 index e147cd9dd8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f13f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f140.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f140.png deleted file mode 100644 index f32993f4db..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f140.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f141.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f141.png deleted file mode 100644 index 11c2ea5761..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f141.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f142.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f142.png deleted file mode 100644 index 56733cc28a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f142.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f143.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f143.png deleted file mode 100644 index 24cbf33a4d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f143.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f146.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f146.png deleted file mode 100644 index c01f99175b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f146.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f147.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f147.png deleted file mode 100644 index b96e42f06d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f147.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f148.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f148.png deleted file mode 100644 index 77d2b93a9a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f148.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f149.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f149.png deleted file mode 100644 index 55825551de..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f149.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14a.png deleted file mode 100644 index 98f56a62b9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14b.png deleted file mode 100644 index 86c74d87ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14c.png deleted file mode 100644 index 559b877c7e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14d.png deleted file mode 100644 index 32fc4d1d8e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14e.png deleted file mode 100644 index 58794c1526..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14f.png deleted file mode 100644 index 4d3e0457ab..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f14f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f150.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f150.png deleted file mode 100644 index 4ee4b5808b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f150.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f151.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f151.png deleted file mode 100644 index 9ebe41f7ee..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f151.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f152.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f152.png deleted file mode 100644 index 004a1e4c1b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f152.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f153.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f153.png deleted file mode 100644 index 0a63de5136..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f153.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f154.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f154.png deleted file mode 100644 index 1745a29822..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f154.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f155.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f155.png deleted file mode 100644 index 1e3ba2b5f0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f155.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f156.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f156.png deleted file mode 100644 index e89374c4cb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f156.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f157.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f157.png deleted file mode 100644 index f890a54f4e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f157.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f158.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f158.png deleted file mode 100644 index 2b961fcf12..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f158.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f159.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f159.png deleted file mode 100644 index 3af5c796f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f159.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f15f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f15f.png deleted file mode 100644 index 59e419c5c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f15f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f161.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f161.png deleted file mode 100644 index 092636d80b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f161.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f163.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f163.png deleted file mode 100644 index e3605e153f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f163.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f164.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f164.png deleted file mode 100644 index dfba30abc9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f164.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f165.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f165.png deleted file mode 100644 index b2ababee49..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f165.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f166.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f166.png deleted file mode 100644 index 6c9aa39c3b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f166.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f167.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f167.png deleted file mode 100644 index 612f5ad0cd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f167.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f168.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f168.png deleted file mode 100644 index d37d46e1e4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f168.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f169.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f169.png deleted file mode 100644 index bafd0ec63a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f169.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16a.png deleted file mode 100644 index 9d11e743e2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16b.png deleted file mode 100644 index 330f6b9950..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16c.png deleted file mode 100644 index d3617a1125..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16d.png deleted file mode 100644 index c5fd9e2ba1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16e.png deleted file mode 100644 index 0b5192f33d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f16e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f175.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f175.png deleted file mode 100644 index a954e7e48f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f175.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f17f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f17f.png deleted file mode 100644 index 4796bfb064..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f17f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f180.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f180.png deleted file mode 100644 index e7280ab6c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f180.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f182.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f182.png deleted file mode 100644 index 9ef46ae1d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f182.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f191.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f191.png deleted file mode 100644 index ae3d4bdde7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f191.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f193.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f193.png deleted file mode 100644 index 0a2a4d6f79..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f193.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f19d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f19d.png deleted file mode 100644 index b96fbd1e6c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f19d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1ad.png deleted file mode 100644 index 5b7a0f9dc4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1cb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1cb.png deleted file mode 100644 index 6d308104dc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1cc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1cc.png deleted file mode 100644 index abcb6e64c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1d8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1d8.png deleted file mode 100644 index 0492156443..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1d9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1d9.png deleted file mode 100644 index 14a836099a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1db.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1db.png deleted file mode 100644 index 99f2e2e764..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f1db.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f20c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f20c.png deleted file mode 100644 index 5c1da121f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f20c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f20d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f20d.png deleted file mode 100644 index 61329c8eff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f20d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f210.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f210.png deleted file mode 100644 index e0af492f6b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f210.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f211.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f211.png deleted file mode 100644 index ebb66f0dc6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f211.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f22c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f22c.png deleted file mode 100644 index e3311514ad..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f22c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f22e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f22e.png deleted file mode 100644 index 5f0b32e1e8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f22e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f246.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f246.png deleted file mode 100644 index 135cc80bea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f246.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f259.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f259.png deleted file mode 100644 index 9867479c7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f259.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f260.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f260.png deleted file mode 100644 index 3dae605633..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f260.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f261.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f261.png deleted file mode 100644 index bcd8039343..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f261.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26b.png deleted file mode 100644 index f2632d8a18..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26c.png deleted file mode 100644 index f76c25be80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26d.png deleted file mode 100644 index 7d0cbf209f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26e.png deleted file mode 100644 index a2be788d1e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f26e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f270.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f270.png deleted file mode 100644 index 600db21e59..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f270.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f271.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f271.png deleted file mode 100644 index 4e96a107a6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f271.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f272.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f272.png deleted file mode 100644 index 40d88d6c54..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f272.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f28b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f28b.png deleted file mode 100644 index f8b20150b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f28b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f2b7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f2b7.png deleted file mode 100644 index ebc8ad2209..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f2b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f32a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f32a.png deleted file mode 100644 index 9401cdb32c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f32a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f384.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f384.png deleted file mode 100644 index ec7561f08d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f384.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f385.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f385.png deleted file mode 100644 index 666ba0aa69..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f385.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f386.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f386.png deleted file mode 100644 index a4b37dbff0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f386.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3b1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3b1.png deleted file mode 100644 index da6be2f33a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3cc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3cc.png deleted file mode 100644 index 1dfe119414..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3cd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3cd.png deleted file mode 100644 index 66d54daad9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3e2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3e2.png deleted file mode 100644 index 4bdcce2d64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3e7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3e7.png deleted file mode 100644 index 3c4275fcd8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f3e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f404.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f404.png deleted file mode 100644 index 0eca1ae087..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f404.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f405.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f405.png deleted file mode 100644 index a8e1576dd8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f405.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f406.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f406.png deleted file mode 100644 index 51ad71192a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f406.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f407.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f407.png deleted file mode 100644 index ee5a859bcb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f407.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f408.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f408.png deleted file mode 100644 index 0ea9f0cbb1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f408.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f413.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f413.png deleted file mode 100644 index 7f493ed694..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f413.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f427.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f427.png deleted file mode 100644 index 73702186c2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f427.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f439.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f439.png deleted file mode 100644 index 935292191d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f439.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f45e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f45e.png deleted file mode 100644 index 18a27961b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f45e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f45f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f45f.png deleted file mode 100644 index 080861eab3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f45f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f460.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f460.png deleted file mode 100644 index 86679ae473..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f460.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f461.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f461.png deleted file mode 100644 index ccb50f1de2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f461.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f462.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f462.png deleted file mode 100644 index e0da310229..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f462.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f463.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f463.png deleted file mode 100644 index 444ae6e52b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f463.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f464.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f464.png deleted file mode 100644 index d523dbc618..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f464.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f465.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f465.png deleted file mode 100644 index 153c9c7563..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f465.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f466.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f466.png deleted file mode 100644 index 33667dcbbb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f466.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f473.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f473.png deleted file mode 100644 index 98e84c9304..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f473.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f474.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f474.png deleted file mode 100644 index 1f1a094b6a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f474.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f475.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f475.png deleted file mode 100644 index dc5c4a1a18..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f475.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f476.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f476.png deleted file mode 100644 index b05b7d0497..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f476.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f47f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f47f.png deleted file mode 100644 index b45a8af4ed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f47f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f49a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f49a.png deleted file mode 100644 index 5b43d2867d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f49a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4a5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4a5.png deleted file mode 100644 index db28c243a5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4a9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4a9.png deleted file mode 100644 index d2bc75f3c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4aa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4aa.png deleted file mode 100644 index 3572192ff1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4be.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4be.png deleted file mode 100644 index 1f1fba5807..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4be.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4bf.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4bf.png deleted file mode 100644 index 7711856a88..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4c0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4c0.png deleted file mode 100644 index ccb1e1b04b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4c3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4c3.png deleted file mode 100644 index 7ca2360703..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f4c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f540.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f540.png deleted file mode 100644 index b8d6eed9fb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f540.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f552.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f552.png deleted file mode 100644 index 1f1452925f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f552.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56d.png deleted file mode 100644 index 337947e03c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56e.png deleted file mode 100644 index e6b5b252bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56f.png deleted file mode 100644 index 21a99f6832..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f56f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f570.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f570.png deleted file mode 100644 index 59c7110d7b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f570.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f571.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f571.png deleted file mode 100644 index a77a20479e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f571.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f572.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f572.png deleted file mode 100644 index ccee8d8fb6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f572.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f573.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f573.png deleted file mode 100644 index fdaaa09720..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f573.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f574.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f574.png deleted file mode 100644 index aa7fe0b2f1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f574.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f575.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f575.png deleted file mode 100644 index 700011eee0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f575.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f576.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f576.png deleted file mode 100644 index 9b0dd500bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f576.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f577.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f577.png deleted file mode 100644 index e2d0de9e11..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f577.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f578.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f578.png deleted file mode 100644 index d6992da742..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f578.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f579.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f579.png deleted file mode 100644 index 5faf7460a8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f579.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57a.png deleted file mode 100644 index b5a50ecb9c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57b.png deleted file mode 100644 index b560783685..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57c.png deleted file mode 100644 index f5e4b397e0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57d.png deleted file mode 100644 index 4731db4564..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57e.png deleted file mode 100644 index 83d70be890..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57f.png deleted file mode 100644 index 8eb641ff56..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f57f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f580.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f580.png deleted file mode 100644 index c747d99c32..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f580.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f581.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f581.png deleted file mode 100644 index f49e55c56d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f581.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f582.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f582.png deleted file mode 100644 index dab02fcd95..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f582.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f583.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f583.png deleted file mode 100644 index 93d1d0ff64..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f583.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f584.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f584.png deleted file mode 100644 index a327cd32b8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f584.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f585.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f585.png deleted file mode 100644 index c96a970d17..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f585.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f586.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f586.png deleted file mode 100644 index 015a97d180..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f586.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f587.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f587.png deleted file mode 100644 index db2fc943a0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f587.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f588.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f588.png deleted file mode 100644 index e56d3591c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f588.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f589.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f589.png deleted file mode 100644 index 163491c767..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f589.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58a.png deleted file mode 100644 index 4c8f03610a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58b.png deleted file mode 100644 index 076a196357..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58c.png deleted file mode 100644 index cc8405c8f8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58d.png deleted file mode 100644 index ea336f1aff..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58e.png deleted file mode 100644 index 432f9e34e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58f.png deleted file mode 100644 index aafd447385..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f58f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f590.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f590.png deleted file mode 100644 index 506d6b58b7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f590.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f591.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f591.png deleted file mode 100644 index 756a6d8b7a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f591.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f592.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f592.png deleted file mode 100644 index f0a445ea52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f592.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f593.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f593.png deleted file mode 100644 index dcbbcd77d5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f593.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f594.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f594.png deleted file mode 100644 index 85b4d02f02..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f594.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f595.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f595.png deleted file mode 100644 index 945bd0227f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f595.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f596.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f596.png deleted file mode 100644 index 220e2d5ac7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f596.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f597.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f597.png deleted file mode 100644 index 5968b3352d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f597.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f598.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f598.png deleted file mode 100644 index 0b7d92ae86..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f598.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f599.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f599.png deleted file mode 100644 index ce63eadd3d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f599.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59a.png deleted file mode 100644 index 09618de112..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59b.png deleted file mode 100644 index 01dba88153..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59c.png deleted file mode 100644 index ceda1e2127..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59d.png deleted file mode 100644 index a106fb8bf4..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59e.png deleted file mode 100644 index 1d63f81088..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59f.png deleted file mode 100644 index 6eace1967d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f59f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a0.png deleted file mode 100644 index cfb7cc2f68..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a1.png deleted file mode 100644 index 6b17381b3f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a2.png deleted file mode 100644 index f7bded396c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a3.png deleted file mode 100644 index 1b81d89567..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a4.png deleted file mode 100644 index 0aa190d283..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a5.png deleted file mode 100644 index 327ad2ce39..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a6.png deleted file mode 100644 index 52e66a39c7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a7.png deleted file mode 100644 index 07598832ea..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a8.png deleted file mode 100644 index b832dc1b52..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a9.png deleted file mode 100644 index c8c8d0065e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5aa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5aa.png deleted file mode 100644 index e81efd9d23..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ab.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ab.png deleted file mode 100644 index 00a9f939dd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ac.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ac.png deleted file mode 100644 index b7afc1279f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ad.png deleted file mode 100644 index c37b5e1057..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ae.png deleted file mode 100644 index e78248a72a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5b0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5b0.png deleted file mode 100644 index ffc4e84da9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5e7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5e7.png deleted file mode 100644 index 0cc27004eb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ed.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ed.png deleted file mode 100644 index 5031ecae13..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ee.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ee.png deleted file mode 100644 index 8e5a05aa36..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ef.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ef.png deleted file mode 100644 index ede5aed2cc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f2.png deleted file mode 100644 index 5e3306a54e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f3.png deleted file mode 100644 index b75b3a2e6f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f4.png deleted file mode 100644 index fedc14e3c1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f5.png deleted file mode 100644 index 8143057b42..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f6.png deleted file mode 100644 index 1af8081b12..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f7.png deleted file mode 100644 index 0022d104f2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f8.png deleted file mode 100644 index 022ebe28c2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f9.png deleted file mode 100644 index 4655c67a11..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fa.png deleted file mode 100644 index 84858eaabc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fb.png deleted file mode 100644 index cdb5b5b9f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fc.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fc.png deleted file mode 100644 index bda47bccd2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fd.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fd.png deleted file mode 100644 index f9e0d3d9c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fe.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fe.png deleted file mode 100644 index 0edcb9475a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5fe.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ff.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ff.png deleted file mode 100644 index 3cfdfa86f3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f5ff.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f600.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f600.png deleted file mode 100644 index 1520c264d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f600.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f601.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f601.png deleted file mode 100644 index 2fbbda552d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f601.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f602.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f602.png deleted file mode 100644 index 3c954b8b80..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f602.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f603.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f603.png deleted file mode 100644 index efe4ef8380..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f603.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f604.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f604.png deleted file mode 100644 index 7bfbccc50e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f604.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f605.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f605.png deleted file mode 100644 index 002f6e2a37..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f605.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f606.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f606.png deleted file mode 100644 index e78f4a8ebb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f606.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f607.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f607.png deleted file mode 100644 index bc8972201e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f607.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f608.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f608.png deleted file mode 100644 index 3ec4f4fda2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f608.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f618.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f618.png deleted file mode 100644 index 0ba22c1330..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f618.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f619.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f619.png deleted file mode 100644 index 38100931e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f619.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61a.png deleted file mode 100644 index 939c5d5fcf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61b.png deleted file mode 100644 index 10553bb2e5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61c.png deleted file mode 100644 index 33b7b7b789..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61d.png deleted file mode 100644 index 6705758051..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61e.png deleted file mode 100644 index 8a027bf464..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61f.png deleted file mode 100644 index cd99afda00..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f61f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f620.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f620.png deleted file mode 100644 index c8e3cab523..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f620.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f623.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f623.png deleted file mode 100644 index d643754147..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f623.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f624.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f624.png deleted file mode 100644 index a2f0f48d81..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f624.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f63c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f63c.png deleted file mode 100644 index 446afd41ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f63c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f657.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f657.png deleted file mode 100644 index 87a7d1409e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f657.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f658.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f658.png deleted file mode 100644 index 4b1c273e97..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f658.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f659.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f659.png deleted file mode 100644 index d6e393884c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f659.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65a.png deleted file mode 100644 index 4bdb78aa6e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65b.png deleted file mode 100644 index aa0ecb1637..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65c.png deleted file mode 100644 index 164de6c435..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f65c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f69e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f69e.png deleted file mode 100644 index 93c4ba915e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f69e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6a9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6a9.png deleted file mode 100644 index 3e047f6b2f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6b8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6b8.png deleted file mode 100644 index 8cc04beaf7..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6ba.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6ba.png deleted file mode 100644 index 47e522bd5e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6fa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6fa.png deleted file mode 100644 index 30d9e407c8..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f6fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f712.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f712.png deleted file mode 100644 index 084d5afdce..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f712.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f714.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f714.png deleted file mode 100644 index 06eb872885..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f714.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f715.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f715.png deleted file mode 100644 index e5883817f1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f715.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f716.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f716.png deleted file mode 100644 index 9351abec48..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f716.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71a.png deleted file mode 100644 index 38e5120245..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71c.png deleted file mode 100644 index 85ad1734f1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71d.png deleted file mode 100644 index 12dba63227..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71e.png deleted file mode 100644 index 90ea71dfed..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f71e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f738.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f738.png deleted file mode 100644 index 6d2a25a555..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f738.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f739.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f739.png deleted file mode 100644 index b0f6df7157..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f739.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73d.png deleted file mode 100644 index 341fe6ad1c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73e.png deleted file mode 100644 index f817e55d71..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73f.png deleted file mode 100644 index 26e94e23c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f73f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f740.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f740.png deleted file mode 100644 index 81d72322c6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f740.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f741.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f741.png deleted file mode 100644 index 0958e58a8e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f741.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f742.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f742.png deleted file mode 100644 index 03863be8c0..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f742.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f743.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f743.png deleted file mode 100644 index 5c46c1e3c5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f743.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f744.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f744.png deleted file mode 100644 index a3bedba8bd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f744.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f745.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f745.png deleted file mode 100644 index 4c900a1e2a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f745.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f746.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f746.png deleted file mode 100644 index b7343110e1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f746.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f763.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f763.png deleted file mode 100644 index c9a070b607..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f763.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f781.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f781.png deleted file mode 100644 index 8a58c21fbc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f781.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f785.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f785.png deleted file mode 100644 index 4277006b8c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f785.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78a.png deleted file mode 100644 index 718151d270..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78b.png deleted file mode 100644 index 719f1fe253..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78c.png deleted file mode 100644 index 6b42743072..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78d.png deleted file mode 100644 index 729a8be03b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f78d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ad.png deleted file mode 100644 index 29845d8f9b..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ae.png deleted file mode 100644 index 04b1f09a56..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7af.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7af.png deleted file mode 100644 index feca25634e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b0.png deleted file mode 100644 index 31ba01bc7f..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b1.png deleted file mode 100644 index 804b2be7c9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b2.png deleted file mode 100644 index 0da0505556..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b3.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b3.png deleted file mode 100644 index edcbd3a5f6..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b4.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b4.png deleted file mode 100644 index 0da0505556..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b5.png deleted file mode 100644 index 2d9a465d22..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b6.png deleted file mode 100644 index 16fba1a6bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b7.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b7.png deleted file mode 100644 index 9eee74d35d..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b8.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b8.png deleted file mode 100644 index f8200337ef..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b9.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b9.png deleted file mode 100644 index 27e53969d3..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ba.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ba.png deleted file mode 100644 index 16fba1a6bf..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7bb.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7bb.png deleted file mode 100644 index d86f0e1523..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ed.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ed.png deleted file mode 100644 index 341d68b4fc..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ee.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ee.png deleted file mode 100644 index 5fc7222bac..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f7ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f809.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f809.png deleted file mode 100644 index 7eab9718fd..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f809.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83b.png deleted file mode 100644 index c6e470a75a..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83d.png deleted file mode 100644 index 81ac2333b1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83e.png deleted file mode 100644 index 3bde9b2691..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83f.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83f.png deleted file mode 100644 index 6b5a10c663..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f83f.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f847.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f847.png deleted file mode 100644 index 8cd125667e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f847.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87b.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87b.png deleted file mode 100644 index 63c7b7e792..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87b.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87c.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87c.png deleted file mode 100644 index eb9b40691e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87c.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87d.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87d.png deleted file mode 100644 index 0735210b3e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87d.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87e.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87e.png deleted file mode 100644 index 53891986b5..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f87e.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f89a.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f89a.png deleted file mode 100644 index b86bde13b2..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f89a.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8a5.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8a5.png deleted file mode 100644 index 4ceea362ae..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8a6.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8a6.png deleted file mode 100644 index ffa0f614d1..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8aa.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8aa.png deleted file mode 100644 index ae60e97c6c..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ab.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ab.png deleted file mode 100644 index 3e6551dffb..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ac.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ac.png deleted file mode 100644 index 6abd85f05e..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ad.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ad.png deleted file mode 100644 index fbc8fec277..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ae.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ae.png deleted file mode 100644 index 78d937b445..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8af.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8af.png deleted file mode 100644 index dd20beff28..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8af.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b0.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b0.png deleted file mode 100644 index 5b92049587..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b1.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b1.png deleted file mode 100644 index fdaf220532..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b2.png b/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b2.png deleted file mode 100644 index da2dc90ec9..0000000000 Binary files a/hub/apps/design/style/images/glyphs/segoe-mdl-2/f8b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/hanging-text-alignment.psd b/hub/apps/design/style/images/hanging-text-alignment.psd deleted file mode 100644 index 871a9ed6a6..0000000000 Binary files a/hub/apps/design/style/images/hanging-text-alignment.psd and /dev/null differ diff --git a/hub/apps/design/style/images/header-acrylic.svg b/hub/apps/design/style/images/header-acrylic.svg deleted file mode 100644 index 8334ce22bd..0000000000 --- a/hub/apps/design/style/images/header-acrylic.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/header-color.svg b/hub/apps/design/style/images/header-color.svg deleted file mode 100644 index e0e8698c42..0000000000 --- a/hub/apps/design/style/images/header-color.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/header-icons.svg b/hub/apps/design/style/images/header-icons.svg deleted file mode 100644 index db4ac9223e..0000000000 --- a/hub/apps/design/style/images/header-icons.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/header-reveal-highlight.svg b/hub/apps/design/style/images/header-reveal-highlight.svg deleted file mode 100644 index 4011f960df..0000000000 --- a/hub/apps/design/style/images/header-reveal-highlight.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/header-round-corners.jpg b/hub/apps/design/style/images/header-round-corners.jpg deleted file mode 100644 index 19d688d384..0000000000 Binary files a/hub/apps/design/style/images/header-round-corners.jpg and /dev/null differ diff --git a/hub/apps/design/style/images/header-sound.svg b/hub/apps/design/style/images/header-sound.svg deleted file mode 100644 index d3115d196c..0000000000 --- a/hub/apps/design/style/images/header-sound.svg +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/header-typography.svg b/hub/apps/design/style/images/header-typography.svg deleted file mode 100644 index 0897f57c40..0000000000 --- a/hub/apps/design/style/images/header-typography.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/header-writing-style.gif b/hub/apps/design/style/images/header-writing-style.gif deleted file mode 100644 index 9f83686358..0000000000 Binary files a/hub/apps/design/style/images/header-writing-style.gif and /dev/null differ diff --git a/hub/apps/design/style/images/high-contrast-settings.png b/hub/apps/design/style/images/high-contrast-settings.png deleted file mode 100644 index e83f49a0fe..0000000000 Binary files a/hub/apps/design/style/images/high-contrast-settings.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/app-bar-desktop.svg b/hub/apps/design/style/images/icons/app-bar-desktop.svg deleted file mode 100644 index d44f6d7f5f..0000000000 --- a/hub/apps/design/style/images/icons/app-bar-desktop.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/icons/bitmap-image.png b/hub/apps/design/style/images/icons/bitmap-image.png deleted file mode 100644 index 2ef1f0cd1f..0000000000 Binary files a/hub/apps/design/style/images/icons/bitmap-image.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/create-icon-command-bar.svg b/hub/apps/design/style/images/icons/create-icon-command-bar.svg deleted file mode 100644 index 2a2b3c28b2..0000000000 --- a/hub/apps/design/style/images/icons/create-icon-command-bar.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/icons/create-icon-step-1.svg b/hub/apps/design/style/images/icons/create-icon-step-1.svg deleted file mode 100644 index 0fb057d60b..0000000000 --- a/hub/apps/design/style/images/icons/create-icon-step-1.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/icons/display-settings-screen.png b/hub/apps/design/style/images/icons/display-settings-screen.png deleted file mode 100644 index d9d1bc4f2a..0000000000 Binary files a/hub/apps/design/style/images/icons/display-settings-screen.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/geometry-objects.png b/hub/apps/design/style/images/icons/geometry-objects.png deleted file mode 100644 index a67a07b664..0000000000 Binary files a/hub/apps/design/style/images/icons/geometry-objects.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/header-icons.png b/hub/apps/design/style/images/icons/header-icons.png deleted file mode 100644 index 2d80d1007d..0000000000 Binary files a/hub/apps/design/style/images/icons/header-icons.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/icon-bad-example.png b/hub/apps/design/style/images/icons/icon-bad-example.png deleted file mode 100644 index 00d18d5da4..0000000000 Binary files a/hub/apps/design/style/images/icons/icon-bad-example.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/icon-scale.gif b/hub/apps/design/style/images/icons/icon-scale.gif deleted file mode 100644 index cf170fb928..0000000000 Binary files a/hub/apps/design/style/images/icons/icon-scale.gif and /dev/null differ diff --git a/hub/apps/design/style/images/icons/icon-shopping-cart.svg b/hub/apps/design/style/images/icons/icon-shopping-cart.svg deleted file mode 100644 index 75612718da..0000000000 --- a/hub/apps/design/style/images/icons/icon-shopping-cart.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/icons/icon-text-step-2.svg b/hub/apps/design/style/images/icons/icon-text-step-2.svg deleted file mode 100644 index 8051b3ec7c..0000000000 --- a/hub/apps/design/style/images/icons/icon-text-step-2.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/icons/icons-concept.svg b/hub/apps/design/style/images/icons/icons-concept.svg deleted file mode 100644 index 5a98a71057..0000000000 --- a/hub/apps/design/style/images/icons/icons-concept.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/icons/icons-standard.svg b/hub/apps/design/style/images/icons/icons-standard.svg deleted file mode 100644 index 0581a370c2..0000000000 --- a/hub/apps/design/style/images/icons/icons-standard.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/icons/inside-icons.png b/hub/apps/design/style/images/icons/inside-icons.png deleted file mode 100644 index 44aa3a69e8..0000000000 Binary files a/hub/apps/design/style/images/icons/inside-icons.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/outside-icons.jpg b/hub/apps/design/style/images/icons/outside-icons.jpg deleted file mode 100644 index cafabbd36f..0000000000 Binary files a/hub/apps/design/style/images/icons/outside-icons.jpg and /dev/null differ diff --git a/hub/apps/design/style/images/icons/predefined-icon.png b/hub/apps/design/style/images/icons/predefined-icon.png deleted file mode 100644 index 325e6a7605..0000000000 Binary files a/hub/apps/design/style/images/icons/predefined-icon.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/vs-manfiest-designer-visual-assets.png b/hub/apps/design/style/images/icons/vs-manfiest-designer-visual-assets.png deleted file mode 100644 index e059245dc2..0000000000 Binary files a/hub/apps/design/style/images/icons/vs-manfiest-designer-visual-assets.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/vs-manfiest-designer.png b/hub/apps/design/style/images/icons/vs-manfiest-designer.png deleted file mode 100644 index fc0ffa98f3..0000000000 Binary files a/hub/apps/design/style/images/icons/vs-manfiest-designer.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/vs-solution-explorer.png b/hub/apps/design/style/images/icons/vs-solution-explorer.png deleted file mode 100644 index 24d2108853..0000000000 Binary files a/hub/apps/design/style/images/icons/vs-solution-explorer.png and /dev/null differ diff --git a/hub/apps/design/style/images/icons/wingdings.png b/hub/apps/design/style/images/icons/wingdings.png deleted file mode 100644 index 58d57caa00..0000000000 Binary files a/hub/apps/design/style/images/icons/wingdings.png and /dev/null differ diff --git a/hub/apps/design/style/images/kerning-tracking.psd b/hub/apps/design/style/images/kerning-tracking.psd deleted file mode 100644 index 09855d18a3..0000000000 Binary files a/hub/apps/design/style/images/kerning-tracking.psd and /dev/null differ diff --git a/hub/apps/design/style/images/line-endings.psd b/hub/apps/design/style/images/line-endings.psd deleted file mode 100644 index ce991af35e..0000000000 Binary files a/hub/apps/design/style/images/line-endings.psd and /dev/null differ diff --git a/hub/apps/design/style/images/line-height-stacking.psd b/hub/apps/design/style/images/line-height-stacking.psd deleted file mode 100644 index f7478145c9..0000000000 Binary files a/hub/apps/design/style/images/line-height-stacking.psd and /dev/null differ diff --git a/hub/apps/design/style/images/line-spacing.psd b/hub/apps/design/style/images/line-spacing.psd deleted file mode 100644 index 7673f594eb..0000000000 Binary files a/hub/apps/design/style/images/line-spacing.psd and /dev/null differ diff --git a/hub/apps/design/style/images/luminosity-vs-tint.png b/hub/apps/design/style/images/luminosity-vs-tint.png deleted file mode 100644 index b2e23f6bfd..0000000000 Binary files a/hub/apps/design/style/images/luminosity-vs-tint.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-card-content.png b/hub/apps/design/style/images/materials/mica-card-content.png deleted file mode 100644 index 838ef9df91..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-card-content.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-dark-theme.png b/hub/apps/design/style/images/materials/mica-dark-theme.png deleted file mode 100644 index 714dbfbd85..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-dark-theme.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-header.png b/hub/apps/design/style/images/materials/mica-header.png deleted file mode 100644 index 5938b00336..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-header.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-l-content.png b/hub/apps/design/style/images/materials/mica-l-content.png deleted file mode 100644 index 12fa11f101..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-l-content.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-left-card.png b/hub/apps/design/style/images/materials/mica-left-card.png deleted file mode 100644 index a0e0ac46e3..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-left-card.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-light-navview.png b/hub/apps/design/style/images/materials/mica-light-navview.png deleted file mode 100644 index fd20404fdf..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-light-navview.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-light-theme.png b/hub/apps/design/style/images/materials/mica-light-theme.png deleted file mode 100644 index c099a1ed2d..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-light-theme.png and /dev/null differ diff --git a/hub/apps/design/style/images/materials/mica-top.png b/hub/apps/design/style/images/materials/mica-top.png deleted file mode 100644 index b3f954958b..0000000000 Binary files a/hub/apps/design/style/images/materials/mica-top.png and /dev/null differ diff --git a/hub/apps/design/style/images/mica-alt-tabs.png b/hub/apps/design/style/images/mica-alt-tabs.png deleted file mode 100644 index 8d5ff40529..0000000000 Binary files a/hub/apps/design/style/images/mica-alt-tabs.png and /dev/null differ diff --git a/hub/apps/design/style/images/mica-tabs.png b/hub/apps/design/style/images/mica-tabs.png deleted file mode 100644 index caf6adb121..0000000000 Binary files a/hub/apps/design/style/images/mica-tabs.png and /dev/null differ diff --git a/hub/apps/design/style/images/news_and_weather_patterns_16_progress_bar.psd b/hub/apps/design/style/images/news_and_weather_patterns_16_progress_bar.psd deleted file mode 100644 index 2dfc23e52c..0000000000 Binary files a/hub/apps/design/style/images/news_and_weather_patterns_16_progress_bar.psd and /dev/null differ diff --git a/hub/apps/design/style/images/paragraphs.psd b/hub/apps/design/style/images/paragraphs.psd deleted file mode 100644 index d376b260ff..0000000000 Binary files a/hub/apps/design/style/images/paragraphs.psd and /dev/null differ diff --git a/hub/apps/design/style/images/productivity_6_list_layout_new.psd b/hub/apps/design/style/images/productivity_6_list_layout_new.psd deleted file mode 100644 index ac5748576d..0000000000 Binary files a/hub/apps/design/style/images/productivity_6_list_layout_new.psd and /dev/null differ diff --git a/hub/apps/design/style/images/progress_changing.psd b/hub/apps/design/style/images/progress_changing.psd deleted file mode 100644 index 5d355f1a58..0000000000 Binary files a/hub/apps/design/style/images/progress_changing.psd and /dev/null differ diff --git a/hub/apps/design/style/images/radiobutton_vs_dropdownlist.psd b/hub/apps/design/style/images/radiobutton_vs_dropdownlist.psd deleted file mode 100644 index 91560a9a15..0000000000 Binary files a/hub/apps/design/style/images/radiobutton_vs_dropdownlist.psd and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/autosuggest.png b/hub/apps/design/style/images/rounded-corner/autosuggest.png deleted file mode 100644 index a6233f992f..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/autosuggest.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/bars.png b/hub/apps/design/style/images/rounded-corner/bars.png deleted file mode 100644 index 8d5ee03781..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/bars.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/button.png b/hub/apps/design/style/images/rounded-corner/button.png deleted file mode 100644 index e6a61d58c5..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/button.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/custom-checkbox.png b/hub/apps/design/style/images/rounded-corner/custom-checkbox.png deleted file mode 100644 index c723f4e379..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/custom-checkbox.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/default-checkbox.png b/hub/apps/design/style/images/rounded-corner/default-checkbox.png deleted file mode 100644 index 93eabebb0d..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/default-checkbox.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/flyout.png b/hub/apps/design/style/images/rounded-corner/flyout.png deleted file mode 100644 index 247a2370fc..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/flyout.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/larger-corner-radius.png b/hub/apps/design/style/images/rounded-corner/larger-corner-radius.png deleted file mode 100644 index c135b53072..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/larger-corner-radius.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/my-button.png b/hub/apps/design/style/images/rounded-corner/my-button.png deleted file mode 100644 index 5bc804cd64..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/my-button.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/scrollbar.png b/hub/apps/design/style/images/rounded-corner/scrollbar.png deleted file mode 100644 index 1a64584278..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/scrollbar.png and /dev/null differ diff --git a/hub/apps/design/style/images/rounded-corner/split-button-2.png b/hub/apps/design/style/images/rounded-corner/split-button-2.png deleted file mode 100644 index e64d2ada82..0000000000 Binary files a/hub/apps/design/style/images/rounded-corner/split-button-2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/EDE0.png b/hub/apps/design/style/images/segoe-mdl/EDE0.png deleted file mode 100644 index 3fc0280376..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/EDE0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/EE47.png b/hub/apps/design/style/images/segoe-mdl/EE47.png deleted file mode 100644 index 96551dc616..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/EE47.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/EE49.png b/hub/apps/design/style/images/segoe-mdl/EE49.png deleted file mode 100644 index 8a40cf7f93..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/EE49.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/F0EF.png b/hub/apps/design/style/images/segoe-mdl/F0EF.png deleted file mode 100644 index 408b7cade8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/F0EF.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/F19E.png b/hub/apps/design/style/images/segoe-mdl/F19E.png deleted file mode 100644 index 90b7507793..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/F19E.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/F19F.png b/hub/apps/design/style/images/segoe-mdl/F19F.png deleted file mode 100644 index 0653c11c10..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/F19F.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/F354.png b/hub/apps/design/style/images/segoe-mdl/F354.png deleted file mode 100644 index d5ad1a919e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/F354.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/F8B3.png b/hub/apps/design/style/images/segoe-mdl/F8B3.png deleted file mode 100644 index 2adec9a63b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/F8B3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e700.png b/hub/apps/design/style/images/segoe-mdl/e700.png deleted file mode 100644 index 04677e7498..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e700.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e701.png b/hub/apps/design/style/images/segoe-mdl/e701.png deleted file mode 100644 index 89784a7eb6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e701.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e702.png b/hub/apps/design/style/images/segoe-mdl/e702.png deleted file mode 100644 index 809a053d0a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e702.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e703.png b/hub/apps/design/style/images/segoe-mdl/e703.png deleted file mode 100644 index 9eaee11938..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e703.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e704.png b/hub/apps/design/style/images/segoe-mdl/e704.png deleted file mode 100644 index 294f853157..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e704.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e705.png b/hub/apps/design/style/images/segoe-mdl/e705.png deleted file mode 100644 index 1cbc744e33..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e705.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e706.png b/hub/apps/design/style/images/segoe-mdl/e706.png deleted file mode 100644 index b9d6918562..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e706.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e707.png b/hub/apps/design/style/images/segoe-mdl/e707.png deleted file mode 100644 index bc7515c20f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e707.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e708.png b/hub/apps/design/style/images/segoe-mdl/e708.png deleted file mode 100644 index c71b743615..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e708.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e709.png b/hub/apps/design/style/images/segoe-mdl/e709.png deleted file mode 100644 index 3ca3d49b5a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e709.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e70a.png b/hub/apps/design/style/images/segoe-mdl/e70a.png deleted file mode 100644 index 3251c89e45..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e70a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e70b.png b/hub/apps/design/style/images/segoe-mdl/e70b.png deleted file mode 100644 index 8081cf72af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e70b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e70c.png b/hub/apps/design/style/images/segoe-mdl/e70c.png deleted file mode 100644 index 5d7123283b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e70c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e70d.png b/hub/apps/design/style/images/segoe-mdl/e70d.png deleted file mode 100644 index c7cab80b0d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e70d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e70e.png b/hub/apps/design/style/images/segoe-mdl/e70e.png deleted file mode 100644 index 6f16ba4938..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e70e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e70f.png b/hub/apps/design/style/images/segoe-mdl/e70f.png deleted file mode 100644 index 67275afb79..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e70f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e710.png b/hub/apps/design/style/images/segoe-mdl/e710.png deleted file mode 100644 index c94ab88e61..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e710.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e711.png b/hub/apps/design/style/images/segoe-mdl/e711.png deleted file mode 100644 index 51dc9c948b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e711.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e712.png b/hub/apps/design/style/images/segoe-mdl/e712.png deleted file mode 100644 index b57c1ec01d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e712.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e713.png b/hub/apps/design/style/images/segoe-mdl/e713.png deleted file mode 100644 index 2704e43604..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e713.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e714.png b/hub/apps/design/style/images/segoe-mdl/e714.png deleted file mode 100644 index e62b2c2c15..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e714.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e715.png b/hub/apps/design/style/images/segoe-mdl/e715.png deleted file mode 100644 index 67a7677f19..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e715.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e716.png b/hub/apps/design/style/images/segoe-mdl/e716.png deleted file mode 100644 index 9023fbd4c0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e716.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e717.png b/hub/apps/design/style/images/segoe-mdl/e717.png deleted file mode 100644 index 76b8b1fca8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e717.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e718.png b/hub/apps/design/style/images/segoe-mdl/e718.png deleted file mode 100644 index b906139e0d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e718.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e719.png b/hub/apps/design/style/images/segoe-mdl/e719.png deleted file mode 100644 index 70bed04a08..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e719.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e71a.png b/hub/apps/design/style/images/segoe-mdl/e71a.png deleted file mode 100644 index 675d6331e2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e71a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e71b.png b/hub/apps/design/style/images/segoe-mdl/e71b.png deleted file mode 100644 index 4f586f9e62..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e71b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e71c.png b/hub/apps/design/style/images/segoe-mdl/e71c.png deleted file mode 100644 index a2e5e45dac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e71c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e71d.png b/hub/apps/design/style/images/segoe-mdl/e71d.png deleted file mode 100644 index 8fb1ce1235..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e71d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e71e.png b/hub/apps/design/style/images/segoe-mdl/e71e.png deleted file mode 100644 index aaa154ae55..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e71e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e71f.png b/hub/apps/design/style/images/segoe-mdl/e71f.png deleted file mode 100644 index d52ec46765..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e71f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e720.png b/hub/apps/design/style/images/segoe-mdl/e720.png deleted file mode 100644 index 44a2b67677..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e720.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e721.png b/hub/apps/design/style/images/segoe-mdl/e721.png deleted file mode 100644 index fa67e03853..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e721.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e722.png b/hub/apps/design/style/images/segoe-mdl/e722.png deleted file mode 100644 index 84ac64c1f4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e722.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e723.png b/hub/apps/design/style/images/segoe-mdl/e723.png deleted file mode 100644 index 6ac0845cdf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e723.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e724.png b/hub/apps/design/style/images/segoe-mdl/e724.png deleted file mode 100644 index fa68814f3f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e724.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e725.png b/hub/apps/design/style/images/segoe-mdl/e725.png deleted file mode 100644 index 8ab8b928be..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e725.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e726.png b/hub/apps/design/style/images/segoe-mdl/e726.png deleted file mode 100644 index 30d3ffb6f9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e726.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e727.png b/hub/apps/design/style/images/segoe-mdl/e727.png deleted file mode 100644 index c6890ab3ba..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e727.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e728.png b/hub/apps/design/style/images/segoe-mdl/e728.png deleted file mode 100644 index a1a32d8daa..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e728.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e729.png b/hub/apps/design/style/images/segoe-mdl/e729.png deleted file mode 100644 index 2e0b79899b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e729.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e72a.png b/hub/apps/design/style/images/segoe-mdl/e72a.png deleted file mode 100644 index 5712776264..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e72a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e72b.png b/hub/apps/design/style/images/segoe-mdl/e72b.png deleted file mode 100644 index 79c92abd5a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e72b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e72c.png b/hub/apps/design/style/images/segoe-mdl/e72c.png deleted file mode 100644 index 2534b0a8ee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e72c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e72d.png b/hub/apps/design/style/images/segoe-mdl/e72d.png deleted file mode 100644 index 6ab4e20c20..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e72d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e72e.png b/hub/apps/design/style/images/segoe-mdl/e72e.png deleted file mode 100644 index 008562d756..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e72e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e730.png b/hub/apps/design/style/images/segoe-mdl/e730.png deleted file mode 100644 index eb5f7499b1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e730.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e731.png b/hub/apps/design/style/images/segoe-mdl/e731.png deleted file mode 100644 index 58691580b3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e731.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e734.png b/hub/apps/design/style/images/segoe-mdl/e734.png deleted file mode 100644 index 0e54447d74..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e734.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e735.png b/hub/apps/design/style/images/segoe-mdl/e735.png deleted file mode 100644 index 23409d0a63..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e735.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e736.png b/hub/apps/design/style/images/segoe-mdl/e736.png deleted file mode 100644 index d78a78d126..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e736.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e737.png b/hub/apps/design/style/images/segoe-mdl/e737.png deleted file mode 100644 index fee91fdba1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e737.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e738.png b/hub/apps/design/style/images/segoe-mdl/e738.png deleted file mode 100644 index b8554ad511..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e738.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e739.png b/hub/apps/design/style/images/segoe-mdl/e739.png deleted file mode 100644 index 48fdf88d0d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e739.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e73a.png b/hub/apps/design/style/images/segoe-mdl/e73a.png deleted file mode 100644 index 6897acfb2d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e73a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e73b.png b/hub/apps/design/style/images/segoe-mdl/e73b.png deleted file mode 100644 index c43af09afd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e73b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e73c.png b/hub/apps/design/style/images/segoe-mdl/e73c.png deleted file mode 100644 index e024cee154..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e73c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e73d.png b/hub/apps/design/style/images/segoe-mdl/e73d.png deleted file mode 100644 index 8a28a3afe7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e73d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e73e.png b/hub/apps/design/style/images/segoe-mdl/e73e.png deleted file mode 100644 index df64a52df7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e73e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e73f.png b/hub/apps/design/style/images/segoe-mdl/e73f.png deleted file mode 100644 index 92261a9625..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e73f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e740.png b/hub/apps/design/style/images/segoe-mdl/e740.png deleted file mode 100644 index 2d19956f37..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e740.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e741.png b/hub/apps/design/style/images/segoe-mdl/e741.png deleted file mode 100644 index d29fbcf0af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e741.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e742.png b/hub/apps/design/style/images/segoe-mdl/e742.png deleted file mode 100644 index 0f006be676..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e742.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e743.png b/hub/apps/design/style/images/segoe-mdl/e743.png deleted file mode 100644 index 711f0674db..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e743.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e744.png b/hub/apps/design/style/images/segoe-mdl/e744.png deleted file mode 100644 index fc143f4b60..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e744.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e745.png b/hub/apps/design/style/images/segoe-mdl/e745.png deleted file mode 100644 index 4983b3b673..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e745.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e746.png b/hub/apps/design/style/images/segoe-mdl/e746.png deleted file mode 100644 index e3c2e3d599..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e746.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e747.png b/hub/apps/design/style/images/segoe-mdl/e747.png deleted file mode 100644 index c43af09afd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e747.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e748.png b/hub/apps/design/style/images/segoe-mdl/e748.png deleted file mode 100644 index c5e359afa5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e748.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e749.png b/hub/apps/design/style/images/segoe-mdl/e749.png deleted file mode 100644 index a947ad0088..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e749.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e74a.png b/hub/apps/design/style/images/segoe-mdl/e74a.png deleted file mode 100644 index b7d8729154..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e74a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e74b.png b/hub/apps/design/style/images/segoe-mdl/e74b.png deleted file mode 100644 index c4ac28bdc4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e74b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e74c.png b/hub/apps/design/style/images/segoe-mdl/e74c.png deleted file mode 100644 index 8eb1c631d7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e74c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e74d.png b/hub/apps/design/style/images/segoe-mdl/e74d.png deleted file mode 100644 index d0520ac487..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e74d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e74e.png b/hub/apps/design/style/images/segoe-mdl/e74e.png deleted file mode 100644 index c9074bd488..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e74e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e74f.png b/hub/apps/design/style/images/segoe-mdl/e74f.png deleted file mode 100644 index 8a8527d4f4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e74f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e750.png b/hub/apps/design/style/images/segoe-mdl/e750.png deleted file mode 100644 index 1efbdd49cd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e750.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e751.png b/hub/apps/design/style/images/segoe-mdl/e751.png deleted file mode 100644 index 86eaecf8c8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e751.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e752.png b/hub/apps/design/style/images/segoe-mdl/e752.png deleted file mode 100644 index 91e0b8fd69..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e752.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e753.png b/hub/apps/design/style/images/segoe-mdl/e753.png deleted file mode 100644 index d8eaf40e7a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e753.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e754.png b/hub/apps/design/style/images/segoe-mdl/e754.png deleted file mode 100644 index 9851b958ac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e754.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e755.png b/hub/apps/design/style/images/segoe-mdl/e755.png deleted file mode 100644 index eb54f28d5a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e755.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e756.png b/hub/apps/design/style/images/segoe-mdl/e756.png deleted file mode 100644 index c1da7b2c40..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e756.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e759.png b/hub/apps/design/style/images/segoe-mdl/e759.png deleted file mode 100644 index 3640cc1643..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e759.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e75a.png b/hub/apps/design/style/images/segoe-mdl/e75a.png deleted file mode 100644 index 7d6d0c1de9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e75a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e75b.png b/hub/apps/design/style/images/segoe-mdl/e75b.png deleted file mode 100644 index b56bb617dd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e75b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e75c.png b/hub/apps/design/style/images/segoe-mdl/e75c.png deleted file mode 100644 index abab7ca8f3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e75c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e75d.png b/hub/apps/design/style/images/segoe-mdl/e75d.png deleted file mode 100644 index e4f76af294..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e75d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e75e.png b/hub/apps/design/style/images/segoe-mdl/e75e.png deleted file mode 100644 index 434229123d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e75e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e75f.png b/hub/apps/design/style/images/segoe-mdl/e75f.png deleted file mode 100644 index 51fd2196a6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e75f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e760.png b/hub/apps/design/style/images/segoe-mdl/e760.png deleted file mode 100644 index 5febf65ec6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e760.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e761.png b/hub/apps/design/style/images/segoe-mdl/e761.png deleted file mode 100644 index b9b1e534da..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e761.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e762.png b/hub/apps/design/style/images/segoe-mdl/e762.png deleted file mode 100644 index 9230580e92..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e762.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e763.png b/hub/apps/design/style/images/segoe-mdl/e763.png deleted file mode 100644 index 693b7d02ac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e763.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e764.png b/hub/apps/design/style/images/segoe-mdl/e764.png deleted file mode 100644 index 2752872f85..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e764.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e765.png b/hub/apps/design/style/images/segoe-mdl/e765.png deleted file mode 100644 index 102f29a69d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e765.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e766.png b/hub/apps/design/style/images/segoe-mdl/e766.png deleted file mode 100644 index cdbfcc01c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e766.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e767.png b/hub/apps/design/style/images/segoe-mdl/e767.png deleted file mode 100644 index a0c4981027..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e767.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e768.png b/hub/apps/design/style/images/segoe-mdl/e768.png deleted file mode 100644 index 450b02c3c9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e768.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e769.png b/hub/apps/design/style/images/segoe-mdl/e769.png deleted file mode 100644 index 805cbac5ad..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e769.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e76b.png b/hub/apps/design/style/images/segoe-mdl/e76b.png deleted file mode 100644 index 3ec0b6ca6b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e76b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e76c.png b/hub/apps/design/style/images/segoe-mdl/e76c.png deleted file mode 100644 index 8490bca808..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e76c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e76d.png b/hub/apps/design/style/images/segoe-mdl/e76d.png deleted file mode 100644 index e7713bcf8d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e76d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e76e.png b/hub/apps/design/style/images/segoe-mdl/e76e.png deleted file mode 100644 index 9e88360c4a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e76e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e76f.png b/hub/apps/design/style/images/segoe-mdl/e76f.png deleted file mode 100644 index 74c6ee8937..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e76f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e770.png b/hub/apps/design/style/images/segoe-mdl/e770.png deleted file mode 100644 index 09f1361dc2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e770.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e771.png b/hub/apps/design/style/images/segoe-mdl/e771.png deleted file mode 100644 index 07ef58f933..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e771.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e772.png b/hub/apps/design/style/images/segoe-mdl/e772.png deleted file mode 100644 index 9c5619f177..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e772.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e773.png b/hub/apps/design/style/images/segoe-mdl/e773.png deleted file mode 100644 index 15376949c3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e773.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e774.png b/hub/apps/design/style/images/segoe-mdl/e774.png deleted file mode 100644 index 3f583bb658..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e774.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e775.png b/hub/apps/design/style/images/segoe-mdl/e775.png deleted file mode 100644 index 5d8f52c8b2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e775.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e776.png b/hub/apps/design/style/images/segoe-mdl/e776.png deleted file mode 100644 index 1c0daa0233..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e776.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e777.png b/hub/apps/design/style/images/segoe-mdl/e777.png deleted file mode 100644 index f48435aaba..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e777.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e778.png b/hub/apps/design/style/images/segoe-mdl/e778.png deleted file mode 100644 index d462d2c920..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e778.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e779.png b/hub/apps/design/style/images/segoe-mdl/e779.png deleted file mode 100644 index 0057b14252..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e779.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e77a.png b/hub/apps/design/style/images/segoe-mdl/e77a.png deleted file mode 100644 index b4ba2251fb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e77a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e77b.png b/hub/apps/design/style/images/segoe-mdl/e77b.png deleted file mode 100644 index e16aea6ede..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e77b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e77c.png b/hub/apps/design/style/images/segoe-mdl/e77c.png deleted file mode 100644 index 59b4e1efa7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e77c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e77e.png b/hub/apps/design/style/images/segoe-mdl/e77e.png deleted file mode 100644 index 07cc40ea4b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e77e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e77f.png b/hub/apps/design/style/images/segoe-mdl/e77f.png deleted file mode 100644 index bdb8dba921..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e77f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e780.png b/hub/apps/design/style/images/segoe-mdl/e780.png deleted file mode 100644 index 37e6dffe12..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e780.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e781.png b/hub/apps/design/style/images/segoe-mdl/e781.png deleted file mode 100644 index 912f4b6429..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e781.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e783.png b/hub/apps/design/style/images/segoe-mdl/e783.png deleted file mode 100644 index 4f0a2102cd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e783.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e784.png b/hub/apps/design/style/images/segoe-mdl/e784.png deleted file mode 100644 index 819e8e7738..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e784.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e785.png b/hub/apps/design/style/images/segoe-mdl/e785.png deleted file mode 100644 index c32c3ea1d4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e785.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e786.png b/hub/apps/design/style/images/segoe-mdl/e786.png deleted file mode 100644 index 57c1636e59..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e786.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e787.png b/hub/apps/design/style/images/segoe-mdl/e787.png deleted file mode 100644 index 853ea7b3ea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e787.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e788.png b/hub/apps/design/style/images/segoe-mdl/e788.png deleted file mode 100644 index 92f9ab8729..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e788.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e789.png b/hub/apps/design/style/images/segoe-mdl/e789.png deleted file mode 100644 index a71c21bd60..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e789.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e78a.png b/hub/apps/design/style/images/segoe-mdl/e78a.png deleted file mode 100644 index c453356dfe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e78a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e78b.png b/hub/apps/design/style/images/segoe-mdl/e78b.png deleted file mode 100644 index 0946a733f8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e78b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e78c.png b/hub/apps/design/style/images/segoe-mdl/e78c.png deleted file mode 100644 index f0e522d658..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e78c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e790.png b/hub/apps/design/style/images/segoe-mdl/e790.png deleted file mode 100644 index 3d69f179d6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e790.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e791.png b/hub/apps/design/style/images/segoe-mdl/e791.png deleted file mode 100644 index 32964baea3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e791.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e792.png b/hub/apps/design/style/images/segoe-mdl/e792.png deleted file mode 100644 index 52aab2d2c0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e792.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e793.png b/hub/apps/design/style/images/segoe-mdl/e793.png deleted file mode 100644 index f2340ee5fe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e793.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e799.png b/hub/apps/design/style/images/segoe-mdl/e799.png deleted file mode 100644 index aacca4cbe0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e799.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7a5.png b/hub/apps/design/style/images/segoe-mdl/e7a5.png deleted file mode 100644 index aca882baa6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7a6.png b/hub/apps/design/style/images/segoe-mdl/e7a6.png deleted file mode 100644 index bcf36b4635..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7a7.png b/hub/apps/design/style/images/segoe-mdl/e7a7.png deleted file mode 100644 index c63bc3e5cf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7a8.png b/hub/apps/design/style/images/segoe-mdl/e7a8.png deleted file mode 100644 index 25ce148a16..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ac.png b/hub/apps/design/style/images/segoe-mdl/e7ac.png deleted file mode 100644 index de7190c4ab..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ad.png b/hub/apps/design/style/images/segoe-mdl/e7ad.png deleted file mode 100644 index 183b67160c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7b3.png b/hub/apps/design/style/images/segoe-mdl/e7b3.png deleted file mode 100644 index 4bc1d4b163..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7b5.png b/hub/apps/design/style/images/segoe-mdl/e7b5.png deleted file mode 100644 index 3f62485bc5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7b7.png b/hub/apps/design/style/images/segoe-mdl/e7b7.png deleted file mode 100644 index 37d5276064..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7b8.png b/hub/apps/design/style/images/segoe-mdl/e7b8.png deleted file mode 100644 index 1da732ac14..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ba.png b/hub/apps/design/style/images/segoe-mdl/e7ba.png deleted file mode 100644 index 29b898ee48..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7bc.png b/hub/apps/design/style/images/segoe-mdl/e7bc.png deleted file mode 100644 index ae63916166..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7be.png b/hub/apps/design/style/images/segoe-mdl/e7be.png deleted file mode 100644 index 65600a6b1e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7be.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7bf.png b/hub/apps/design/style/images/segoe-mdl/e7bf.png deleted file mode 100644 index 32dbe001f8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c0.png b/hub/apps/design/style/images/segoe-mdl/e7c0.png deleted file mode 100644 index 09adb0179a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c1.png b/hub/apps/design/style/images/segoe-mdl/e7c1.png deleted file mode 100644 index afb917c7fd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c3.png b/hub/apps/design/style/images/segoe-mdl/e7c3.png deleted file mode 100644 index 02887d4b51..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c4.png b/hub/apps/design/style/images/segoe-mdl/e7c4.png deleted file mode 100644 index 28c12e70e2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c5.png b/hub/apps/design/style/images/segoe-mdl/e7c5.png deleted file mode 100644 index a8d071a7b4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c6.png b/hub/apps/design/style/images/segoe-mdl/e7c6.png deleted file mode 100644 index 4315adbed0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c7.png b/hub/apps/design/style/images/segoe-mdl/e7c7.png deleted file mode 100644 index 49dba9d9af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c8.png b/hub/apps/design/style/images/segoe-mdl/e7c8.png deleted file mode 100644 index df24c9d0ae..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7c9.png b/hub/apps/design/style/images/segoe-mdl/e7c9.png deleted file mode 100644 index 5a5ed170ed..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7de.png b/hub/apps/design/style/images/segoe-mdl/e7de.png deleted file mode 100644 index 3743a59d2b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7de.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7e3.png b/hub/apps/design/style/images/segoe-mdl/e7e3.png deleted file mode 100644 index c83fb7e470..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7e6.png b/hub/apps/design/style/images/segoe-mdl/e7e6.png deleted file mode 100644 index 719171a3a4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7e7.png b/hub/apps/design/style/images/segoe-mdl/e7e7.png deleted file mode 100644 index 14f919b993..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7e8.png b/hub/apps/design/style/images/segoe-mdl/e7e8.png deleted file mode 100644 index 95777ce530..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ea.png b/hub/apps/design/style/images/segoe-mdl/e7ea.png deleted file mode 100644 index b69169f0d2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7eb.png b/hub/apps/design/style/images/segoe-mdl/e7eb.png deleted file mode 100644 index a6384807e3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ec.png b/hub/apps/design/style/images/segoe-mdl/e7ec.png deleted file mode 100644 index 45ab5efe7a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ed.png b/hub/apps/design/style/images/segoe-mdl/e7ed.png deleted file mode 100644 index 578861b7f9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ee.png b/hub/apps/design/style/images/segoe-mdl/e7ee.png deleted file mode 100644 index 5e5bb154e8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7ef.png b/hub/apps/design/style/images/segoe-mdl/e7ef.png deleted file mode 100644 index 37ad8de0ac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f0.png b/hub/apps/design/style/images/segoe-mdl/e7f0.png deleted file mode 100644 index a03eb9e608..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f1.png b/hub/apps/design/style/images/segoe-mdl/e7f1.png deleted file mode 100644 index f9fcb30234..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f2.png b/hub/apps/design/style/images/segoe-mdl/e7f2.png deleted file mode 100644 index f821a003cc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f3.png b/hub/apps/design/style/images/segoe-mdl/e7f3.png deleted file mode 100644 index bcb6f53a14..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f4.png b/hub/apps/design/style/images/segoe-mdl/e7f4.png deleted file mode 100644 index 84e9c8a599..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f5.png b/hub/apps/design/style/images/segoe-mdl/e7f5.png deleted file mode 100644 index 88c7808a8c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f6.png b/hub/apps/design/style/images/segoe-mdl/e7f6.png deleted file mode 100644 index 3ca9a96328..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f7.png b/hub/apps/design/style/images/segoe-mdl/e7f7.png deleted file mode 100644 index 5c7dae2ff6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f8.png b/hub/apps/design/style/images/segoe-mdl/e7f8.png deleted file mode 100644 index 6385ccd32a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7f9.png b/hub/apps/design/style/images/segoe-mdl/e7f9.png deleted file mode 100644 index bb901eb9c2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7fa.png b/hub/apps/design/style/images/segoe-mdl/e7fa.png deleted file mode 100644 index 7774ed2843..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7fb.png b/hub/apps/design/style/images/segoe-mdl/e7fb.png deleted file mode 100644 index d27553135e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7fc.png b/hub/apps/design/style/images/segoe-mdl/e7fc.png deleted file mode 100644 index 3682e7933d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e7fd.png b/hub/apps/design/style/images/segoe-mdl/e7fd.png deleted file mode 100644 index ae2cb39047..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e7fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e802.png b/hub/apps/design/style/images/segoe-mdl/e802.png deleted file mode 100644 index 078798d601..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e802.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e803.png b/hub/apps/design/style/images/segoe-mdl/e803.png deleted file mode 100644 index 7e96258d4c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e803.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e804.png b/hub/apps/design/style/images/segoe-mdl/e804.png deleted file mode 100644 index 45ab5efe7a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e804.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e805.png b/hub/apps/design/style/images/segoe-mdl/e805.png deleted file mode 100644 index 51af881310..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e805.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e806.png b/hub/apps/design/style/images/segoe-mdl/e806.png deleted file mode 100644 index 26a91e35c5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e806.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e809.png b/hub/apps/design/style/images/segoe-mdl/e809.png deleted file mode 100644 index 9c8a0bd4e4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e809.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e80a.png b/hub/apps/design/style/images/segoe-mdl/e80a.png deleted file mode 100644 index 65eddf82bc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e80a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e80b.png b/hub/apps/design/style/images/segoe-mdl/e80b.png deleted file mode 100644 index 8c80e9e0cb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e80b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e80c.png b/hub/apps/design/style/images/segoe-mdl/e80c.png deleted file mode 100644 index a53547b7ba..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e80c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e80d.png b/hub/apps/design/style/images/segoe-mdl/e80d.png deleted file mode 100644 index a280d74a41..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e80d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e80f.png b/hub/apps/design/style/images/segoe-mdl/e80f.png deleted file mode 100644 index 41a4ba8b0a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e80f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e811.png b/hub/apps/design/style/images/segoe-mdl/e811.png deleted file mode 100644 index 498e7be5fb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e811.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e812.png b/hub/apps/design/style/images/segoe-mdl/e812.png deleted file mode 100644 index 49989ee775..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e812.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e813.png b/hub/apps/design/style/images/segoe-mdl/e813.png deleted file mode 100644 index 79527d59ce..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e813.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e814.png b/hub/apps/design/style/images/segoe-mdl/e814.png deleted file mode 100644 index 5d69572f9d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e814.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e815.png b/hub/apps/design/style/images/segoe-mdl/e815.png deleted file mode 100644 index b58445a42c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e815.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e816.png b/hub/apps/design/style/images/segoe-mdl/e816.png deleted file mode 100644 index 13ba24d427..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e816.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e819.png b/hub/apps/design/style/images/segoe-mdl/e819.png deleted file mode 100644 index f4f087373b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e819.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e81a.png b/hub/apps/design/style/images/segoe-mdl/e81a.png deleted file mode 100644 index 59896c88da..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e81a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e81b.png b/hub/apps/design/style/images/segoe-mdl/e81b.png deleted file mode 100644 index afb917c7fd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e81b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e81c.png b/hub/apps/design/style/images/segoe-mdl/e81c.png deleted file mode 100644 index c8a3ab0dae..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e81c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e81d.png b/hub/apps/design/style/images/segoe-mdl/e81d.png deleted file mode 100644 index dbecd0b6ed..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e81d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e81e.png b/hub/apps/design/style/images/segoe-mdl/e81e.png deleted file mode 100644 index 2bf78aac1d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e81e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e81f.png b/hub/apps/design/style/images/segoe-mdl/e81f.png deleted file mode 100644 index 7ca99df1be..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e81f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e821.png b/hub/apps/design/style/images/segoe-mdl/e821.png deleted file mode 100644 index 42a8748f5c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e821.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e822.png b/hub/apps/design/style/images/segoe-mdl/e822.png deleted file mode 100644 index 6a9d14f0db..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e822.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e823.png b/hub/apps/design/style/images/segoe-mdl/e823.png deleted file mode 100644 index 4c654b2792..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e823.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e825.png b/hub/apps/design/style/images/segoe-mdl/e825.png deleted file mode 100644 index 0d67fdf158..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e825.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e826.png b/hub/apps/design/style/images/segoe-mdl/e826.png deleted file mode 100644 index 00e2397425..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e826.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e829.png b/hub/apps/design/style/images/segoe-mdl/e829.png deleted file mode 100644 index b02ae9c486..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e829.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e82a.png b/hub/apps/design/style/images/segoe-mdl/e82a.png deleted file mode 100644 index f2e5587f89..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e82a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e82b.png b/hub/apps/design/style/images/segoe-mdl/e82b.png deleted file mode 100644 index ee917945ca..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e82b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e82c.png b/hub/apps/design/style/images/segoe-mdl/e82c.png deleted file mode 100644 index 531a32064b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e82c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e82d.png b/hub/apps/design/style/images/segoe-mdl/e82d.png deleted file mode 100644 index bcf1c94f26..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e82d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e82e.png b/hub/apps/design/style/images/segoe-mdl/e82e.png deleted file mode 100644 index ff3e7cb079..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e82e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e82f.png b/hub/apps/design/style/images/segoe-mdl/e82f.png deleted file mode 100644 index 8782ec3f1a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e82f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e830.png b/hub/apps/design/style/images/segoe-mdl/e830.png deleted file mode 100644 index 13cde8dcd8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e830.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e835.png b/hub/apps/design/style/images/segoe-mdl/e835.png deleted file mode 100644 index 7d72158214..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e835.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e836.png b/hub/apps/design/style/images/segoe-mdl/e836.png deleted file mode 100644 index 00e70be366..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e836.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e838.png b/hub/apps/design/style/images/segoe-mdl/e838.png deleted file mode 100644 index 8cf9c67a09..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e838.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e839.png b/hub/apps/design/style/images/segoe-mdl/e839.png deleted file mode 100644 index bb1c5431b1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e839.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e83a.png b/hub/apps/design/style/images/segoe-mdl/e83a.png deleted file mode 100644 index e66fac0964..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e83a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e83b.png b/hub/apps/design/style/images/segoe-mdl/e83b.png deleted file mode 100644 index c8ac95a51d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e83b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e83c.png b/hub/apps/design/style/images/segoe-mdl/e83c.png deleted file mode 100644 index a35e74a5e7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e83c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e83d.png b/hub/apps/design/style/images/segoe-mdl/e83d.png deleted file mode 100644 index b1a0196446..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e83d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e83e.png b/hub/apps/design/style/images/segoe-mdl/e83e.png deleted file mode 100644 index 271c191cf9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e83e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e83f.png b/hub/apps/design/style/images/segoe-mdl/e83f.png deleted file mode 100644 index 4dc5e7e2f8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e83f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e840.png b/hub/apps/design/style/images/segoe-mdl/e840.png deleted file mode 100644 index e713f3c475..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e840.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e841.png b/hub/apps/design/style/images/segoe-mdl/e841.png deleted file mode 100644 index af0138ab4a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e841.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e842.png b/hub/apps/design/style/images/segoe-mdl/e842.png deleted file mode 100644 index 9cd13609bf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e842.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e843.png b/hub/apps/design/style/images/segoe-mdl/e843.png deleted file mode 100644 index 11406c2007..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e843.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e844.png b/hub/apps/design/style/images/segoe-mdl/e844.png deleted file mode 100644 index 126033c0e9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e844.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e845.png b/hub/apps/design/style/images/segoe-mdl/e845.png deleted file mode 100644 index 08cd90fdd9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e845.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e846.png b/hub/apps/design/style/images/segoe-mdl/e846.png deleted file mode 100644 index c8b88ac044..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e846.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e847.png b/hub/apps/design/style/images/segoe-mdl/e847.png deleted file mode 100644 index af7847621d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e847.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e848.png b/hub/apps/design/style/images/segoe-mdl/e848.png deleted file mode 100644 index f21ebdd1ea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e848.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e849.png b/hub/apps/design/style/images/segoe-mdl/e849.png deleted file mode 100644 index 2af291bde6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e849.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e84a.png b/hub/apps/design/style/images/segoe-mdl/e84a.png deleted file mode 100644 index eab763962e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e84a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e84b.png b/hub/apps/design/style/images/segoe-mdl/e84b.png deleted file mode 100644 index 520322b0eb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e84b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e84c.png b/hub/apps/design/style/images/segoe-mdl/e84c.png deleted file mode 100644 index 16dba4fa40..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e84c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e84d.png b/hub/apps/design/style/images/segoe-mdl/e84d.png deleted file mode 100644 index b0daef1e03..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e84d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e84e.png b/hub/apps/design/style/images/segoe-mdl/e84e.png deleted file mode 100644 index 9d0eaa449e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e84e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e84f.png b/hub/apps/design/style/images/segoe-mdl/e84f.png deleted file mode 100644 index b20f6c6b05..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e84f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e850.png b/hub/apps/design/style/images/segoe-mdl/e850.png deleted file mode 100644 index c45ddc5682..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e850.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e851.png b/hub/apps/design/style/images/segoe-mdl/e851.png deleted file mode 100644 index 01b5448e7b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e851.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e852.png b/hub/apps/design/style/images/segoe-mdl/e852.png deleted file mode 100644 index 1f5308dc93..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e852.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e853.png b/hub/apps/design/style/images/segoe-mdl/e853.png deleted file mode 100644 index ecc9be1e7a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e853.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e854.png b/hub/apps/design/style/images/segoe-mdl/e854.png deleted file mode 100644 index 3a0f4bb8e9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e854.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e855.png b/hub/apps/design/style/images/segoe-mdl/e855.png deleted file mode 100644 index a7d9f7bae9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e855.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e856.png b/hub/apps/design/style/images/segoe-mdl/e856.png deleted file mode 100644 index bbd75e500f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e856.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e857.png b/hub/apps/design/style/images/segoe-mdl/e857.png deleted file mode 100644 index 9109c4bb82..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e857.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e858.png b/hub/apps/design/style/images/segoe-mdl/e858.png deleted file mode 100644 index d87a97ae43..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e858.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e859.png b/hub/apps/design/style/images/segoe-mdl/e859.png deleted file mode 100644 index a555f4f4ee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e859.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e85a.png b/hub/apps/design/style/images/segoe-mdl/e85a.png deleted file mode 100644 index 2c210b837a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e85a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e85b.png b/hub/apps/design/style/images/segoe-mdl/e85b.png deleted file mode 100644 index 42496679fd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e85b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e85c.png b/hub/apps/design/style/images/segoe-mdl/e85c.png deleted file mode 100644 index 00288fd721..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e85c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e85d.png b/hub/apps/design/style/images/segoe-mdl/e85d.png deleted file mode 100644 index c672e48700..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e85d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e85e.png b/hub/apps/design/style/images/segoe-mdl/e85e.png deleted file mode 100644 index 7c0b4824fb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e85e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e85f.png b/hub/apps/design/style/images/segoe-mdl/e85f.png deleted file mode 100644 index fc889cc453..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e85f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e860.png b/hub/apps/design/style/images/segoe-mdl/e860.png deleted file mode 100644 index 6757c49329..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e860.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e861.png b/hub/apps/design/style/images/segoe-mdl/e861.png deleted file mode 100644 index 84c0647dbb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e861.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e862.png b/hub/apps/design/style/images/segoe-mdl/e862.png deleted file mode 100644 index c9bc137e78..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e862.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e863.png b/hub/apps/design/style/images/segoe-mdl/e863.png deleted file mode 100644 index 84391b6ae6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e863.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e864.png b/hub/apps/design/style/images/segoe-mdl/e864.png deleted file mode 100644 index 5c6e1eab61..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e864.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e865.png b/hub/apps/design/style/images/segoe-mdl/e865.png deleted file mode 100644 index f04c8808fd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e865.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e866.png b/hub/apps/design/style/images/segoe-mdl/e866.png deleted file mode 100644 index 27ecec0564..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e866.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e867.png b/hub/apps/design/style/images/segoe-mdl/e867.png deleted file mode 100644 index 602d248a08..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e867.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e868.png b/hub/apps/design/style/images/segoe-mdl/e868.png deleted file mode 100644 index 296bcbfe9c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e868.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e869.png b/hub/apps/design/style/images/segoe-mdl/e869.png deleted file mode 100644 index 54b9c5163d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e869.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e86a.png b/hub/apps/design/style/images/segoe-mdl/e86a.png deleted file mode 100644 index db670a306d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e86a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e86b.png b/hub/apps/design/style/images/segoe-mdl/e86b.png deleted file mode 100644 index 9f01382e48..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e86b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e86c.png b/hub/apps/design/style/images/segoe-mdl/e86c.png deleted file mode 100644 index 5f3e5e278c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e86c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e86d.png b/hub/apps/design/style/images/segoe-mdl/e86d.png deleted file mode 100644 index b54c4cf9a7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e86d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e86e.png b/hub/apps/design/style/images/segoe-mdl/e86e.png deleted file mode 100644 index 6605eed006..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e86e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e86f.png b/hub/apps/design/style/images/segoe-mdl/e86f.png deleted file mode 100644 index 9e59e3dbb6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e86f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e870.png b/hub/apps/design/style/images/segoe-mdl/e870.png deleted file mode 100644 index dc134b6bee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e870.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e871.png b/hub/apps/design/style/images/segoe-mdl/e871.png deleted file mode 100644 index 107ff20b56..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e871.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e872.png b/hub/apps/design/style/images/segoe-mdl/e872.png deleted file mode 100644 index 447c793b57..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e872.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e873.png b/hub/apps/design/style/images/segoe-mdl/e873.png deleted file mode 100644 index 22c042e9f2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e873.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e874.png b/hub/apps/design/style/images/segoe-mdl/e874.png deleted file mode 100644 index 934a8ca6dc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e874.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e875.png b/hub/apps/design/style/images/segoe-mdl/e875.png deleted file mode 100644 index 362fd7c0b9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e875.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e876.png b/hub/apps/design/style/images/segoe-mdl/e876.png deleted file mode 100644 index 4f02037ce0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e876.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e877.png b/hub/apps/design/style/images/segoe-mdl/e877.png deleted file mode 100644 index 1c3592cec3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e877.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e878.png b/hub/apps/design/style/images/segoe-mdl/e878.png deleted file mode 100644 index 11c1c02b99..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e878.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e879.png b/hub/apps/design/style/images/segoe-mdl/e879.png deleted file mode 100644 index 022cc48563..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e879.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e87a.png b/hub/apps/design/style/images/segoe-mdl/e87a.png deleted file mode 100644 index c930c3d6e1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e87a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e87b.png b/hub/apps/design/style/images/segoe-mdl/e87b.png deleted file mode 100644 index c462e2418f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e87b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e87c.png b/hub/apps/design/style/images/segoe-mdl/e87c.png deleted file mode 100644 index 3a1a06bc45..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e87c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e87d.png b/hub/apps/design/style/images/segoe-mdl/e87d.png deleted file mode 100644 index d152c52c7f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e87d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e87e.png b/hub/apps/design/style/images/segoe-mdl/e87e.png deleted file mode 100644 index 840a149a21..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e87e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e87f.png b/hub/apps/design/style/images/segoe-mdl/e87f.png deleted file mode 100644 index c8f1621e36..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e87f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e880.png b/hub/apps/design/style/images/segoe-mdl/e880.png deleted file mode 100644 index 5b39c8dd9f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e880.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e881.png b/hub/apps/design/style/images/segoe-mdl/e881.png deleted file mode 100644 index f908551cfd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e881.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e882.png b/hub/apps/design/style/images/segoe-mdl/e882.png deleted file mode 100644 index 6739d2e73e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e882.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e883.png b/hub/apps/design/style/images/segoe-mdl/e883.png deleted file mode 100644 index 42e79c3abb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e883.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e884.png b/hub/apps/design/style/images/segoe-mdl/e884.png deleted file mode 100644 index a242472bf3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e884.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e885.png b/hub/apps/design/style/images/segoe-mdl/e885.png deleted file mode 100644 index 1ff0528414..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e885.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e886.png b/hub/apps/design/style/images/segoe-mdl/e886.png deleted file mode 100644 index 88b5907ff7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e886.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e887.png b/hub/apps/design/style/images/segoe-mdl/e887.png deleted file mode 100644 index 516fe0e625..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e887.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e888.png b/hub/apps/design/style/images/segoe-mdl/e888.png deleted file mode 100644 index e355c2557f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e888.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e889.png b/hub/apps/design/style/images/segoe-mdl/e889.png deleted file mode 100644 index 97f2da7389..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e889.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e88a.png b/hub/apps/design/style/images/segoe-mdl/e88a.png deleted file mode 100644 index 294f853157..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e88a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e88b.png b/hub/apps/design/style/images/segoe-mdl/e88b.png deleted file mode 100644 index 4d5af5bb01..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e88b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e88c.png b/hub/apps/design/style/images/segoe-mdl/e88c.png deleted file mode 100644 index 48fa41542c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e88c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e88d.png b/hub/apps/design/style/images/segoe-mdl/e88d.png deleted file mode 100644 index bf78ec7a81..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e88d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e88e.png b/hub/apps/design/style/images/segoe-mdl/e88e.png deleted file mode 100644 index d70468d53e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e88e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e88f.png b/hub/apps/design/style/images/segoe-mdl/e88f.png deleted file mode 100644 index f4054f8ae7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e88f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e890.png b/hub/apps/design/style/images/segoe-mdl/e890.png deleted file mode 100644 index 6a5b35a581..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e890.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e891.png b/hub/apps/design/style/images/segoe-mdl/e891.png deleted file mode 100644 index 38da995b9f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e891.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e892.png b/hub/apps/design/style/images/segoe-mdl/e892.png deleted file mode 100644 index 45b9866804..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e892.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e893.png b/hub/apps/design/style/images/segoe-mdl/e893.png deleted file mode 100644 index c791bf6c1d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e893.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e894.png b/hub/apps/design/style/images/segoe-mdl/e894.png deleted file mode 100644 index f2c0876cad..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e894.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e895.png b/hub/apps/design/style/images/segoe-mdl/e895.png deleted file mode 100644 index fbfc73fe10..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e895.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e896.png b/hub/apps/design/style/images/segoe-mdl/e896.png deleted file mode 100644 index 0610e57c9e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e896.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e897.png b/hub/apps/design/style/images/segoe-mdl/e897.png deleted file mode 100644 index ff64ead93f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e897.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e898.png b/hub/apps/design/style/images/segoe-mdl/e898.png deleted file mode 100644 index dd3620eae3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e898.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e899.png b/hub/apps/design/style/images/segoe-mdl/e899.png deleted file mode 100644 index e966c06eb4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e899.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e89a.png b/hub/apps/design/style/images/segoe-mdl/e89a.png deleted file mode 100644 index 162cfe2f37..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e89a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e89b.png b/hub/apps/design/style/images/segoe-mdl/e89b.png deleted file mode 100644 index c548401e83..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e89b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e89c.png b/hub/apps/design/style/images/segoe-mdl/e89c.png deleted file mode 100644 index 27de32ad39..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e89c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e89e.png b/hub/apps/design/style/images/segoe-mdl/e89e.png deleted file mode 100644 index b9b5fc0f39..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e89e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e89f.png b/hub/apps/design/style/images/segoe-mdl/e89f.png deleted file mode 100644 index dac10e6182..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e89f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a0.png b/hub/apps/design/style/images/segoe-mdl/e8a0.png deleted file mode 100644 index 1f3e4f129f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a1.png b/hub/apps/design/style/images/segoe-mdl/e8a1.png deleted file mode 100644 index 9ad9686579..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a2.png b/hub/apps/design/style/images/segoe-mdl/e8a2.png deleted file mode 100644 index 896b7973ad..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a3.png b/hub/apps/design/style/images/segoe-mdl/e8a3.png deleted file mode 100644 index f9b6d50d93..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a4.png b/hub/apps/design/style/images/segoe-mdl/e8a4.png deleted file mode 100644 index 63df2c82cd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a5.png b/hub/apps/design/style/images/segoe-mdl/e8a5.png deleted file mode 100644 index 7ffe619da3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a6.png b/hub/apps/design/style/images/segoe-mdl/e8a6.png deleted file mode 100644 index 5cde84738c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a7.png b/hub/apps/design/style/images/segoe-mdl/e8a7.png deleted file mode 100644 index 28e9aef1e0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a8.png b/hub/apps/design/style/images/segoe-mdl/e8a8.png deleted file mode 100644 index 63aab6edf3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8a9.png b/hub/apps/design/style/images/segoe-mdl/e8a9.png deleted file mode 100644 index 5d29da6150..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8aa.png b/hub/apps/design/style/images/segoe-mdl/e8aa.png deleted file mode 100644 index bb81b4b50e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ab.png b/hub/apps/design/style/images/segoe-mdl/e8ab.png deleted file mode 100644 index 4690773a1d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ac.png b/hub/apps/design/style/images/segoe-mdl/e8ac.png deleted file mode 100644 index b295f08493..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ad.png b/hub/apps/design/style/images/segoe-mdl/e8ad.png deleted file mode 100644 index af1b1c3566..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ae.png b/hub/apps/design/style/images/segoe-mdl/e8ae.png deleted file mode 100644 index ae834ad392..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8af.png b/hub/apps/design/style/images/segoe-mdl/e8af.png deleted file mode 100644 index e40beae2cf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8af.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b0.png b/hub/apps/design/style/images/segoe-mdl/e8b0.png deleted file mode 100644 index 575ad2a9b0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b1.png b/hub/apps/design/style/images/segoe-mdl/e8b1.png deleted file mode 100644 index 87b06deec1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b2.png b/hub/apps/design/style/images/segoe-mdl/e8b2.png deleted file mode 100644 index 41de4ed924..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b3.png b/hub/apps/design/style/images/segoe-mdl/e8b3.png deleted file mode 100644 index 5e6fa579e1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b4.png b/hub/apps/design/style/images/segoe-mdl/e8b4.png deleted file mode 100644 index d5afb4a0af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b5.png b/hub/apps/design/style/images/segoe-mdl/e8b5.png deleted file mode 100644 index c044fc613c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b6.png b/hub/apps/design/style/images/segoe-mdl/e8b6.png deleted file mode 100644 index 2681e734ce..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b7.png b/hub/apps/design/style/images/segoe-mdl/e8b7.png deleted file mode 100644 index 3edcda21a9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b8.png b/hub/apps/design/style/images/segoe-mdl/e8b8.png deleted file mode 100644 index 428d954ab0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8b9.png b/hub/apps/design/style/images/segoe-mdl/e8b9.png deleted file mode 100644 index eca944b2af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ba.png b/hub/apps/design/style/images/segoe-mdl/e8ba.png deleted file mode 100644 index 7fce028c7a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8bb.png b/hub/apps/design/style/images/segoe-mdl/e8bb.png deleted file mode 100644 index 1d79082c9f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8bc.png b/hub/apps/design/style/images/segoe-mdl/e8bc.png deleted file mode 100644 index 2357fd94e8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8bd.png b/hub/apps/design/style/images/segoe-mdl/e8bd.png deleted file mode 100644 index 9c633d4031..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8bd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8be.png b/hub/apps/design/style/images/segoe-mdl/e8be.png deleted file mode 100644 index 163bef098e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8be.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8bf.png b/hub/apps/design/style/images/segoe-mdl/e8bf.png deleted file mode 100644 index 9b29af0090..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c0.png b/hub/apps/design/style/images/segoe-mdl/e8c0.png deleted file mode 100644 index 4ca94c5528..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c1.png b/hub/apps/design/style/images/segoe-mdl/e8c1.png deleted file mode 100644 index 0bf6b9169d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c2.png b/hub/apps/design/style/images/segoe-mdl/e8c2.png deleted file mode 100644 index 083f637ad9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c3.png b/hub/apps/design/style/images/segoe-mdl/e8c3.png deleted file mode 100644 index 0b873f7d0d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c4.png b/hub/apps/design/style/images/segoe-mdl/e8c4.png deleted file mode 100644 index 8c4381000b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c5.png b/hub/apps/design/style/images/segoe-mdl/e8c5.png deleted file mode 100644 index 29867678fb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c6.png b/hub/apps/design/style/images/segoe-mdl/e8c6.png deleted file mode 100644 index f69af73b80..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c7.png b/hub/apps/design/style/images/segoe-mdl/e8c7.png deleted file mode 100644 index add550e1fa..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c8.png b/hub/apps/design/style/images/segoe-mdl/e8c8.png deleted file mode 100644 index 22e8c54873..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8c9.png b/hub/apps/design/style/images/segoe-mdl/e8c9.png deleted file mode 100644 index 2aee6b69fd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8c9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ca.png b/hub/apps/design/style/images/segoe-mdl/e8ca.png deleted file mode 100644 index 89367f810f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8cb.png b/hub/apps/design/style/images/segoe-mdl/e8cb.png deleted file mode 100644 index 8510e806bc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8cc.png b/hub/apps/design/style/images/segoe-mdl/e8cc.png deleted file mode 100644 index c1249f45d6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8cd.png b/hub/apps/design/style/images/segoe-mdl/e8cd.png deleted file mode 100644 index 10f3a0faae..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ce.png b/hub/apps/design/style/images/segoe-mdl/e8ce.png deleted file mode 100644 index 9002339edb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8cf.png b/hub/apps/design/style/images/segoe-mdl/e8cf.png deleted file mode 100644 index 747f25859e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8cf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d0.png b/hub/apps/design/style/images/segoe-mdl/e8d0.png deleted file mode 100644 index 4ccc6e48c4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d1.png b/hub/apps/design/style/images/segoe-mdl/e8d1.png deleted file mode 100644 index 67df0df875..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d2.png b/hub/apps/design/style/images/segoe-mdl/e8d2.png deleted file mode 100644 index d803d6fa58..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d3.png b/hub/apps/design/style/images/segoe-mdl/e8d3.png deleted file mode 100644 index de6df5d9d3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d4.png b/hub/apps/design/style/images/segoe-mdl/e8d4.png deleted file mode 100644 index be3bb236d7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d5.png b/hub/apps/design/style/images/segoe-mdl/e8d5.png deleted file mode 100644 index b3e58cdfc4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d6.png b/hub/apps/design/style/images/segoe-mdl/e8d6.png deleted file mode 100644 index e1bfda2bb8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d7.png b/hub/apps/design/style/images/segoe-mdl/e8d7.png deleted file mode 100644 index a3de6edb52..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d8.png b/hub/apps/design/style/images/segoe-mdl/e8d8.png deleted file mode 100644 index 358886fbdd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8d9.png b/hub/apps/design/style/images/segoe-mdl/e8d9.png deleted file mode 100644 index aee834cb75..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8da.png b/hub/apps/design/style/images/segoe-mdl/e8da.png deleted file mode 100644 index ee0527ac58..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8da.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8db.png b/hub/apps/design/style/images/segoe-mdl/e8db.png deleted file mode 100644 index eb411efd74..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8db.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8dc.png b/hub/apps/design/style/images/segoe-mdl/e8dc.png deleted file mode 100644 index 75600f7542..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8dc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8dd.png b/hub/apps/design/style/images/segoe-mdl/e8dd.png deleted file mode 100644 index ddc538e0dc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8dd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8de.png b/hub/apps/design/style/images/segoe-mdl/e8de.png deleted file mode 100644 index e83e999c1f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8de.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8df.png b/hub/apps/design/style/images/segoe-mdl/e8df.png deleted file mode 100644 index a992d1db2c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8df.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e0.png b/hub/apps/design/style/images/segoe-mdl/e8e0.png deleted file mode 100644 index 92d5781a96..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e1.png b/hub/apps/design/style/images/segoe-mdl/e8e1.png deleted file mode 100644 index 2a1b78ba57..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e2.png b/hub/apps/design/style/images/segoe-mdl/e8e2.png deleted file mode 100644 index d7a1047e5f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e3.png b/hub/apps/design/style/images/segoe-mdl/e8e3.png deleted file mode 100644 index b9a22c82d1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e4.png b/hub/apps/design/style/images/segoe-mdl/e8e4.png deleted file mode 100644 index 1a4aece983..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e5.png b/hub/apps/design/style/images/segoe-mdl/e8e5.png deleted file mode 100644 index fef10041c5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e6.png b/hub/apps/design/style/images/segoe-mdl/e8e6.png deleted file mode 100644 index 41d15e3b05..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e7.png b/hub/apps/design/style/images/segoe-mdl/e8e7.png deleted file mode 100644 index 7d59b85c4b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e8.png b/hub/apps/design/style/images/segoe-mdl/e8e8.png deleted file mode 100644 index e044678a3e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8e9.png b/hub/apps/design/style/images/segoe-mdl/e8e9.png deleted file mode 100644 index 6b3492855b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ea.png b/hub/apps/design/style/images/segoe-mdl/e8ea.png deleted file mode 100644 index 8f6da7b581..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8eb.png b/hub/apps/design/style/images/segoe-mdl/e8eb.png deleted file mode 100644 index 21798cd22d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ec.png b/hub/apps/design/style/images/segoe-mdl/e8ec.png deleted file mode 100644 index 60650844e4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ed.png b/hub/apps/design/style/images/segoe-mdl/e8ed.png deleted file mode 100644 index 36431803a4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ee.png b/hub/apps/design/style/images/segoe-mdl/e8ee.png deleted file mode 100644 index 2534b0a8ee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ef.png b/hub/apps/design/style/images/segoe-mdl/e8ef.png deleted file mode 100644 index 8608c01436..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f0.png b/hub/apps/design/style/images/segoe-mdl/e8f0.png deleted file mode 100644 index 30c204d98d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f1.png b/hub/apps/design/style/images/segoe-mdl/e8f1.png deleted file mode 100644 index 7737016d43..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f2.png b/hub/apps/design/style/images/segoe-mdl/e8f2.png deleted file mode 100644 index 16fdaa0ce4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f3.png b/hub/apps/design/style/images/segoe-mdl/e8f3.png deleted file mode 100644 index 274cac601a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f4.png b/hub/apps/design/style/images/segoe-mdl/e8f4.png deleted file mode 100644 index 3fa8c83752..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f5.png b/hub/apps/design/style/images/segoe-mdl/e8f5.png deleted file mode 100644 index 64f5519415..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f6.png b/hub/apps/design/style/images/segoe-mdl/e8f6.png deleted file mode 100644 index 19014a69c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f7.png b/hub/apps/design/style/images/segoe-mdl/e8f7.png deleted file mode 100644 index 1425c96953..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f8.png b/hub/apps/design/style/images/segoe-mdl/e8f8.png deleted file mode 100644 index 73d1607f42..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8f9.png b/hub/apps/design/style/images/segoe-mdl/e8f9.png deleted file mode 100644 index 9a546eb02d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8fa.png b/hub/apps/design/style/images/segoe-mdl/e8fa.png deleted file mode 100644 index d2870aa4a0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8fb.png b/hub/apps/design/style/images/segoe-mdl/e8fb.png deleted file mode 100644 index 2b9a3d0ad2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8fc.png b/hub/apps/design/style/images/segoe-mdl/e8fc.png deleted file mode 100644 index 1a5ed7e512..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8fd.png b/hub/apps/design/style/images/segoe-mdl/e8fd.png deleted file mode 100644 index b516672ca2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8fe.png b/hub/apps/design/style/images/segoe-mdl/e8fe.png deleted file mode 100644 index 0317d5a975..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8fe.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e8ff.png b/hub/apps/design/style/images/segoe-mdl/e8ff.png deleted file mode 100644 index e772fa88ef..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e8ff.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e902.png b/hub/apps/design/style/images/segoe-mdl/e902.png deleted file mode 100644 index 80559566a5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e902.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e904.png b/hub/apps/design/style/images/segoe-mdl/e904.png deleted file mode 100644 index 61a87a7243..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e904.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e905.png b/hub/apps/design/style/images/segoe-mdl/e905.png deleted file mode 100644 index 703288de20..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e905.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e906.png b/hub/apps/design/style/images/segoe-mdl/e906.png deleted file mode 100644 index c16c5ed3c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e906.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e907.png b/hub/apps/design/style/images/segoe-mdl/e907.png deleted file mode 100644 index f82b32841a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e907.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e908.png b/hub/apps/design/style/images/segoe-mdl/e908.png deleted file mode 100644 index 6721164405..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e908.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e909.png b/hub/apps/design/style/images/segoe-mdl/e909.png deleted file mode 100644 index c4b8ad514d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e909.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e90a.png b/hub/apps/design/style/images/segoe-mdl/e90a.png deleted file mode 100644 index ee39c7899a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e90a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e90b.png b/hub/apps/design/style/images/segoe-mdl/e90b.png deleted file mode 100644 index 803d4ab0c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e90b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e90c.png b/hub/apps/design/style/images/segoe-mdl/e90c.png deleted file mode 100644 index 4da1bb57bf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e90c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e90d.png b/hub/apps/design/style/images/segoe-mdl/e90d.png deleted file mode 100644 index 98a276361c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e90d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e90e.png b/hub/apps/design/style/images/segoe-mdl/e90e.png deleted file mode 100644 index 0f89d8b336..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e90e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e90f.png b/hub/apps/design/style/images/segoe-mdl/e90f.png deleted file mode 100644 index 777fe0d8e1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e90f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e910.png b/hub/apps/design/style/images/segoe-mdl/e910.png deleted file mode 100644 index 69eb5f3e73..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e910.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e911.png b/hub/apps/design/style/images/segoe-mdl/e911.png deleted file mode 100644 index 1f73536720..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e911.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e912.png b/hub/apps/design/style/images/segoe-mdl/e912.png deleted file mode 100644 index c258baa3b9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e912.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e913.png b/hub/apps/design/style/images/segoe-mdl/e913.png deleted file mode 100644 index 63351c8a46..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e913.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e914.png b/hub/apps/design/style/images/segoe-mdl/e914.png deleted file mode 100644 index 81ffcfb28d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e914.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e915.png b/hub/apps/design/style/images/segoe-mdl/e915.png deleted file mode 100644 index 0159ad46cb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e915.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e916.png b/hub/apps/design/style/images/segoe-mdl/e916.png deleted file mode 100644 index a488cdc5ed..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e916.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e91b.png b/hub/apps/design/style/images/segoe-mdl/e91b.png deleted file mode 100644 index d425226cbd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e91b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e91c.png b/hub/apps/design/style/images/segoe-mdl/e91c.png deleted file mode 100644 index 2c0180c666..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e91c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e91f.png b/hub/apps/design/style/images/segoe-mdl/e91f.png deleted file mode 100644 index ce97a8db72..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e91f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e921.png b/hub/apps/design/style/images/segoe-mdl/e921.png deleted file mode 100644 index cc10e92e75..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e921.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e922.png b/hub/apps/design/style/images/segoe-mdl/e922.png deleted file mode 100644 index 9b3a8918a1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e922.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e923.png b/hub/apps/design/style/images/segoe-mdl/e923.png deleted file mode 100644 index 2dfea4750d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e923.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e924.png b/hub/apps/design/style/images/segoe-mdl/e924.png deleted file mode 100644 index 0614961638..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e924.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e925.png b/hub/apps/design/style/images/segoe-mdl/e925.png deleted file mode 100644 index 53bebfbd2b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e925.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e926.png b/hub/apps/design/style/images/segoe-mdl/e926.png deleted file mode 100644 index 18878d2964..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e926.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e927.png b/hub/apps/design/style/images/segoe-mdl/e927.png deleted file mode 100644 index 98fb176bc7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e927.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e928.png b/hub/apps/design/style/images/segoe-mdl/e928.png deleted file mode 100644 index aaefe5e9b9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e928.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e929.png b/hub/apps/design/style/images/segoe-mdl/e929.png deleted file mode 100644 index 65e0d9e3e3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e929.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e92c.png b/hub/apps/design/style/images/segoe-mdl/e92c.png deleted file mode 100644 index c6853434ce..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e92c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e92d.png b/hub/apps/design/style/images/segoe-mdl/e92d.png deleted file mode 100644 index 6430795184..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e92d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e92e.png b/hub/apps/design/style/images/segoe-mdl/e92e.png deleted file mode 100644 index af8c873c57..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e92e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e92f.png b/hub/apps/design/style/images/segoe-mdl/e92f.png deleted file mode 100644 index 96f89cbe74..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e92f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e930.png b/hub/apps/design/style/images/segoe-mdl/e930.png deleted file mode 100644 index 0bceb3608e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e930.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e931.png b/hub/apps/design/style/images/segoe-mdl/e931.png deleted file mode 100644 index 539d636167..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e931.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e932.png b/hub/apps/design/style/images/segoe-mdl/e932.png deleted file mode 100644 index 47dbe24cd9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e932.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e933.png b/hub/apps/design/style/images/segoe-mdl/e933.png deleted file mode 100644 index 3ced5dd169..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e933.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e934.png b/hub/apps/design/style/images/segoe-mdl/e934.png deleted file mode 100644 index 9e24b4b45c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e934.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e935.png b/hub/apps/design/style/images/segoe-mdl/e935.png deleted file mode 100644 index a8d917bdc3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e935.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e936.png b/hub/apps/design/style/images/segoe-mdl/e936.png deleted file mode 100644 index 4102c8f47b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e936.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e937.png b/hub/apps/design/style/images/segoe-mdl/e937.png deleted file mode 100644 index 68e60585cc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e937.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e938.png b/hub/apps/design/style/images/segoe-mdl/e938.png deleted file mode 100644 index 6ac121b3ab..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e938.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e939.png b/hub/apps/design/style/images/segoe-mdl/e939.png deleted file mode 100644 index 42530a8f70..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e939.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e93c.png b/hub/apps/design/style/images/segoe-mdl/e93c.png deleted file mode 100644 index 7e18f07529..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e93c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e93e.png b/hub/apps/design/style/images/segoe-mdl/e93e.png deleted file mode 100644 index fcd4a5b802..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e93e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e943.png b/hub/apps/design/style/images/segoe-mdl/e943.png deleted file mode 100644 index 783b122810..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e943.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e944.png b/hub/apps/design/style/images/segoe-mdl/e944.png deleted file mode 100644 index 568f2aaa85..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e944.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e945.png b/hub/apps/design/style/images/segoe-mdl/e945.png deleted file mode 100644 index 7320a3bb51..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e945.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e946.png b/hub/apps/design/style/images/segoe-mdl/e946.png deleted file mode 100644 index 2c8379812f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e946.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e947.png b/hub/apps/design/style/images/segoe-mdl/e947.png deleted file mode 100644 index c505303578..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e947.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e948.png b/hub/apps/design/style/images/segoe-mdl/e948.png deleted file mode 100644 index 690a4a97a1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e948.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e949.png b/hub/apps/design/style/images/segoe-mdl/e949.png deleted file mode 100644 index 99f38c51a1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e949.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e94a.png b/hub/apps/design/style/images/segoe-mdl/e94a.png deleted file mode 100644 index 663c8071d9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e94a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e94b.png b/hub/apps/design/style/images/segoe-mdl/e94b.png deleted file mode 100644 index e684710de7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e94b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e94c.png b/hub/apps/design/style/images/segoe-mdl/e94c.png deleted file mode 100644 index 4ad80094e6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e94c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e94d.png b/hub/apps/design/style/images/segoe-mdl/e94d.png deleted file mode 100644 index 65ac599628..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e94d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e94e.png b/hub/apps/design/style/images/segoe-mdl/e94e.png deleted file mode 100644 index e3f4ceaeb2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e94e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e94f.png b/hub/apps/design/style/images/segoe-mdl/e94f.png deleted file mode 100644 index 1efbdd49cd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e94f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e950.png b/hub/apps/design/style/images/segoe-mdl/e950.png deleted file mode 100644 index 0cbffd12dc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e950.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e951.png b/hub/apps/design/style/images/segoe-mdl/e951.png deleted file mode 100644 index 938abbda7b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e951.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e952.png b/hub/apps/design/style/images/segoe-mdl/e952.png deleted file mode 100644 index 3095bdeac8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e952.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e953.png b/hub/apps/design/style/images/segoe-mdl/e953.png deleted file mode 100644 index 7d14b9537f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e953.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e954.png b/hub/apps/design/style/images/segoe-mdl/e954.png deleted file mode 100644 index f1960a1cfe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e954.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e955.png b/hub/apps/design/style/images/segoe-mdl/e955.png deleted file mode 100644 index be5c786721..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e955.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e956.png b/hub/apps/design/style/images/segoe-mdl/e956.png deleted file mode 100644 index 116465ed23..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e956.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e957.png b/hub/apps/design/style/images/segoe-mdl/e957.png deleted file mode 100644 index 2ffc2144a2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e957.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e958.png b/hub/apps/design/style/images/segoe-mdl/e958.png deleted file mode 100644 index 10f7304845..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e958.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e95a.png b/hub/apps/design/style/images/segoe-mdl/e95a.png deleted file mode 100644 index 7d824c3928..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e95a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e95b.png b/hub/apps/design/style/images/segoe-mdl/e95b.png deleted file mode 100644 index 7094ff9024..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e95b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e95d.png b/hub/apps/design/style/images/segoe-mdl/e95d.png deleted file mode 100644 index 17e88ba1ea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e95d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e95e.png b/hub/apps/design/style/images/segoe-mdl/e95e.png deleted file mode 100644 index a8592de63f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e95e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e95f.png b/hub/apps/design/style/images/segoe-mdl/e95f.png deleted file mode 100644 index 850fbf4f7b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e95f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e960.png b/hub/apps/design/style/images/segoe-mdl/e960.png deleted file mode 100644 index f137fd7b32..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e960.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e961.png b/hub/apps/design/style/images/segoe-mdl/e961.png deleted file mode 100644 index bc20942776..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e961.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e962.png b/hub/apps/design/style/images/segoe-mdl/e962.png deleted file mode 100644 index d4845c50c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e962.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e963.png b/hub/apps/design/style/images/segoe-mdl/e963.png deleted file mode 100644 index 7693aef016..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e963.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e964.png b/hub/apps/design/style/images/segoe-mdl/e964.png deleted file mode 100644 index fdac13e931..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e964.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e965.png b/hub/apps/design/style/images/segoe-mdl/e965.png deleted file mode 100644 index 0dae2ecd52..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e965.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e966.png b/hub/apps/design/style/images/segoe-mdl/e966.png deleted file mode 100644 index f9a47d3fb6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e966.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e967.png b/hub/apps/design/style/images/segoe-mdl/e967.png deleted file mode 100644 index fa0d0262ee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e967.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e968.png b/hub/apps/design/style/images/segoe-mdl/e968.png deleted file mode 100644 index 9e872873bf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e968.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e969.png b/hub/apps/design/style/images/segoe-mdl/e969.png deleted file mode 100644 index 507c6edf72..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e969.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e96a.png b/hub/apps/design/style/images/segoe-mdl/e96a.png deleted file mode 100644 index 467076feb8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e96a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e96d.png b/hub/apps/design/style/images/segoe-mdl/e96d.png deleted file mode 100644 index 6d4a08124b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e96d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e96e.png b/hub/apps/design/style/images/segoe-mdl/e96e.png deleted file mode 100644 index da85e34361..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e96e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e96f.png b/hub/apps/design/style/images/segoe-mdl/e96f.png deleted file mode 100644 index 4e3c82833a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e96f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e970.png b/hub/apps/design/style/images/segoe-mdl/e970.png deleted file mode 100644 index 182a6feb2b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e970.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e971.png b/hub/apps/design/style/images/segoe-mdl/e971.png deleted file mode 100644 index 37b7de5c53..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e971.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e972.png b/hub/apps/design/style/images/segoe-mdl/e972.png deleted file mode 100644 index e359829844..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e972.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e973.png b/hub/apps/design/style/images/segoe-mdl/e973.png deleted file mode 100644 index 385bbfbe5a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e973.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e974.png b/hub/apps/design/style/images/segoe-mdl/e974.png deleted file mode 100644 index adc583ae96..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e974.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e975.png b/hub/apps/design/style/images/segoe-mdl/e975.png deleted file mode 100644 index d42fddfef4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e975.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e976.png b/hub/apps/design/style/images/segoe-mdl/e976.png deleted file mode 100644 index 591ad8674e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e976.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e977.png b/hub/apps/design/style/images/segoe-mdl/e977.png deleted file mode 100644 index f78c7b383a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e977.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e978.png b/hub/apps/design/style/images/segoe-mdl/e978.png deleted file mode 100644 index c43af09afd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e978.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e979.png b/hub/apps/design/style/images/segoe-mdl/e979.png deleted file mode 100644 index b8358c1da0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e979.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e97a.png b/hub/apps/design/style/images/segoe-mdl/e97a.png deleted file mode 100644 index 4248ce295b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e97a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e97b.png b/hub/apps/design/style/images/segoe-mdl/e97b.png deleted file mode 100644 index 7bf73f0305..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e97b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e97c.png b/hub/apps/design/style/images/segoe-mdl/e97c.png deleted file mode 100644 index d99e8a4d50..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e97c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e97d.png b/hub/apps/design/style/images/segoe-mdl/e97d.png deleted file mode 100644 index c0043ebad7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e97d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e97e.png b/hub/apps/design/style/images/segoe-mdl/e97e.png deleted file mode 100644 index 28792f0e2c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e97e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e97f.png b/hub/apps/design/style/images/segoe-mdl/e97f.png deleted file mode 100644 index de5c003ef6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e97f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e980.png b/hub/apps/design/style/images/segoe-mdl/e980.png deleted file mode 100644 index 5fc998d275..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e980.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e981.png b/hub/apps/design/style/images/segoe-mdl/e981.png deleted file mode 100644 index 4f674b4abd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e981.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e982.png b/hub/apps/design/style/images/segoe-mdl/e982.png deleted file mode 100644 index 98b275d2c9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e982.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e983.png b/hub/apps/design/style/images/segoe-mdl/e983.png deleted file mode 100644 index ee8ad56355..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e983.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e984.png b/hub/apps/design/style/images/segoe-mdl/e984.png deleted file mode 100644 index 778d27ce4a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e984.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e985.png b/hub/apps/design/style/images/segoe-mdl/e985.png deleted file mode 100644 index 7fdf7ec03d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e985.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e986.png b/hub/apps/design/style/images/segoe-mdl/e986.png deleted file mode 100644 index 8117a82a17..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e986.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e987.png b/hub/apps/design/style/images/segoe-mdl/e987.png deleted file mode 100644 index 9dec51c52d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e987.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e988.png b/hub/apps/design/style/images/segoe-mdl/e988.png deleted file mode 100644 index 116b822e1f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e988.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e989.png b/hub/apps/design/style/images/segoe-mdl/e989.png deleted file mode 100644 index 873e155c68..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e989.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e98a.png b/hub/apps/design/style/images/segoe-mdl/e98a.png deleted file mode 100644 index f507fbc144..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e98a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e98f.png b/hub/apps/design/style/images/segoe-mdl/e98f.png deleted file mode 100644 index c43930d0de..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e98f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e990.png b/hub/apps/design/style/images/segoe-mdl/e990.png deleted file mode 100644 index 3591f6506c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e990.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e992.png b/hub/apps/design/style/images/segoe-mdl/e992.png deleted file mode 100644 index f89da05891..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e992.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e993.png b/hub/apps/design/style/images/segoe-mdl/e993.png deleted file mode 100644 index abe60ce293..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e993.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e994.png b/hub/apps/design/style/images/segoe-mdl/e994.png deleted file mode 100644 index a9069c982b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e994.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e995.png b/hub/apps/design/style/images/segoe-mdl/e995.png deleted file mode 100644 index ab9d397d56..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e995.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e996.png b/hub/apps/design/style/images/segoe-mdl/e996.png deleted file mode 100644 index b77c188828..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e996.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e998.png b/hub/apps/design/style/images/segoe-mdl/e998.png deleted file mode 100644 index 43a1f67bab..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e998.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e99a.png b/hub/apps/design/style/images/segoe-mdl/e99a.png deleted file mode 100644 index 1f53d331da..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e99a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9a1.png b/hub/apps/design/style/images/segoe-mdl/e9a1.png deleted file mode 100644 index 292b6609c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9a6.png b/hub/apps/design/style/images/segoe-mdl/e9a6.png deleted file mode 100644 index 05bb8fff9b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9a8.png b/hub/apps/design/style/images/segoe-mdl/e9a8.png deleted file mode 100644 index 6f5332b14d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9a9.png b/hub/apps/design/style/images/segoe-mdl/e9a9.png deleted file mode 100644 index 6d0802667f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9aa.png b/hub/apps/design/style/images/segoe-mdl/e9aa.png deleted file mode 100644 index 88ea4bb66c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9ab.png b/hub/apps/design/style/images/segoe-mdl/e9ab.png deleted file mode 100644 index a3f1fb16cf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9ac.png b/hub/apps/design/style/images/segoe-mdl/e9ac.png deleted file mode 100644 index 11a0292f76..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9ad.png b/hub/apps/design/style/images/segoe-mdl/e9ad.png deleted file mode 100644 index 3b81f8fbba..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9ae.png b/hub/apps/design/style/images/segoe-mdl/e9ae.png deleted file mode 100644 index 6633a057d8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9af.png b/hub/apps/design/style/images/segoe-mdl/e9af.png deleted file mode 100644 index 1d694aaa3f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9af.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b0.png b/hub/apps/design/style/images/segoe-mdl/e9b0.png deleted file mode 100644 index b85028394b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b1.png b/hub/apps/design/style/images/segoe-mdl/e9b1.png deleted file mode 100644 index 9afa93b8a3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b2.png b/hub/apps/design/style/images/segoe-mdl/e9b2.png deleted file mode 100644 index 2bcf04c04d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b3.png b/hub/apps/design/style/images/segoe-mdl/e9b3.png deleted file mode 100644 index 94d2977ea3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b4.png b/hub/apps/design/style/images/segoe-mdl/e9b4.png deleted file mode 100644 index f0a7c73a53..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b5.png b/hub/apps/design/style/images/segoe-mdl/e9b5.png deleted file mode 100644 index 16d5eb0566..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b6.png b/hub/apps/design/style/images/segoe-mdl/e9b6.png deleted file mode 100644 index eea9c1e91a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b7.png b/hub/apps/design/style/images/segoe-mdl/e9b7.png deleted file mode 100644 index 0b4a4c7496..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b8.png b/hub/apps/design/style/images/segoe-mdl/e9b8.png deleted file mode 100644 index 12f3698976..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9b9.png b/hub/apps/design/style/images/segoe-mdl/e9b9.png deleted file mode 100644 index bcd1282911..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9ba.png b/hub/apps/design/style/images/segoe-mdl/e9ba.png deleted file mode 100644 index 55b5d9e368..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9bb.png b/hub/apps/design/style/images/segoe-mdl/e9bb.png deleted file mode 100644 index bc5446bdde..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9bc.png b/hub/apps/design/style/images/segoe-mdl/e9bc.png deleted file mode 100644 index ee6d22962c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9bc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9ca.png b/hub/apps/design/style/images/segoe-mdl/e9ca.png deleted file mode 100644 index e9093f693b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9ce.png b/hub/apps/design/style/images/segoe-mdl/e9ce.png deleted file mode 100644 index cbf9d0eef8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9d2.png b/hub/apps/design/style/images/segoe-mdl/e9d2.png deleted file mode 100644 index f5e61b05ff..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9d5.png b/hub/apps/design/style/images/segoe-mdl/e9d5.png deleted file mode 100644 index 52a720d5ee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9d9.png b/hub/apps/design/style/images/segoe-mdl/e9d9.png deleted file mode 100644 index a1fe353b89..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9e9.png b/hub/apps/design/style/images/segoe-mdl/e9e9.png deleted file mode 100644 index 3dacc26d5c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9f3.png b/hub/apps/design/style/images/segoe-mdl/e9f3.png deleted file mode 100644 index 9d31491dc7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9f5.png b/hub/apps/design/style/images/segoe-mdl/e9f5.png deleted file mode 100644 index 8755975f1c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/e9f9.png b/hub/apps/design/style/images/segoe-mdl/e9f9.png deleted file mode 100644 index 568c419c09..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/e9f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea0c.png b/hub/apps/design/style/images/segoe-mdl/ea0c.png deleted file mode 100644 index 45d1860d2c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea0c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea0d.png b/hub/apps/design/style/images/segoe-mdl/ea0d.png deleted file mode 100644 index eca4a7dd8a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea0d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea14.png b/hub/apps/design/style/images/segoe-mdl/ea14.png deleted file mode 100644 index a6f0fa2c3b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea14.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea18.png b/hub/apps/design/style/images/segoe-mdl/ea18.png deleted file mode 100644 index 94463d9079..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea18.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea1f.png b/hub/apps/design/style/images/segoe-mdl/ea1f.png deleted file mode 100644 index cb16311882..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea21.png b/hub/apps/design/style/images/segoe-mdl/ea21.png deleted file mode 100644 index cd8e79ed8e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea21.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea24.png b/hub/apps/design/style/images/segoe-mdl/ea24.png deleted file mode 100644 index c237eea977..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea24.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea35.png b/hub/apps/design/style/images/segoe-mdl/ea35.png deleted file mode 100644 index 2611a2f4f5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea35.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea37.png b/hub/apps/design/style/images/segoe-mdl/ea37.png deleted file mode 100644 index 6ed9b9dfa5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea37.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea38.png b/hub/apps/design/style/images/segoe-mdl/ea38.png deleted file mode 100644 index e9509a9a8a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea38.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea39.png b/hub/apps/design/style/images/segoe-mdl/ea39.png deleted file mode 100644 index 5115d0b0a5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea39.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea3a.png b/hub/apps/design/style/images/segoe-mdl/ea3a.png deleted file mode 100644 index e919b10267..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea3b.png b/hub/apps/design/style/images/segoe-mdl/ea3b.png deleted file mode 100644 index 79f80dde84..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea3c.png b/hub/apps/design/style/images/segoe-mdl/ea3c.png deleted file mode 100644 index ff2bb126f4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea3d.png b/hub/apps/design/style/images/segoe-mdl/ea3d.png deleted file mode 100644 index 51e6610fb6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea3f.png b/hub/apps/design/style/images/segoe-mdl/ea3f.png deleted file mode 100644 index 5f84c228c1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea40.png b/hub/apps/design/style/images/segoe-mdl/ea40.png deleted file mode 100644 index d407b05b3a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea40.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea41.png b/hub/apps/design/style/images/segoe-mdl/ea41.png deleted file mode 100644 index 1c50f52eb2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea41.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea42.png b/hub/apps/design/style/images/segoe-mdl/ea42.png deleted file mode 100644 index 7e64ee3222..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea42.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea43.png b/hub/apps/design/style/images/segoe-mdl/ea43.png deleted file mode 100644 index 51f9ddecb9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea43.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea44.png b/hub/apps/design/style/images/segoe-mdl/ea44.png deleted file mode 100644 index 961f0ca7fc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea44.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea47.png b/hub/apps/design/style/images/segoe-mdl/ea47.png deleted file mode 100644 index 6ac6b55eb0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea47.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea48.png b/hub/apps/design/style/images/segoe-mdl/ea48.png deleted file mode 100644 index df00764a2e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea48.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea49.png b/hub/apps/design/style/images/segoe-mdl/ea49.png deleted file mode 100644 index 07a59a86b2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea49.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea4a.png b/hub/apps/design/style/images/segoe-mdl/ea4a.png deleted file mode 100644 index d86cf30a74..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea4b.png b/hub/apps/design/style/images/segoe-mdl/ea4b.png deleted file mode 100644 index 4da1bb57bf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea4b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea4c.png b/hub/apps/design/style/images/segoe-mdl/ea4c.png deleted file mode 100644 index 98a276361c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea4e.png b/hub/apps/design/style/images/segoe-mdl/ea4e.png deleted file mode 100644 index 2062d61e6b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea4f.png b/hub/apps/design/style/images/segoe-mdl/ea4f.png deleted file mode 100644 index 4a0787cc68..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea50.png b/hub/apps/design/style/images/segoe-mdl/ea50.png deleted file mode 100644 index 8089c5a76d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea50.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea51.png b/hub/apps/design/style/images/segoe-mdl/ea51.png deleted file mode 100644 index 02a163501f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea51.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea52.png b/hub/apps/design/style/images/segoe-mdl/ea52.png deleted file mode 100644 index 89980f1e01..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea52.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea53.png b/hub/apps/design/style/images/segoe-mdl/ea53.png deleted file mode 100644 index dc920720a7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea53.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea54.png b/hub/apps/design/style/images/segoe-mdl/ea54.png deleted file mode 100644 index 69f80bbf4f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea54.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea55.png b/hub/apps/design/style/images/segoe-mdl/ea55.png deleted file mode 100644 index cbbc519c0a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea55.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea56.png b/hub/apps/design/style/images/segoe-mdl/ea56.png deleted file mode 100644 index 383573c8d7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea56.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea57.png b/hub/apps/design/style/images/segoe-mdl/ea57.png deleted file mode 100644 index 5adc4dbe5e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea57.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea58.png b/hub/apps/design/style/images/segoe-mdl/ea58.png deleted file mode 100644 index 2fd24e48a6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea58.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea5b.png b/hub/apps/design/style/images/segoe-mdl/ea5b.png deleted file mode 100644 index af7481623a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea5c.png b/hub/apps/design/style/images/segoe-mdl/ea5c.png deleted file mode 100644 index 2ca6ad4d6d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea5e.png b/hub/apps/design/style/images/segoe-mdl/ea5e.png deleted file mode 100644 index 576f6d41a1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea5f.png b/hub/apps/design/style/images/segoe-mdl/ea5f.png deleted file mode 100644 index cd2edbe39d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea60.png b/hub/apps/design/style/images/segoe-mdl/ea60.png deleted file mode 100644 index 7fa689bc58..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea60.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea61.png b/hub/apps/design/style/images/segoe-mdl/ea61.png deleted file mode 100644 index a7876205b6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea61.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea62.png b/hub/apps/design/style/images/segoe-mdl/ea62.png deleted file mode 100644 index 741afe9946..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea62.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea63.png b/hub/apps/design/style/images/segoe-mdl/ea63.png deleted file mode 100644 index 3f3ae29269..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea63.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea64.png b/hub/apps/design/style/images/segoe-mdl/ea64.png deleted file mode 100644 index 1f98224ced..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea64.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea65.png b/hub/apps/design/style/images/segoe-mdl/ea65.png deleted file mode 100644 index 05fb49454d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea65.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea69.png b/hub/apps/design/style/images/segoe-mdl/ea69.png deleted file mode 100644 index 7c85770df9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea69.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea6a.png b/hub/apps/design/style/images/segoe-mdl/ea6a.png deleted file mode 100644 index 765ba983b1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea6a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea6c.png b/hub/apps/design/style/images/segoe-mdl/ea6c.png deleted file mode 100644 index 4b71c9b3d3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea6c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea79.png b/hub/apps/design/style/images/segoe-mdl/ea79.png deleted file mode 100644 index fd513a616a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea79.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea80.png b/hub/apps/design/style/images/segoe-mdl/ea80.png deleted file mode 100644 index 8782ec3f1a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea80.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea81.png b/hub/apps/design/style/images/segoe-mdl/ea81.png deleted file mode 100644 index e2152a65cb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea81.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea82.png b/hub/apps/design/style/images/segoe-mdl/ea82.png deleted file mode 100644 index 62445f8230..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea82.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea83.png b/hub/apps/design/style/images/segoe-mdl/ea83.png deleted file mode 100644 index 7d1c937020..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea83.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea84.png b/hub/apps/design/style/images/segoe-mdl/ea84.png deleted file mode 100644 index 51c0f35041..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea84.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea86.png b/hub/apps/design/style/images/segoe-mdl/ea86.png deleted file mode 100644 index f25a4bd767..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea86.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea89.png b/hub/apps/design/style/images/segoe-mdl/ea89.png deleted file mode 100644 index 4ecc8d190b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea89.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea8a.png b/hub/apps/design/style/images/segoe-mdl/ea8a.png deleted file mode 100644 index e1de99f183..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea8b.png b/hub/apps/design/style/images/segoe-mdl/ea8b.png deleted file mode 100644 index a8de0a3cac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea8b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea8c.png b/hub/apps/design/style/images/segoe-mdl/ea8c.png deleted file mode 100644 index c14cc0d18f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea8c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea8d.png b/hub/apps/design/style/images/segoe-mdl/ea8d.png deleted file mode 100644 index 75562c2da9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea8d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea8e.png b/hub/apps/design/style/images/segoe-mdl/ea8e.png deleted file mode 100644 index acbee3b047..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea8e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea8f.png b/hub/apps/design/style/images/segoe-mdl/ea8f.png deleted file mode 100644 index ca636dd062..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea8f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea90.png b/hub/apps/design/style/images/segoe-mdl/ea90.png deleted file mode 100644 index a1c95c6c95..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea90.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea91.png b/hub/apps/design/style/images/segoe-mdl/ea91.png deleted file mode 100644 index 7ded0a15c2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea91.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea92.png b/hub/apps/design/style/images/segoe-mdl/ea92.png deleted file mode 100644 index 540cc69b07..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea92.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea93.png b/hub/apps/design/style/images/segoe-mdl/ea93.png deleted file mode 100644 index 2bbddefc08..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea93.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea94.png b/hub/apps/design/style/images/segoe-mdl/ea94.png deleted file mode 100644 index 30c821b16a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea94.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea95.png b/hub/apps/design/style/images/segoe-mdl/ea95.png deleted file mode 100644 index d382c5a423..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea95.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea97.png b/hub/apps/design/style/images/segoe-mdl/ea97.png deleted file mode 100644 index ef259fac55..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea97.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea98.png b/hub/apps/design/style/images/segoe-mdl/ea98.png deleted file mode 100644 index f65fa6d1ab..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea98.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ea99.png b/hub/apps/design/style/images/segoe-mdl/ea99.png deleted file mode 100644 index 17364ff1b8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ea99.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eac2.png b/hub/apps/design/style/images/segoe-mdl/eac2.png deleted file mode 100644 index 7af2e98411..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eac2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eadf.png b/hub/apps/design/style/images/segoe-mdl/eadf.png deleted file mode 100644 index 071a361b3f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eadf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eafc.png b/hub/apps/design/style/images/segoe-mdl/eafc.png deleted file mode 100644 index 2647563895..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eafc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb05.png b/hub/apps/design/style/images/segoe-mdl/eb05.png deleted file mode 100644 index 84a8bebde3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb05.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb0f.png b/hub/apps/design/style/images/segoe-mdl/eb0f.png deleted file mode 100644 index 9ecd7c9028..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb0f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb11.png b/hub/apps/design/style/images/segoe-mdl/eb11.png deleted file mode 100644 index d2785adbba..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb11.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb3c.png b/hub/apps/design/style/images/segoe-mdl/eb3c.png deleted file mode 100644 index 613dc0dff5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb41.png b/hub/apps/design/style/images/segoe-mdl/eb41.png deleted file mode 100644 index 0f49e72127..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb41.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb42.png b/hub/apps/design/style/images/segoe-mdl/eb42.png deleted file mode 100644 index 77546d0354..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb42.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb44.png b/hub/apps/design/style/images/segoe-mdl/eb44.png deleted file mode 100644 index d462705bd9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb44.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb47.png b/hub/apps/design/style/images/segoe-mdl/eb47.png deleted file mode 100644 index e4d6809a79..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb47.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb48.png b/hub/apps/design/style/images/segoe-mdl/eb48.png deleted file mode 100644 index 875b047d9a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb48.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb49.png b/hub/apps/design/style/images/segoe-mdl/eb49.png deleted file mode 100644 index 6381a679d3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb49.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb4a.png b/hub/apps/design/style/images/segoe-mdl/eb4a.png deleted file mode 100644 index fe8c954723..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb4b.png b/hub/apps/design/style/images/segoe-mdl/eb4b.png deleted file mode 100644 index 9ee43201fb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb4b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb4c.png b/hub/apps/design/style/images/segoe-mdl/eb4c.png deleted file mode 100644 index a525b46ad9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb4d.png b/hub/apps/design/style/images/segoe-mdl/eb4d.png deleted file mode 100644 index 9b9fe473f5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb4d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb4e.png b/hub/apps/design/style/images/segoe-mdl/eb4e.png deleted file mode 100644 index 8f35f5f14b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb4f.png b/hub/apps/design/style/images/segoe-mdl/eb4f.png deleted file mode 100644 index 842ede6b0b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb50.png b/hub/apps/design/style/images/segoe-mdl/eb50.png deleted file mode 100644 index ca59aad76a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb50.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb51.png b/hub/apps/design/style/images/segoe-mdl/eb51.png deleted file mode 100644 index 04ff9c018a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb51.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb52.png b/hub/apps/design/style/images/segoe-mdl/eb52.png deleted file mode 100644 index d8ef1aa5db..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb52.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb55.png b/hub/apps/design/style/images/segoe-mdl/eb55.png deleted file mode 100644 index f002056205..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb55.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb56.png b/hub/apps/design/style/images/segoe-mdl/eb56.png deleted file mode 100644 index 7a2617ad7d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb56.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb57.png b/hub/apps/design/style/images/segoe-mdl/eb57.png deleted file mode 100644 index 09bf58d1b2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb57.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb58.png b/hub/apps/design/style/images/segoe-mdl/eb58.png deleted file mode 100644 index 5a56823ec7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb58.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb59.png b/hub/apps/design/style/images/segoe-mdl/eb59.png deleted file mode 100644 index b9e7ccd4c2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb59.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb5a.png b/hub/apps/design/style/images/segoe-mdl/eb5a.png deleted file mode 100644 index b77cb9d62f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb5b.png b/hub/apps/design/style/images/segoe-mdl/eb5b.png deleted file mode 100644 index b8a4b4faeb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb5c.png b/hub/apps/design/style/images/segoe-mdl/eb5c.png deleted file mode 100644 index 69853b4b06..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb5d.png b/hub/apps/design/style/images/segoe-mdl/eb5d.png deleted file mode 100644 index ba69c3470a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb5d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb5e.png b/hub/apps/design/style/images/segoe-mdl/eb5e.png deleted file mode 100644 index d46ed706a0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb5f.png b/hub/apps/design/style/images/segoe-mdl/eb5f.png deleted file mode 100644 index 644bbdf92a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb60.png b/hub/apps/design/style/images/segoe-mdl/eb60.png deleted file mode 100644 index aae3dda832..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb60.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb61.png b/hub/apps/design/style/images/segoe-mdl/eb61.png deleted file mode 100644 index db1451e44a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb61.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb62.png b/hub/apps/design/style/images/segoe-mdl/eb62.png deleted file mode 100644 index aba5a46bdb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb62.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb63.png b/hub/apps/design/style/images/segoe-mdl/eb63.png deleted file mode 100644 index 6e44c9e833..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb63.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb66.png b/hub/apps/design/style/images/segoe-mdl/eb66.png deleted file mode 100644 index 1cc2c8e43a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb66.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb67.png b/hub/apps/design/style/images/segoe-mdl/eb67.png deleted file mode 100644 index 6203a7e9ff..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb67.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb68.png b/hub/apps/design/style/images/segoe-mdl/eb68.png deleted file mode 100644 index 4b5e86aba2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb68.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb7e.png b/hub/apps/design/style/images/segoe-mdl/eb7e.png deleted file mode 100644 index ddcbb1bf1c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb7e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb82.png b/hub/apps/design/style/images/segoe-mdl/eb82.png deleted file mode 100644 index d27125e803..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb82.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb83.png b/hub/apps/design/style/images/segoe-mdl/eb83.png deleted file mode 100644 index 0eafea25e7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb83.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb84.png b/hub/apps/design/style/images/segoe-mdl/eb84.png deleted file mode 100644 index e90b9fae38..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb84.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb85.png b/hub/apps/design/style/images/segoe-mdl/eb85.png deleted file mode 100644 index 011462f3c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb85.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb86.png b/hub/apps/design/style/images/segoe-mdl/eb86.png deleted file mode 100644 index 5e9688c77a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb86.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb87.png b/hub/apps/design/style/images/segoe-mdl/eb87.png deleted file mode 100644 index d548fef65e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb87.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb88.png b/hub/apps/design/style/images/segoe-mdl/eb88.png deleted file mode 100644 index 965374b68a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb88.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb89.png b/hub/apps/design/style/images/segoe-mdl/eb89.png deleted file mode 100644 index 5d8a58fa0f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb89.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb8a.png b/hub/apps/design/style/images/segoe-mdl/eb8a.png deleted file mode 100644 index b50a5674b4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb8b.png b/hub/apps/design/style/images/segoe-mdl/eb8b.png deleted file mode 100644 index 418c533fe1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb8b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb8c.png b/hub/apps/design/style/images/segoe-mdl/eb8c.png deleted file mode 100644 index d27125e803..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb8c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb8d.png b/hub/apps/design/style/images/segoe-mdl/eb8d.png deleted file mode 100644 index b840c2a62a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb8d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb90.png b/hub/apps/design/style/images/segoe-mdl/eb90.png deleted file mode 100644 index 40a17816b5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb90.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb91.png b/hub/apps/design/style/images/segoe-mdl/eb91.png deleted file mode 100644 index 68d2382017..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb91.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb95.png b/hub/apps/design/style/images/segoe-mdl/eb95.png deleted file mode 100644 index deff6aa41a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb95.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb96.png b/hub/apps/design/style/images/segoe-mdl/eb96.png deleted file mode 100644 index 1738f965fc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb96.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb97.png b/hub/apps/design/style/images/segoe-mdl/eb97.png deleted file mode 100644 index 08fcf949d3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb97.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb9d.png b/hub/apps/design/style/images/segoe-mdl/eb9d.png deleted file mode 100644 index fdfdca0e46..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb9d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb9e.png b/hub/apps/design/style/images/segoe-mdl/eb9e.png deleted file mode 100644 index 4cc8298531..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb9e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eb9f.png b/hub/apps/design/style/images/segoe-mdl/eb9f.png deleted file mode 100644 index ce1098f2b4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eb9f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba0.png b/hub/apps/design/style/images/segoe-mdl/eba0.png deleted file mode 100644 index 1fbf77d6aa..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba1.png b/hub/apps/design/style/images/segoe-mdl/eba1.png deleted file mode 100644 index e47512c61c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba2.png b/hub/apps/design/style/images/segoe-mdl/eba2.png deleted file mode 100644 index 066e237c58..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba3.png b/hub/apps/design/style/images/segoe-mdl/eba3.png deleted file mode 100644 index e8e5760ba8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba4.png b/hub/apps/design/style/images/segoe-mdl/eba4.png deleted file mode 100644 index 63a173d2ab..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba5.png b/hub/apps/design/style/images/segoe-mdl/eba5.png deleted file mode 100644 index 5e908c5494..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba6.png b/hub/apps/design/style/images/segoe-mdl/eba6.png deleted file mode 100644 index d2b18715d4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba7.png b/hub/apps/design/style/images/segoe-mdl/eba7.png deleted file mode 100644 index 1e6b0f0cb0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba8.png b/hub/apps/design/style/images/segoe-mdl/eba8.png deleted file mode 100644 index bc37ed74aa..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eba9.png b/hub/apps/design/style/images/segoe-mdl/eba9.png deleted file mode 100644 index 12f43d4dd0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eba9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebaa.png b/hub/apps/design/style/images/segoe-mdl/ebaa.png deleted file mode 100644 index 6c70978aa7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebab.png b/hub/apps/design/style/images/segoe-mdl/ebab.png deleted file mode 100644 index 2f8dcfddc5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebab.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebac.png b/hub/apps/design/style/images/segoe-mdl/ebac.png deleted file mode 100644 index b9548594da..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebac.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebad.png b/hub/apps/design/style/images/segoe-mdl/ebad.png deleted file mode 100644 index 356fe706c4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebae.png b/hub/apps/design/style/images/segoe-mdl/ebae.png deleted file mode 100644 index 4b5709a0c0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebaf.png b/hub/apps/design/style/images/segoe-mdl/ebaf.png deleted file mode 100644 index 6ed606e3c7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb0.png b/hub/apps/design/style/images/segoe-mdl/ebb0.png deleted file mode 100644 index 7d05bafa31..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb1.png b/hub/apps/design/style/images/segoe-mdl/ebb1.png deleted file mode 100644 index b4ce2dbd6d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb2.png b/hub/apps/design/style/images/segoe-mdl/ebb2.png deleted file mode 100644 index bf6fa7feff..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb3.png b/hub/apps/design/style/images/segoe-mdl/ebb3.png deleted file mode 100644 index 7cedd4f945..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb4.png b/hub/apps/design/style/images/segoe-mdl/ebb4.png deleted file mode 100644 index b5773368c9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb5.png b/hub/apps/design/style/images/segoe-mdl/ebb5.png deleted file mode 100644 index b58bef3573..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb6.png b/hub/apps/design/style/images/segoe-mdl/ebb6.png deleted file mode 100644 index 6f992cb031..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb7.png b/hub/apps/design/style/images/segoe-mdl/ebb7.png deleted file mode 100644 index 9123f57ac4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb8.png b/hub/apps/design/style/images/segoe-mdl/ebb8.png deleted file mode 100644 index bd6d4b9a9c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebb9.png b/hub/apps/design/style/images/segoe-mdl/ebb9.png deleted file mode 100644 index e64f6a3aa9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebb9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebba.png b/hub/apps/design/style/images/segoe-mdl/ebba.png deleted file mode 100644 index a58d59f725..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebba.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebbb.png b/hub/apps/design/style/images/segoe-mdl/ebbb.png deleted file mode 100644 index e8efdd9380..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebbb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebbc.png b/hub/apps/design/style/images/segoe-mdl/ebbc.png deleted file mode 100644 index 8532164914..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebbc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebbd.png b/hub/apps/design/style/images/segoe-mdl/ebbd.png deleted file mode 100644 index 13070a074e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebbd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebbe.png b/hub/apps/design/style/images/segoe-mdl/ebbe.png deleted file mode 100644 index ffdc781048..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebbe.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebbf.png b/hub/apps/design/style/images/segoe-mdl/ebbf.png deleted file mode 100644 index e03356a9ea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebbf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebc0.png b/hub/apps/design/style/images/segoe-mdl/ebc0.png deleted file mode 100644 index 7bf3039586..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebc0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebc3.png b/hub/apps/design/style/images/segoe-mdl/ebc3.png deleted file mode 100644 index bcfa2963f5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebc3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebc4.png b/hub/apps/design/style/images/segoe-mdl/ebc4.png deleted file mode 100644 index f16c53000a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebc4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebc5.png b/hub/apps/design/style/images/segoe-mdl/ebc5.png deleted file mode 100644 index 5c880be124..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebc5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebc6.png b/hub/apps/design/style/images/segoe-mdl/ebc6.png deleted file mode 100644 index 933f6d6a8d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebd2.png b/hub/apps/design/style/images/segoe-mdl/ebd2.png deleted file mode 100644 index b86570acac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebd2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebd4.png b/hub/apps/design/style/images/segoe-mdl/ebd4.png deleted file mode 100644 index 4f5cfa86ea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebd4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebd5.png b/hub/apps/design/style/images/segoe-mdl/ebd5.png deleted file mode 100644 index ff2564dcfb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebd5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebd6.png b/hub/apps/design/style/images/segoe-mdl/ebd6.png deleted file mode 100644 index 5d5383f3c4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebd6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebd7.png b/hub/apps/design/style/images/segoe-mdl/ebd7.png deleted file mode 100644 index 6348acc805..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebd7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebd8.png b/hub/apps/design/style/images/segoe-mdl/ebd8.png deleted file mode 100644 index 76ed3cf33e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebd8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebd9.png b/hub/apps/design/style/images/segoe-mdl/ebd9.png deleted file mode 100644 index cdbfd3070c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebd9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebda.png b/hub/apps/design/style/images/segoe-mdl/ebda.png deleted file mode 100644 index 5635ad647b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebda.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebdb.png b/hub/apps/design/style/images/segoe-mdl/ebdb.png deleted file mode 100644 index 3da3d2dcd6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebdb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebde.png b/hub/apps/design/style/images/segoe-mdl/ebde.png deleted file mode 100644 index 261f25a871..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebde.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebe6.png b/hub/apps/design/style/images/segoe-mdl/ebe6.png deleted file mode 100644 index aaa6469092..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebe6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebe7.png b/hub/apps/design/style/images/segoe-mdl/ebe7.png deleted file mode 100644 index 6c56eb1fc0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebe7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebe8.png b/hub/apps/design/style/images/segoe-mdl/ebe8.png deleted file mode 100644 index 02acfd110b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebe8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebfc.png b/hub/apps/design/style/images/segoe-mdl/ebfc.png deleted file mode 100644 index 2a9dd8878c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebfc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebfd.png b/hub/apps/design/style/images/segoe-mdl/ebfd.png deleted file mode 100644 index 2a0caaac5c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebfd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebfe.png b/hub/apps/design/style/images/segoe-mdl/ebfe.png deleted file mode 100644 index 0d16048432..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebfe.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ebff.png b/hub/apps/design/style/images/segoe-mdl/ebff.png deleted file mode 100644 index 7b95df27bf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ebff.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec00.png b/hub/apps/design/style/images/segoe-mdl/ec00.png deleted file mode 100644 index aa9cc62c38..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec00.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec02.png b/hub/apps/design/style/images/segoe-mdl/ec02.png deleted file mode 100644 index 28b53ad0f6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec02.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec05.png b/hub/apps/design/style/images/segoe-mdl/ec05.png deleted file mode 100644 index 12c0cdda50..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec05.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec06.png b/hub/apps/design/style/images/segoe-mdl/ec06.png deleted file mode 100644 index 3565785ce8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec06.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec07.png b/hub/apps/design/style/images/segoe-mdl/ec07.png deleted file mode 100644 index e179bf3650..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec07.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec08.png b/hub/apps/design/style/images/segoe-mdl/ec08.png deleted file mode 100644 index 7becddd796..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec08.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec09.png b/hub/apps/design/style/images/segoe-mdl/ec09.png deleted file mode 100644 index 5fea28e5af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec09.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec0a.png b/hub/apps/design/style/images/segoe-mdl/ec0a.png deleted file mode 100644 index 680a265eae..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec0a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec0b.png b/hub/apps/design/style/images/segoe-mdl/ec0b.png deleted file mode 100644 index d38fbd7abc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec0b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec11.png b/hub/apps/design/style/images/segoe-mdl/ec11.png deleted file mode 100644 index 541014a104..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec11.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec12.png b/hub/apps/design/style/images/segoe-mdl/ec12.png deleted file mode 100644 index 41c2f800f4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec12.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec13.png b/hub/apps/design/style/images/segoe-mdl/ec13.png deleted file mode 100644 index 5dee371e86..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec13.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec14.png b/hub/apps/design/style/images/segoe-mdl/ec14.png deleted file mode 100644 index 79c0e6e71d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec14.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec15.png b/hub/apps/design/style/images/segoe-mdl/ec15.png deleted file mode 100644 index 40196fb833..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec15.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec16.png b/hub/apps/design/style/images/segoe-mdl/ec16.png deleted file mode 100644 index 863f9f626c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec16.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec19.png b/hub/apps/design/style/images/segoe-mdl/ec19.png deleted file mode 100644 index 0fe1435436..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec19.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec1b.png b/hub/apps/design/style/images/segoe-mdl/ec1b.png deleted file mode 100644 index 3b237900a7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec1b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec1e.png b/hub/apps/design/style/images/segoe-mdl/ec1e.png deleted file mode 100644 index b10d578cd9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec1e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec20.png b/hub/apps/design/style/images/segoe-mdl/ec20.png deleted file mode 100644 index 0fe97695ac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec20.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec24.png b/hub/apps/design/style/images/segoe-mdl/ec24.png deleted file mode 100644 index 7b2c75994b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec24.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec25.png b/hub/apps/design/style/images/segoe-mdl/ec25.png deleted file mode 100644 index e2c5a23e51..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec25.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec26.png b/hub/apps/design/style/images/segoe-mdl/ec26.png deleted file mode 100644 index 1b6db049cf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec26.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec27.png b/hub/apps/design/style/images/segoe-mdl/ec27.png deleted file mode 100644 index 7d523f5036..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec27.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec31.png b/hub/apps/design/style/images/segoe-mdl/ec31.png deleted file mode 100644 index 00990dec21..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec31.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec32.png b/hub/apps/design/style/images/segoe-mdl/ec32.png deleted file mode 100644 index 71d71d7ddb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec32.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec37.png b/hub/apps/design/style/images/segoe-mdl/ec37.png deleted file mode 100644 index 66f8e82758..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec37.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec38.png b/hub/apps/design/style/images/segoe-mdl/ec38.png deleted file mode 100644 index 71defaa27e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec38.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec39.png b/hub/apps/design/style/images/segoe-mdl/ec39.png deleted file mode 100644 index e8e93f4f8b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec39.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec3a.png b/hub/apps/design/style/images/segoe-mdl/ec3a.png deleted file mode 100644 index a2fa56ae8f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec3b.png b/hub/apps/design/style/images/segoe-mdl/ec3b.png deleted file mode 100644 index af90bfbf9b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec3c.png b/hub/apps/design/style/images/segoe-mdl/ec3c.png deleted file mode 100644 index 7895eaca52..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec3d.png b/hub/apps/design/style/images/segoe-mdl/ec3d.png deleted file mode 100644 index 6d3745c3ae..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec3e.png b/hub/apps/design/style/images/segoe-mdl/ec3e.png deleted file mode 100644 index b4ed426aa9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec3e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec3f.png b/hub/apps/design/style/images/segoe-mdl/ec3f.png deleted file mode 100644 index ad97007729..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec40.png b/hub/apps/design/style/images/segoe-mdl/ec40.png deleted file mode 100644 index f32349a6bb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec40.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec41.png b/hub/apps/design/style/images/segoe-mdl/ec41.png deleted file mode 100644 index 0c84fdfee8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec41.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec42.png b/hub/apps/design/style/images/segoe-mdl/ec42.png deleted file mode 100644 index 1238eb8785..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec42.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec43.png b/hub/apps/design/style/images/segoe-mdl/ec43.png deleted file mode 100644 index dc6306b96e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec43.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec44.png b/hub/apps/design/style/images/segoe-mdl/ec44.png deleted file mode 100644 index c4cad30746..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec44.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec45.png b/hub/apps/design/style/images/segoe-mdl/ec45.png deleted file mode 100644 index 1170fdabbc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec45.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec46.png b/hub/apps/design/style/images/segoe-mdl/ec46.png deleted file mode 100644 index fb73f54047..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec46.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec47.png b/hub/apps/design/style/images/segoe-mdl/ec47.png deleted file mode 100644 index f0d3a56d57..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec47.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec48.png b/hub/apps/design/style/images/segoe-mdl/ec48.png deleted file mode 100644 index 049acf45a1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec48.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec49.png b/hub/apps/design/style/images/segoe-mdl/ec49.png deleted file mode 100644 index 897e5ddaca..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec49.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec4a.png b/hub/apps/design/style/images/segoe-mdl/ec4a.png deleted file mode 100644 index d4a12226a5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec4e.png b/hub/apps/design/style/images/segoe-mdl/ec4e.png deleted file mode 100644 index 75bb5406f0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec4e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec4f.png b/hub/apps/design/style/images/segoe-mdl/ec4f.png deleted file mode 100644 index 51c0ef143b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec4f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec50.png b/hub/apps/design/style/images/segoe-mdl/ec50.png deleted file mode 100644 index 3a1dc09f81..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec50.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec51.png b/hub/apps/design/style/images/segoe-mdl/ec51.png deleted file mode 100644 index 3bf5a4cb3d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec51.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec52.png b/hub/apps/design/style/images/segoe-mdl/ec52.png deleted file mode 100644 index 7c6a37662a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec52.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec54.png b/hub/apps/design/style/images/segoe-mdl/ec54.png deleted file mode 100644 index bbb1c93b97..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec54.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec55.png b/hub/apps/design/style/images/segoe-mdl/ec55.png deleted file mode 100644 index 77617a5568..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec55.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec56.png b/hub/apps/design/style/images/segoe-mdl/ec56.png deleted file mode 100644 index 28f3d66216..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec56.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec57.png b/hub/apps/design/style/images/segoe-mdl/ec57.png deleted file mode 100644 index 988f10decc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec57.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec58.png b/hub/apps/design/style/images/segoe-mdl/ec58.png deleted file mode 100644 index 5909a7ee05..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec58.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec59.png b/hub/apps/design/style/images/segoe-mdl/ec59.png deleted file mode 100644 index 9519880330..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec59.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec5a.png b/hub/apps/design/style/images/segoe-mdl/ec5a.png deleted file mode 100644 index bb0a93dc79..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec5b.png b/hub/apps/design/style/images/segoe-mdl/ec5b.png deleted file mode 100644 index 265c6996c3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec5c.png b/hub/apps/design/style/images/segoe-mdl/ec5c.png deleted file mode 100644 index 895cfae896..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec61.png b/hub/apps/design/style/images/segoe-mdl/ec61.png deleted file mode 100644 index cfe071379a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec61.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec64.png b/hub/apps/design/style/images/segoe-mdl/ec64.png deleted file mode 100644 index ab5292b92b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec64.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec6c.png b/hub/apps/design/style/images/segoe-mdl/ec6c.png deleted file mode 100644 index 969a11300d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec6c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec6d.png b/hub/apps/design/style/images/segoe-mdl/ec6d.png deleted file mode 100644 index 7bb51d43c5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec6d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec71.png b/hub/apps/design/style/images/segoe-mdl/ec71.png deleted file mode 100644 index 51ca64c8fd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec71.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec72.png b/hub/apps/design/style/images/segoe-mdl/ec72.png deleted file mode 100644 index a2c4119397..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec72.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec74.png b/hub/apps/design/style/images/segoe-mdl/ec74.png deleted file mode 100644 index b415fb2599..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec74.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec75.png b/hub/apps/design/style/images/segoe-mdl/ec75.png deleted file mode 100644 index 681c0cf1c4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec75.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec76.png b/hub/apps/design/style/images/segoe-mdl/ec76.png deleted file mode 100644 index bceb2949f4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec76.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec77.png b/hub/apps/design/style/images/segoe-mdl/ec77.png deleted file mode 100644 index e25508515e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec77.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec7a.png b/hub/apps/design/style/images/segoe-mdl/ec7a.png deleted file mode 100644 index 3032810fcd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec7a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec7e.png b/hub/apps/design/style/images/segoe-mdl/ec7e.png deleted file mode 100644 index 66f742f364..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec7e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec7f.png b/hub/apps/design/style/images/segoe-mdl/ec7f.png deleted file mode 100644 index 214dde4ae8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec7f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec80.png b/hub/apps/design/style/images/segoe-mdl/ec80.png deleted file mode 100644 index 643f75d3a6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec80.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec81.png b/hub/apps/design/style/images/segoe-mdl/ec81.png deleted file mode 100644 index 177c332fb7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec81.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec87.png b/hub/apps/design/style/images/segoe-mdl/ec87.png deleted file mode 100644 index 1aca6c64de..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec87.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec88.png b/hub/apps/design/style/images/segoe-mdl/ec88.png deleted file mode 100644 index 076ace7fa6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec88.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec8a.png b/hub/apps/design/style/images/segoe-mdl/ec8a.png deleted file mode 100644 index 4a9291b262..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec8a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec8f.png b/hub/apps/design/style/images/segoe-mdl/ec8f.png deleted file mode 100644 index f154e74a82..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec8f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ec92.png b/hub/apps/design/style/images/segoe-mdl/ec92.png deleted file mode 100644 index 30a6bcf8c2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ec92.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eca5.png b/hub/apps/design/style/images/segoe-mdl/eca5.png deleted file mode 100644 index 6302adedb7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eca5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eca7.png b/hub/apps/design/style/images/segoe-mdl/eca7.png deleted file mode 100644 index d2c7bd06f7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eca7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecaa.png b/hub/apps/design/style/images/segoe-mdl/ecaa.png deleted file mode 100644 index a4fc229452..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecad.png b/hub/apps/design/style/images/segoe-mdl/ecad.png deleted file mode 100644 index ec9e4e0e09..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecb9.png b/hub/apps/design/style/images/segoe-mdl/ecb9.png deleted file mode 100644 index 69abca4121..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecb9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecba.png b/hub/apps/design/style/images/segoe-mdl/ecba.png deleted file mode 100644 index c8104b5a3d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecba.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecbb.png b/hub/apps/design/style/images/segoe-mdl/ecbb.png deleted file mode 100644 index 5d7f222613..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecbb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecbc.png b/hub/apps/design/style/images/segoe-mdl/ecbc.png deleted file mode 100644 index 42b6f17c3f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecbc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecbd.png b/hub/apps/design/style/images/segoe-mdl/ecbd.png deleted file mode 100644 index 86cb8fea97..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecbd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecbe.png b/hub/apps/design/style/images/segoe-mdl/ecbe.png deleted file mode 100644 index 1c0d30d7de..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecbe.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecbf.png b/hub/apps/design/style/images/segoe-mdl/ecbf.png deleted file mode 100644 index 5cfdd12660..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecbf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecc4.png b/hub/apps/design/style/images/segoe-mdl/ecc4.png deleted file mode 100644 index f3f1d2928c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecc4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecc5.png b/hub/apps/design/style/images/segoe-mdl/ecc5.png deleted file mode 100644 index 4cd1bac3c3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecc5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecc6.png b/hub/apps/design/style/images/segoe-mdl/ecc6.png deleted file mode 100644 index 3e631a588d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecc8.png b/hub/apps/design/style/images/segoe-mdl/ecc8.png deleted file mode 100644 index 591e6ec94b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecc8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecc9.png b/hub/apps/design/style/images/segoe-mdl/ecc9.png deleted file mode 100644 index 6979f37fc4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecc9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecca.png b/hub/apps/design/style/images/segoe-mdl/ecca.png deleted file mode 100644 index 00116f7c4c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecca.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eccb.png b/hub/apps/design/style/images/segoe-mdl/eccb.png deleted file mode 100644 index 9afa0ee369..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eccb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eccc.png b/hub/apps/design/style/images/segoe-mdl/eccc.png deleted file mode 100644 index 72ee8ac0df..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eccc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eccd.png b/hub/apps/design/style/images/segoe-mdl/eccd.png deleted file mode 100644 index 064b87e078..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eccd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ece4.png b/hub/apps/design/style/images/segoe-mdl/ece4.png deleted file mode 100644 index d3e61977ca..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ece4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ece7.png b/hub/apps/design/style/images/segoe-mdl/ece7.png deleted file mode 100644 index eb433e6034..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ece7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ece8.png b/hub/apps/design/style/images/segoe-mdl/ece8.png deleted file mode 100644 index 50b8aff719..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ece8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ece9.png b/hub/apps/design/style/images/segoe-mdl/ece9.png deleted file mode 100644 index 7ea83a88d1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ece9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecf0.png b/hub/apps/design/style/images/segoe-mdl/ecf0.png deleted file mode 100644 index 76c7bb49a5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecf0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecf1.png b/hub/apps/design/style/images/segoe-mdl/ecf1.png deleted file mode 100644 index c1e05ed5b6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecf1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ecf3.png b/hub/apps/design/style/images/segoe-mdl/ecf3.png deleted file mode 100644 index f25c665265..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ecf3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed0c.png b/hub/apps/design/style/images/segoe-mdl/ed0c.png deleted file mode 100644 index 5edd515112..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed0c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed0d.png b/hub/apps/design/style/images/segoe-mdl/ed0d.png deleted file mode 100644 index 7ea7ef8ae4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed0d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed0e.png b/hub/apps/design/style/images/segoe-mdl/ed0e.png deleted file mode 100644 index 23696f236c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed0e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed10.png b/hub/apps/design/style/images/segoe-mdl/ed10.png deleted file mode 100644 index fab4d8ff5c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed10.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed11.png b/hub/apps/design/style/images/segoe-mdl/ed11.png deleted file mode 100644 index 5e5f25e144..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed11.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed14.png b/hub/apps/design/style/images/segoe-mdl/ed14.png deleted file mode 100644 index 0cd0bd13d9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed14.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed15.png b/hub/apps/design/style/images/segoe-mdl/ed15.png deleted file mode 100644 index af89ad81ed..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed15.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed1e.png b/hub/apps/design/style/images/segoe-mdl/ed1e.png deleted file mode 100644 index 0147122d0c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed1e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed1f.png b/hub/apps/design/style/images/segoe-mdl/ed1f.png deleted file mode 100644 index 3a993ae362..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed25.png b/hub/apps/design/style/images/segoe-mdl/ed25.png deleted file mode 100644 index 40c6a28456..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed25.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed28.png b/hub/apps/design/style/images/segoe-mdl/ed28.png deleted file mode 100644 index 4db3feb37e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed28.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed2a.png b/hub/apps/design/style/images/segoe-mdl/ed2a.png deleted file mode 100644 index 8d1c99ea2e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed2a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed2b.png b/hub/apps/design/style/images/segoe-mdl/ed2b.png deleted file mode 100644 index 40105b337d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed2b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed2c.png b/hub/apps/design/style/images/segoe-mdl/ed2c.png deleted file mode 100644 index 0b8b44ad65..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed2c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed2d.png b/hub/apps/design/style/images/segoe-mdl/ed2d.png deleted file mode 100644 index 1429c11231..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed2d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed2e.png b/hub/apps/design/style/images/segoe-mdl/ed2e.png deleted file mode 100644 index 13f860b9f5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed2e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed2f.png b/hub/apps/design/style/images/segoe-mdl/ed2f.png deleted file mode 100644 index 7b4523074f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed2f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed30.png b/hub/apps/design/style/images/segoe-mdl/ed30.png deleted file mode 100644 index ffae11f226..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed30.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed31.png b/hub/apps/design/style/images/segoe-mdl/ed31.png deleted file mode 100644 index 4ec5203fbe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed31.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed32.png b/hub/apps/design/style/images/segoe-mdl/ed32.png deleted file mode 100644 index f099bb4d29..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed32.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed33.png b/hub/apps/design/style/images/segoe-mdl/ed33.png deleted file mode 100644 index fe46f3ecb6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed33.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed35.png b/hub/apps/design/style/images/segoe-mdl/ed35.png deleted file mode 100644 index 4bcfdebbb0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed35.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed39.png b/hub/apps/design/style/images/segoe-mdl/ed39.png deleted file mode 100644 index a026114253..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed39.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed3a.png b/hub/apps/design/style/images/segoe-mdl/ed3a.png deleted file mode 100644 index 2a21a144b4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed3a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed3c.png b/hub/apps/design/style/images/segoe-mdl/ed3c.png deleted file mode 100644 index 84e7e759ce..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed3d.png b/hub/apps/design/style/images/segoe-mdl/ed3d.png deleted file mode 100644 index 8de1ebb62d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed41.png b/hub/apps/design/style/images/segoe-mdl/ed41.png deleted file mode 100644 index af32c0e774..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed41.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed42.png b/hub/apps/design/style/images/segoe-mdl/ed42.png deleted file mode 100644 index 4ae3c15ed2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed42.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed43.png b/hub/apps/design/style/images/segoe-mdl/ed43.png deleted file mode 100644 index 8cf9c67a09..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed43.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed44.png b/hub/apps/design/style/images/segoe-mdl/ed44.png deleted file mode 100644 index cf85ea4b55..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed44.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed47.png b/hub/apps/design/style/images/segoe-mdl/ed47.png deleted file mode 100644 index cff5dd01f4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed47.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed4c.png b/hub/apps/design/style/images/segoe-mdl/ed4c.png deleted file mode 100644 index e6c84a1677..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed4c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed4d.png b/hub/apps/design/style/images/segoe-mdl/ed4d.png deleted file mode 100644 index dba602fd55..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed4d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed53.png b/hub/apps/design/style/images/segoe-mdl/ed53.png deleted file mode 100644 index 53632f2bf6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed53.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed54.png b/hub/apps/design/style/images/segoe-mdl/ed54.png deleted file mode 100644 index fb151f3c85..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed54.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed55.png b/hub/apps/design/style/images/segoe-mdl/ed55.png deleted file mode 100644 index 217f553ca1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed55.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed56.png b/hub/apps/design/style/images/segoe-mdl/ed56.png deleted file mode 100644 index f9441d8395..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed56.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed57.png b/hub/apps/design/style/images/segoe-mdl/ed57.png deleted file mode 100644 index 12345101e1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed57.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed58.png b/hub/apps/design/style/images/segoe-mdl/ed58.png deleted file mode 100644 index f97c893282..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed58.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed59.png b/hub/apps/design/style/images/segoe-mdl/ed59.png deleted file mode 100644 index 599b72d36c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed59.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed5a.png b/hub/apps/design/style/images/segoe-mdl/ed5a.png deleted file mode 100644 index 68425e5529..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed5a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed5b.png b/hub/apps/design/style/images/segoe-mdl/ed5b.png deleted file mode 100644 index c19eb22343..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed5b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed5c.png b/hub/apps/design/style/images/segoe-mdl/ed5c.png deleted file mode 100644 index 863f9f626c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed5c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed5d.png b/hub/apps/design/style/images/segoe-mdl/ed5d.png deleted file mode 100644 index 8a8a679509..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed5d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed5e.png b/hub/apps/design/style/images/segoe-mdl/ed5e.png deleted file mode 100644 index acf5658290..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed5e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed5f.png b/hub/apps/design/style/images/segoe-mdl/ed5f.png deleted file mode 100644 index f2f1d8e9b2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed5f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed60.png b/hub/apps/design/style/images/segoe-mdl/ed60.png deleted file mode 100644 index 57b50e8442..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed60.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed61.png b/hub/apps/design/style/images/segoe-mdl/ed61.png deleted file mode 100644 index f8bc798d5b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed61.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed62.png b/hub/apps/design/style/images/segoe-mdl/ed62.png deleted file mode 100644 index ab13ecb4e7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed62.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed63.png b/hub/apps/design/style/images/segoe-mdl/ed63.png deleted file mode 100644 index 18e4f3e6ed..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed63.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed64.png b/hub/apps/design/style/images/segoe-mdl/ed64.png deleted file mode 100644 index d5d28aa761..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed64.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed65.png b/hub/apps/design/style/images/segoe-mdl/ed65.png deleted file mode 100644 index 2c7400baa7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed65.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed66.png b/hub/apps/design/style/images/segoe-mdl/ed66.png deleted file mode 100644 index 8b4296c761..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed66.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ed67.png b/hub/apps/design/style/images/segoe-mdl/ed67.png deleted file mode 100644 index 26463b356e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ed67.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda2.png b/hub/apps/design/style/images/segoe-mdl/eda2.png deleted file mode 100644 index c378e5c331..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda3.png b/hub/apps/design/style/images/segoe-mdl/eda3.png deleted file mode 100644 index 3aaae73234..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda4.png b/hub/apps/design/style/images/segoe-mdl/eda4.png deleted file mode 100644 index 74ac36a5fc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda5.png b/hub/apps/design/style/images/segoe-mdl/eda5.png deleted file mode 100644 index 815a9a6a1d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda6.png b/hub/apps/design/style/images/segoe-mdl/eda6.png deleted file mode 100644 index cec324b759..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda7.png b/hub/apps/design/style/images/segoe-mdl/eda7.png deleted file mode 100644 index 71fc56e752..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda8.png b/hub/apps/design/style/images/segoe-mdl/eda8.png deleted file mode 100644 index 6e4e5eda9d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eda9.png b/hub/apps/design/style/images/segoe-mdl/eda9.png deleted file mode 100644 index f802056f0e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eda9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edaa.png b/hub/apps/design/style/images/segoe-mdl/edaa.png deleted file mode 100644 index fde1553b97..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edaa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edab.png b/hub/apps/design/style/images/segoe-mdl/edab.png deleted file mode 100644 index 0cbcb2007f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edab.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edac.png b/hub/apps/design/style/images/segoe-mdl/edac.png deleted file mode 100644 index bba38a4678..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edac.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edad.png b/hub/apps/design/style/images/segoe-mdl/edad.png deleted file mode 100644 index 70c2be316e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edae.png b/hub/apps/design/style/images/segoe-mdl/edae.png deleted file mode 100644 index a17c27333d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edaf.png b/hub/apps/design/style/images/segoe-mdl/edaf.png deleted file mode 100644 index 317ef38f78..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edaf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edb0.png b/hub/apps/design/style/images/segoe-mdl/edb0.png deleted file mode 100644 index e81294fbce..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edb0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edb1.png b/hub/apps/design/style/images/segoe-mdl/edb1.png deleted file mode 100644 index 03d5451abc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edb1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edb3.png b/hub/apps/design/style/images/segoe-mdl/edb3.png deleted file mode 100644 index e2cb10d8a3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edb3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edb4.png b/hub/apps/design/style/images/segoe-mdl/edb4.png deleted file mode 100644 index abb006dc8c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edb4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edb5.png b/hub/apps/design/style/images/segoe-mdl/edb5.png deleted file mode 100644 index 3016660a45..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edb5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edc6.png b/hub/apps/design/style/images/segoe-mdl/edc6.png deleted file mode 100644 index 8c2e12d8de..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edc6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edd6.png b/hub/apps/design/style/images/segoe-mdl/edd6.png deleted file mode 100644 index 7047b04282..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edd6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edd9.png b/hub/apps/design/style/images/segoe-mdl/edd9.png deleted file mode 100644 index 9be7d6427f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edd9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edda.png b/hub/apps/design/style/images/segoe-mdl/edda.png deleted file mode 100644 index 19f5ed5e07..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edda.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eddb.png b/hub/apps/design/style/images/segoe-mdl/eddb.png deleted file mode 100644 index 3f06fd0b55..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eddb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eddc.png b/hub/apps/design/style/images/segoe-mdl/eddc.png deleted file mode 100644 index 4abe8ed20f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eddc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ede1.png b/hub/apps/design/style/images/segoe-mdl/ede1.png deleted file mode 100644 index 89980f1e01..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ede1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ede2.png b/hub/apps/design/style/images/segoe-mdl/ede2.png deleted file mode 100644 index c044fc613c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ede2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ede3.png b/hub/apps/design/style/images/segoe-mdl/ede3.png deleted file mode 100644 index 7856d0fd3c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ede3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ede4.png b/hub/apps/design/style/images/segoe-mdl/ede4.png deleted file mode 100644 index 7b65b62616..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ede4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ede5.png b/hub/apps/design/style/images/segoe-mdl/ede5.png deleted file mode 100644 index c0fd949798..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ede5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/edfb.png b/hub/apps/design/style/images/segoe-mdl/edfb.png deleted file mode 100644 index 4992a2036d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/edfb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee35.png b/hub/apps/design/style/images/segoe-mdl/ee35.png deleted file mode 100644 index b9b4d19c1e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee35.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee3f.png b/hub/apps/design/style/images/segoe-mdl/ee3f.png deleted file mode 100644 index 085546d0cf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee40.png b/hub/apps/design/style/images/segoe-mdl/ee40.png deleted file mode 100644 index 28c12e70e2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee40.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee4a.png b/hub/apps/design/style/images/segoe-mdl/ee4a.png deleted file mode 100644 index 905083e4b2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee4a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee56.png b/hub/apps/design/style/images/segoe-mdl/ee56.png deleted file mode 100644 index c1b53c4d73..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee56.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee57.png b/hub/apps/design/style/images/segoe-mdl/ee57.png deleted file mode 100644 index 1aac7d1e48..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee57.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee63.png b/hub/apps/design/style/images/segoe-mdl/ee63.png deleted file mode 100644 index 0bf3521145..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee63.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee64.png b/hub/apps/design/style/images/segoe-mdl/ee64.png deleted file mode 100644 index a891224bb0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee64.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee65.png b/hub/apps/design/style/images/segoe-mdl/ee65.png deleted file mode 100644 index cc11ce2e08..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee65.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee6f.png b/hub/apps/design/style/images/segoe-mdl/ee6f.png deleted file mode 100644 index 9491ceda3b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee6f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee71.png b/hub/apps/design/style/images/segoe-mdl/ee71.png deleted file mode 100644 index 46c00eeaf8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee71.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee77.png b/hub/apps/design/style/images/segoe-mdl/ee77.png deleted file mode 100644 index 1f40923067..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee77.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee79.png b/hub/apps/design/style/images/segoe-mdl/ee79.png deleted file mode 100644 index bc9c19099b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee79.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee7a.png b/hub/apps/design/style/images/segoe-mdl/ee7a.png deleted file mode 100644 index b641a2b3cd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee7a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee92.png b/hub/apps/design/style/images/segoe-mdl/ee92.png deleted file mode 100644 index 91546c9821..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee92.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee93.png b/hub/apps/design/style/images/segoe-mdl/ee93.png deleted file mode 100644 index 99ccdaa2f6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee93.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ee94.png b/hub/apps/design/style/images/segoe-mdl/ee94.png deleted file mode 100644 index c7bf3d899b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ee94.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eea3.png b/hub/apps/design/style/images/segoe-mdl/eea3.png deleted file mode 100644 index b8979c70e5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eea3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/eeca.png b/hub/apps/design/style/images/segoe-mdl/eeca.png deleted file mode 100644 index 83ee561ca2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/eeca.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef15.png b/hub/apps/design/style/images/segoe-mdl/ef15.png deleted file mode 100644 index f435c7da82..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef15.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef16.png b/hub/apps/design/style/images/segoe-mdl/ef16.png deleted file mode 100644 index 07e35c5101..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef16.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef17.png b/hub/apps/design/style/images/segoe-mdl/ef17.png deleted file mode 100644 index 444230f4cd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef17.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef18.png b/hub/apps/design/style/images/segoe-mdl/ef18.png deleted file mode 100644 index 6f6bf3aec9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef18.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef19.png b/hub/apps/design/style/images/segoe-mdl/ef19.png deleted file mode 100644 index 9791c58411..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef19.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef1f.png b/hub/apps/design/style/images/segoe-mdl/ef1f.png deleted file mode 100644 index 0f2166f60f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef1f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef20.png b/hub/apps/design/style/images/segoe-mdl/ef20.png deleted file mode 100644 index 33fd134b26..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef20.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef2c.png b/hub/apps/design/style/images/segoe-mdl/ef2c.png deleted file mode 100644 index effe607261..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef2c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef2d.png b/hub/apps/design/style/images/segoe-mdl/ef2d.png deleted file mode 100644 index 710255198c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef2d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef2e.png b/hub/apps/design/style/images/segoe-mdl/ef2e.png deleted file mode 100644 index 678a8d4897..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef2e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef2f.png b/hub/apps/design/style/images/segoe-mdl/ef2f.png deleted file mode 100644 index b5c18f997e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef2f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef31.png b/hub/apps/design/style/images/segoe-mdl/ef31.png deleted file mode 100644 index d594523cea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef31.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef3b.png b/hub/apps/design/style/images/segoe-mdl/ef3b.png deleted file mode 100644 index f0b362fadf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef3b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef3c.png b/hub/apps/design/style/images/segoe-mdl/ef3c.png deleted file mode 100644 index c2a5b4fb2b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef3c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef3d.png b/hub/apps/design/style/images/segoe-mdl/ef3d.png deleted file mode 100644 index 21e9ef3435..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef3d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef3e.png b/hub/apps/design/style/images/segoe-mdl/ef3e.png deleted file mode 100644 index 49e9854ae4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef3e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef3f.png b/hub/apps/design/style/images/segoe-mdl/ef3f.png deleted file mode 100644 index c1a40ed698..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef3f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef40.png b/hub/apps/design/style/images/segoe-mdl/ef40.png deleted file mode 100644 index 83a054b306..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef40.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef58.png b/hub/apps/design/style/images/segoe-mdl/ef58.png deleted file mode 100644 index 9d2657be01..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef58.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef6b.png b/hub/apps/design/style/images/segoe-mdl/ef6b.png deleted file mode 100644 index 67384ec097..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef6b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/ef90.png b/hub/apps/design/style/images/segoe-mdl/ef90.png deleted file mode 100644 index d46e66cbd6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/ef90.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/efa5.png b/hub/apps/design/style/images/segoe-mdl/efa5.png deleted file mode 100644 index 015c7603df..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/efa5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/efa9.png b/hub/apps/design/style/images/segoe-mdl/efa9.png deleted file mode 100644 index d87e194589..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/efa9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f000.png b/hub/apps/design/style/images/segoe-mdl/f000.png deleted file mode 100644 index 021b9e2bff..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f000.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f003.png b/hub/apps/design/style/images/segoe-mdl/f003.png deleted file mode 100644 index 6cd207378f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f003.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f080.png b/hub/apps/design/style/images/segoe-mdl/f080.png deleted file mode 100644 index d4e883d673..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f080.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f081.png b/hub/apps/design/style/images/segoe-mdl/f081.png deleted file mode 100644 index a4e3ea892c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f081.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f085.png b/hub/apps/design/style/images/segoe-mdl/f085.png deleted file mode 100644 index 83225d87c2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f085.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f08c.png b/hub/apps/design/style/images/segoe-mdl/f08c.png deleted file mode 100644 index ca2f341fcc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f08c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f093.png b/hub/apps/design/style/images/segoe-mdl/f093.png deleted file mode 100644 index b15f244c66..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f093.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f094.png b/hub/apps/design/style/images/segoe-mdl/f094.png deleted file mode 100644 index 2b483989f2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f094.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f095.png b/hub/apps/design/style/images/segoe-mdl/f095.png deleted file mode 100644 index 1af97182ec..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f095.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f096.png b/hub/apps/design/style/images/segoe-mdl/f096.png deleted file mode 100644 index 2f3b1f3093..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f096.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ad.png b/hub/apps/design/style/images/segoe-mdl/f0ad.png deleted file mode 100644 index d4bba827fd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ae.png b/hub/apps/design/style/images/segoe-mdl/f0ae.png deleted file mode 100644 index 7807b3b37f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0af.png b/hub/apps/design/style/images/segoe-mdl/f0af.png deleted file mode 100644 index 939bc88833..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0af.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b0.png b/hub/apps/design/style/images/segoe-mdl/f0b0.png deleted file mode 100644 index 8a51eb9b98..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b2.png b/hub/apps/design/style/images/segoe-mdl/f0b2.png deleted file mode 100644 index c7a00f1b47..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b3.png b/hub/apps/design/style/images/segoe-mdl/f0b3.png deleted file mode 100644 index c698a589ed..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b4.png b/hub/apps/design/style/images/segoe-mdl/f0b4.png deleted file mode 100644 index d208157d8e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b5.png b/hub/apps/design/style/images/segoe-mdl/f0b5.png deleted file mode 100644 index 20c44ba3d2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b6.png b/hub/apps/design/style/images/segoe-mdl/f0b6.png deleted file mode 100644 index dab98372f2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b7.png b/hub/apps/design/style/images/segoe-mdl/f0b7.png deleted file mode 100644 index 80be402a50..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b8.png b/hub/apps/design/style/images/segoe-mdl/f0b8.png deleted file mode 100644 index 5b1fe24b8a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0b9.png b/hub/apps/design/style/images/segoe-mdl/f0b9.png deleted file mode 100644 index 20219bf06b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0c6.png b/hub/apps/design/style/images/segoe-mdl/f0c6.png deleted file mode 100644 index c62230b514..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0c6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0c7.png b/hub/apps/design/style/images/segoe-mdl/f0c7.png deleted file mode 100644 index 8ae5913c1a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0c7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ca.png b/hub/apps/design/style/images/segoe-mdl/f0ca.png deleted file mode 100644 index 22ea21c04a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ca.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0cb.png b/hub/apps/design/style/images/segoe-mdl/f0cb.png deleted file mode 100644 index 16c59591c0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0cc.png b/hub/apps/design/style/images/segoe-mdl/f0cc.png deleted file mode 100644 index 3bb9385b0a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0cd.png b/hub/apps/design/style/images/segoe-mdl/f0cd.png deleted file mode 100644 index 835fa5d5e8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ce.png b/hub/apps/design/style/images/segoe-mdl/f0ce.png deleted file mode 100644 index 6b916052ab..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ce.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0d2.png b/hub/apps/design/style/images/segoe-mdl/f0d2.png deleted file mode 100644 index 59f9cab660..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0d2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0d3.png b/hub/apps/design/style/images/segoe-mdl/f0d3.png deleted file mode 100644 index 173918ead4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0d3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0d5.png b/hub/apps/design/style/images/segoe-mdl/f0d5.png deleted file mode 100644 index a85c56eb40..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0d5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0d6.png b/hub/apps/design/style/images/segoe-mdl/f0d6.png deleted file mode 100644 index da76317139..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0d6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0d7.png b/hub/apps/design/style/images/segoe-mdl/f0d7.png deleted file mode 100644 index 66fc4f3765..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0d7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0d8.png b/hub/apps/design/style/images/segoe-mdl/f0d8.png deleted file mode 100644 index 9feb42cbea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e2.png b/hub/apps/design/style/images/segoe-mdl/f0e2.png deleted file mode 100644 index 3429efdd36..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e3.png b/hub/apps/design/style/images/segoe-mdl/f0e3.png deleted file mode 100644 index 3e203ebeff..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e4.png b/hub/apps/design/style/images/segoe-mdl/f0e4.png deleted file mode 100644 index c9ee2564fa..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e5.png b/hub/apps/design/style/images/segoe-mdl/f0e5.png deleted file mode 100644 index f73e8fad07..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e6.png b/hub/apps/design/style/images/segoe-mdl/f0e6.png deleted file mode 100644 index 13a3fda77a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e7.png b/hub/apps/design/style/images/segoe-mdl/f0e7.png deleted file mode 100644 index 91dbbb4e14..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e8.png b/hub/apps/design/style/images/segoe-mdl/f0e8.png deleted file mode 100644 index 05b53d55ad..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0e9.png b/hub/apps/design/style/images/segoe-mdl/f0e9.png deleted file mode 100644 index 2ee0e0ddc2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0e9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ea.png b/hub/apps/design/style/images/segoe-mdl/f0ea.png deleted file mode 100644 index fcc521e339..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ea.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0eb.png b/hub/apps/design/style/images/segoe-mdl/f0eb.png deleted file mode 100644 index c405657f98..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0eb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ec.png b/hub/apps/design/style/images/segoe-mdl/f0ec.png deleted file mode 100644 index 480e5318f8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ec.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ed.png b/hub/apps/design/style/images/segoe-mdl/f0ed.png deleted file mode 100644 index 83c0b30122..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0ee.png b/hub/apps/design/style/images/segoe-mdl/f0ee.png deleted file mode 100644 index 4656cff4b9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0f7.png b/hub/apps/design/style/images/segoe-mdl/f0f7.png deleted file mode 100644 index 743b65cc1e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0f8.png b/hub/apps/design/style/images/segoe-mdl/f0f8.png deleted file mode 100644 index 1daa361456..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0f9.png b/hub/apps/design/style/images/segoe-mdl/f0f9.png deleted file mode 100644 index 2790b8b4a0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f0fb.png b/hub/apps/design/style/images/segoe-mdl/f0fb.png deleted file mode 100644 index ddb72d78bb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f0fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f103.png b/hub/apps/design/style/images/segoe-mdl/f103.png deleted file mode 100644 index a4ecbca7ce..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f103.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f108.png b/hub/apps/design/style/images/segoe-mdl/f108.png deleted file mode 100644 index dba8f0319e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f108.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f109.png b/hub/apps/design/style/images/segoe-mdl/f109.png deleted file mode 100644 index e6111dbd8b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f109.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f10a.png b/hub/apps/design/style/images/segoe-mdl/f10a.png deleted file mode 100644 index 765e8b7683..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f10a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f10b.png b/hub/apps/design/style/images/segoe-mdl/f10b.png deleted file mode 100644 index 7f00ce2dbc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f10b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f10c.png b/hub/apps/design/style/images/segoe-mdl/f10c.png deleted file mode 100644 index 1b8e31e536..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f10c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f10d.png b/hub/apps/design/style/images/segoe-mdl/f10d.png deleted file mode 100644 index 4df684a8c5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f10d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f10e.png b/hub/apps/design/style/images/segoe-mdl/f10e.png deleted file mode 100644 index fa67412019..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f10e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f110.png b/hub/apps/design/style/images/segoe-mdl/f110.png deleted file mode 100644 index f904926381..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f110.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f111.png b/hub/apps/design/style/images/segoe-mdl/f111.png deleted file mode 100644 index 4138ab6795..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f111.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f119.png b/hub/apps/design/style/images/segoe-mdl/f119.png deleted file mode 100644 index d36aeafe1f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f119.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f11b.png b/hub/apps/design/style/images/segoe-mdl/f11b.png deleted file mode 100644 index 561e0fbcfc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f11b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f126.png b/hub/apps/design/style/images/segoe-mdl/f126.png deleted file mode 100644 index f1ede1b580..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f126.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f127.png b/hub/apps/design/style/images/segoe-mdl/f127.png deleted file mode 100644 index 899eb602e4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f127.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f128.png b/hub/apps/design/style/images/segoe-mdl/f128.png deleted file mode 100644 index 70980163a2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f128.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f129.png b/hub/apps/design/style/images/segoe-mdl/f129.png deleted file mode 100644 index 1f59ce2819..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f129.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f12a.png b/hub/apps/design/style/images/segoe-mdl/f12a.png deleted file mode 100644 index c52455d075..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f12a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f12b.png b/hub/apps/design/style/images/segoe-mdl/f12b.png deleted file mode 100644 index f1ad388d3b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f12b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f12e.png b/hub/apps/design/style/images/segoe-mdl/f12e.png deleted file mode 100644 index a45cf375c3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f12e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f12f.png b/hub/apps/design/style/images/segoe-mdl/f12f.png deleted file mode 100644 index 1cd5c50b29..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f12f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f131.png b/hub/apps/design/style/images/segoe-mdl/f131.png deleted file mode 100644 index d5f6f1af3f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f131.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f133.png b/hub/apps/design/style/images/segoe-mdl/f133.png deleted file mode 100644 index d6d7acd644..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f133.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f136.png b/hub/apps/design/style/images/segoe-mdl/f136.png deleted file mode 100644 index d1dc652692..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f136.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f137.png b/hub/apps/design/style/images/segoe-mdl/f137.png deleted file mode 100644 index 395a29a210..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f137.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f138.png b/hub/apps/design/style/images/segoe-mdl/f138.png deleted file mode 100644 index e19d9f1df2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f138.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f139.png b/hub/apps/design/style/images/segoe-mdl/f139.png deleted file mode 100644 index 35828e2426..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f139.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f13a.png b/hub/apps/design/style/images/segoe-mdl/f13a.png deleted file mode 100644 index 0e64c76582..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f13a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f13b.png b/hub/apps/design/style/images/segoe-mdl/f13b.png deleted file mode 100644 index 18f577e983..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f13b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f13c.png b/hub/apps/design/style/images/segoe-mdl/f13c.png deleted file mode 100644 index 2b07d0020d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f13c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f13d.png b/hub/apps/design/style/images/segoe-mdl/f13d.png deleted file mode 100644 index fa4a39cad2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f13d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f13e.png b/hub/apps/design/style/images/segoe-mdl/f13e.png deleted file mode 100644 index 41c05bcbca..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f13e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f13f.png b/hub/apps/design/style/images/segoe-mdl/f13f.png deleted file mode 100644 index 2d9cad3e8d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f13f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f140.png b/hub/apps/design/style/images/segoe-mdl/f140.png deleted file mode 100644 index 6f7f2d0d1d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f140.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f141.png b/hub/apps/design/style/images/segoe-mdl/f141.png deleted file mode 100644 index 6633a057d8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f141.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f142.png b/hub/apps/design/style/images/segoe-mdl/f142.png deleted file mode 100644 index 0233243349..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f142.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f143.png b/hub/apps/design/style/images/segoe-mdl/f143.png deleted file mode 100644 index ae44e6be30..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f143.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f146.png b/hub/apps/design/style/images/segoe-mdl/f146.png deleted file mode 100644 index c5a9caead8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f146.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f147.png b/hub/apps/design/style/images/segoe-mdl/f147.png deleted file mode 100644 index 79c12f2377..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f147.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f148.png b/hub/apps/design/style/images/segoe-mdl/f148.png deleted file mode 100644 index 72295f9e98..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f148.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f149.png b/hub/apps/design/style/images/segoe-mdl/f149.png deleted file mode 100644 index f2ea1ba457..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f149.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f14a.png b/hub/apps/design/style/images/segoe-mdl/f14a.png deleted file mode 100644 index 74a9e36403..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f14a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f14b.png b/hub/apps/design/style/images/segoe-mdl/f14b.png deleted file mode 100644 index fc8c139cd3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f14b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f14c.png b/hub/apps/design/style/images/segoe-mdl/f14c.png deleted file mode 100644 index fe20d773b1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f14c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f14d.png b/hub/apps/design/style/images/segoe-mdl/f14d.png deleted file mode 100644 index b3dd4e850d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f14d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f14e.png b/hub/apps/design/style/images/segoe-mdl/f14e.png deleted file mode 100644 index 297731a7ca..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f14e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f14f.png b/hub/apps/design/style/images/segoe-mdl/f14f.png deleted file mode 100644 index 5436791ea1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f14f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f150.png b/hub/apps/design/style/images/segoe-mdl/f150.png deleted file mode 100644 index fd67223387..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f150.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f151.png b/hub/apps/design/style/images/segoe-mdl/f151.png deleted file mode 100644 index 2a16538e47..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f151.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f152.png b/hub/apps/design/style/images/segoe-mdl/f152.png deleted file mode 100644 index dcbbf85c36..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f152.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f153.png b/hub/apps/design/style/images/segoe-mdl/f153.png deleted file mode 100644 index 134269e779..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f153.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f154.png b/hub/apps/design/style/images/segoe-mdl/f154.png deleted file mode 100644 index 42b6abc265..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f154.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f155.png b/hub/apps/design/style/images/segoe-mdl/f155.png deleted file mode 100644 index 45f91106d7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f155.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f156.png b/hub/apps/design/style/images/segoe-mdl/f156.png deleted file mode 100644 index 30f0460980..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f156.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f157.png b/hub/apps/design/style/images/segoe-mdl/f157.png deleted file mode 100644 index 844d0328a6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f157.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f158.png b/hub/apps/design/style/images/segoe-mdl/f158.png deleted file mode 100644 index 1ba3758431..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f158.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f159.png b/hub/apps/design/style/images/segoe-mdl/f159.png deleted file mode 100644 index 371c7b384e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f159.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f161.png b/hub/apps/design/style/images/segoe-mdl/f161.png deleted file mode 100644 index a6b0fd68a8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f161.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f163.png b/hub/apps/design/style/images/segoe-mdl/f163.png deleted file mode 100644 index 327e09b478..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f163.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f164.png b/hub/apps/design/style/images/segoe-mdl/f164.png deleted file mode 100644 index 2c18ab50b6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f164.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f165.png b/hub/apps/design/style/images/segoe-mdl/f165.png deleted file mode 100644 index c821687509..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f165.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f166.png b/hub/apps/design/style/images/segoe-mdl/f166.png deleted file mode 100644 index c601c68cfb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f166.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f167.png b/hub/apps/design/style/images/segoe-mdl/f167.png deleted file mode 100644 index c770c2cf5b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f167.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f168.png b/hub/apps/design/style/images/segoe-mdl/f168.png deleted file mode 100644 index 2e518f2d2d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f168.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f169.png b/hub/apps/design/style/images/segoe-mdl/f169.png deleted file mode 100644 index 945ae5152c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f169.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f16a.png b/hub/apps/design/style/images/segoe-mdl/f16a.png deleted file mode 100644 index ef24e479e1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f16a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f16b.png b/hub/apps/design/style/images/segoe-mdl/f16b.png deleted file mode 100644 index 76b536309c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f16b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f16c.png b/hub/apps/design/style/images/segoe-mdl/f16c.png deleted file mode 100644 index 9fd19d7fb9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f16c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f16d.png b/hub/apps/design/style/images/segoe-mdl/f16d.png deleted file mode 100644 index fad47c1ab1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f16d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f16e.png b/hub/apps/design/style/images/segoe-mdl/f16e.png deleted file mode 100644 index a77c15cb34..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f16e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f175.png b/hub/apps/design/style/images/segoe-mdl/f175.png deleted file mode 100644 index 618db12997..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f175.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f17f.png b/hub/apps/design/style/images/segoe-mdl/f17f.png deleted file mode 100644 index b4b99fd4b6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f17f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f180.png b/hub/apps/design/style/images/segoe-mdl/f180.png deleted file mode 100644 index d3305ba2ba..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f180.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f182.png b/hub/apps/design/style/images/segoe-mdl/f182.png deleted file mode 100644 index 38d8f8bdda..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f182.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f191.png b/hub/apps/design/style/images/segoe-mdl/f191.png deleted file mode 100644 index 1f79fba7a4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f191.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f193.png b/hub/apps/design/style/images/segoe-mdl/f193.png deleted file mode 100644 index d3bd8446ea..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f193.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f19d.png b/hub/apps/design/style/images/segoe-mdl/f19d.png deleted file mode 100644 index fe3ebdc7da..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f19d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f1ad.png b/hub/apps/design/style/images/segoe-mdl/f1ad.png deleted file mode 100644 index c4e1b9deb7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f1ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f1cb.png b/hub/apps/design/style/images/segoe-mdl/f1cb.png deleted file mode 100644 index 5e6610376b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f1cb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f1cc.png b/hub/apps/design/style/images/segoe-mdl/f1cc.png deleted file mode 100644 index f281ecd5f0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f1cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f1d8.png b/hub/apps/design/style/images/segoe-mdl/f1d8.png deleted file mode 100644 index 9f79479889..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f1d8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f1d9.png b/hub/apps/design/style/images/segoe-mdl/f1d9.png deleted file mode 100644 index 4a2b4cd29b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f1d9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f20c.png b/hub/apps/design/style/images/segoe-mdl/f20c.png deleted file mode 100644 index a86ead8ae0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f20c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f20d.png b/hub/apps/design/style/images/segoe-mdl/f20d.png deleted file mode 100644 index da79e43b42..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f20d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f210.png b/hub/apps/design/style/images/segoe-mdl/f210.png deleted file mode 100644 index c907973ea2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f210.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f211.png b/hub/apps/design/style/images/segoe-mdl/f211.png deleted file mode 100644 index 13bde502cd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f211.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f22c.png b/hub/apps/design/style/images/segoe-mdl/f22c.png deleted file mode 100644 index 72df1f6301..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f22c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f22e.png b/hub/apps/design/style/images/segoe-mdl/f22e.png deleted file mode 100644 index 9b13a7cd2d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f22e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f246.png b/hub/apps/design/style/images/segoe-mdl/f246.png deleted file mode 100644 index 59eaf8a784..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f246.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f259.png b/hub/apps/design/style/images/segoe-mdl/f259.png deleted file mode 100644 index 16cfee5268..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f259.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f260.png b/hub/apps/design/style/images/segoe-mdl/f260.png deleted file mode 100644 index 265076b1f9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f260.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f261.png b/hub/apps/design/style/images/segoe-mdl/f261.png deleted file mode 100644 index 3b39a73fa3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f261.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f26b.png b/hub/apps/design/style/images/segoe-mdl/f26b.png deleted file mode 100644 index b5d0b12cc7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f26b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f26c.png b/hub/apps/design/style/images/segoe-mdl/f26c.png deleted file mode 100644 index 78408327ab..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f26c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f26d.png b/hub/apps/design/style/images/segoe-mdl/f26d.png deleted file mode 100644 index 399d302a80..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f26d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f26e.png b/hub/apps/design/style/images/segoe-mdl/f26e.png deleted file mode 100644 index 0da13245b7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f26e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f270.png b/hub/apps/design/style/images/segoe-mdl/f270.png deleted file mode 100644 index cc43e8eceb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f270.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f271.png b/hub/apps/design/style/images/segoe-mdl/f271.png deleted file mode 100644 index 3d0232ffcf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f271.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f272.png b/hub/apps/design/style/images/segoe-mdl/f272.png deleted file mode 100644 index 4d022217c0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f272.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f2b7.png b/hub/apps/design/style/images/segoe-mdl/f2b7.png deleted file mode 100644 index 627a882bd0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f2b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f32a.png b/hub/apps/design/style/images/segoe-mdl/f32a.png deleted file mode 100644 index 62bc941e49..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f32a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f384.png b/hub/apps/design/style/images/segoe-mdl/f384.png deleted file mode 100644 index fabd62a9f7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f384.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f385.png b/hub/apps/design/style/images/segoe-mdl/f385.png deleted file mode 100644 index 23c382bf20..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f385.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f386.png b/hub/apps/design/style/images/segoe-mdl/f386.png deleted file mode 100644 index 636835dfa0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f386.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f3b1.png b/hub/apps/design/style/images/segoe-mdl/f3b1.png deleted file mode 100644 index 2865be1404..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f3b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f3cc.png b/hub/apps/design/style/images/segoe-mdl/f3cc.png deleted file mode 100644 index 6312fb1cdc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f3cc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f3cd.png b/hub/apps/design/style/images/segoe-mdl/f3cd.png deleted file mode 100644 index 2b9344fb10..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f3cd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f3e2.png b/hub/apps/design/style/images/segoe-mdl/f3e2.png deleted file mode 100644 index fbe44cf986..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f3e2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f3e7.png b/hub/apps/design/style/images/segoe-mdl/f3e7.png deleted file mode 100644 index 19acda2f72..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f3e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f404.png b/hub/apps/design/style/images/segoe-mdl/f404.png deleted file mode 100644 index 0b7afafffd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f404.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f406.png b/hub/apps/design/style/images/segoe-mdl/f406.png deleted file mode 100644 index 0d8b17ae89..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f406.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f407.png b/hub/apps/design/style/images/segoe-mdl/f407.png deleted file mode 100644 index 1354945515..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f407.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f408.png b/hub/apps/design/style/images/segoe-mdl/f408.png deleted file mode 100644 index 67028ff403..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f408.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f413.png b/hub/apps/design/style/images/segoe-mdl/f413.png deleted file mode 100644 index ec5870281d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f413.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f439.png b/hub/apps/design/style/images/segoe-mdl/f439.png deleted file mode 100644 index 69aec31bd6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f439.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f45e.png b/hub/apps/design/style/images/segoe-mdl/f45e.png deleted file mode 100644 index f58cb3371c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f45e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f45f.png b/hub/apps/design/style/images/segoe-mdl/f45f.png deleted file mode 100644 index 51f79d98bf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f45f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f460.png b/hub/apps/design/style/images/segoe-mdl/f460.png deleted file mode 100644 index 31757aa6f3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f460.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f461.png b/hub/apps/design/style/images/segoe-mdl/f461.png deleted file mode 100644 index f430bb43cc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f461.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f462.png b/hub/apps/design/style/images/segoe-mdl/f462.png deleted file mode 100644 index 41e89d8a4e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f462.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f463.png b/hub/apps/design/style/images/segoe-mdl/f463.png deleted file mode 100644 index 4b512b3e15..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f463.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f464.png b/hub/apps/design/style/images/segoe-mdl/f464.png deleted file mode 100644 index 2cf1d98b9e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f464.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f465.png b/hub/apps/design/style/images/segoe-mdl/f465.png deleted file mode 100644 index a9697649f0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f465.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f466.png b/hub/apps/design/style/images/segoe-mdl/f466.png deleted file mode 100644 index 6774adbc5a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f466.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f473.png b/hub/apps/design/style/images/segoe-mdl/f473.png deleted file mode 100644 index 267619f56a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f473.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f474.png b/hub/apps/design/style/images/segoe-mdl/f474.png deleted file mode 100644 index cb6bdd088b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f474.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f475.png b/hub/apps/design/style/images/segoe-mdl/f475.png deleted file mode 100644 index 80ff059281..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f475.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f476.png b/hub/apps/design/style/images/segoe-mdl/f476.png deleted file mode 100644 index b930fdeccf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f476.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f49a.png b/hub/apps/design/style/images/segoe-mdl/f49a.png deleted file mode 100644 index 4eff2c1434..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f49a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f4a5.png b/hub/apps/design/style/images/segoe-mdl/f4a5.png deleted file mode 100644 index 837e2aa31e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f4a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f4a9.png b/hub/apps/design/style/images/segoe-mdl/f4a9.png deleted file mode 100644 index 7331613b39..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f4a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f4aa.png b/hub/apps/design/style/images/segoe-mdl/f4aa.png deleted file mode 100644 index 0d7900d5ec..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f4aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f4be.png b/hub/apps/design/style/images/segoe-mdl/f4be.png deleted file mode 100644 index 4ccb2d64d3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f4be.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f4bf.png b/hub/apps/design/style/images/segoe-mdl/f4bf.png deleted file mode 100644 index bfa0549b67..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f4bf.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f4c0.png b/hub/apps/design/style/images/segoe-mdl/f4c0.png deleted file mode 100644 index 790216b728..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f4c0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f4c3.png b/hub/apps/design/style/images/segoe-mdl/f4c3.png deleted file mode 100644 index f790eae31f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f4c3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f540.png b/hub/apps/design/style/images/segoe-mdl/f540.png deleted file mode 100644 index 3cc990a8bc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f540.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f552.png b/hub/apps/design/style/images/segoe-mdl/f552.png deleted file mode 100644 index 01566ef7d0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f552.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f56d.png b/hub/apps/design/style/images/segoe-mdl/f56d.png deleted file mode 100644 index 4680740eb6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f56d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f56e.png b/hub/apps/design/style/images/segoe-mdl/f56e.png deleted file mode 100644 index aba9a418e7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f56e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f56f.png b/hub/apps/design/style/images/segoe-mdl/f56f.png deleted file mode 100644 index 2718bf5a54..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f56f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f570.png b/hub/apps/design/style/images/segoe-mdl/f570.png deleted file mode 100644 index 905eb64b9c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f570.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f571.png b/hub/apps/design/style/images/segoe-mdl/f571.png deleted file mode 100644 index 224612ad58..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f571.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f572.png b/hub/apps/design/style/images/segoe-mdl/f572.png deleted file mode 100644 index 65102fd844..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f572.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f573.png b/hub/apps/design/style/images/segoe-mdl/f573.png deleted file mode 100644 index 63b4fdfd53..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f573.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f574.png b/hub/apps/design/style/images/segoe-mdl/f574.png deleted file mode 100644 index 8cbff98f2a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f574.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f575.png b/hub/apps/design/style/images/segoe-mdl/f575.png deleted file mode 100644 index f353931345..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f575.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f576.png b/hub/apps/design/style/images/segoe-mdl/f576.png deleted file mode 100644 index 1d8eafb8f6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f576.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f577.png b/hub/apps/design/style/images/segoe-mdl/f577.png deleted file mode 100644 index e138e4890b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f577.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f578.png b/hub/apps/design/style/images/segoe-mdl/f578.png deleted file mode 100644 index c4361fbdb9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f578.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f579.png b/hub/apps/design/style/images/segoe-mdl/f579.png deleted file mode 100644 index 78bd6e1d8c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f579.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f57a.png b/hub/apps/design/style/images/segoe-mdl/f57a.png deleted file mode 100644 index edcf5f7a58..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f57a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f57b.png b/hub/apps/design/style/images/segoe-mdl/f57b.png deleted file mode 100644 index 45342c04f1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f57b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f57c.png b/hub/apps/design/style/images/segoe-mdl/f57c.png deleted file mode 100644 index 2dab10a2e2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f57c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f57d.png b/hub/apps/design/style/images/segoe-mdl/f57d.png deleted file mode 100644 index a1360e2f2a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f57d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f57e.png b/hub/apps/design/style/images/segoe-mdl/f57e.png deleted file mode 100644 index f9f5be6bc6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f57e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f57f.png b/hub/apps/design/style/images/segoe-mdl/f57f.png deleted file mode 100644 index eaddf424af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f57f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f580.png b/hub/apps/design/style/images/segoe-mdl/f580.png deleted file mode 100644 index 607284d4d3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f580.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f581.png b/hub/apps/design/style/images/segoe-mdl/f581.png deleted file mode 100644 index 9e21c75ecb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f581.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f582.png b/hub/apps/design/style/images/segoe-mdl/f582.png deleted file mode 100644 index cb4903ef00..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f582.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f583.png b/hub/apps/design/style/images/segoe-mdl/f583.png deleted file mode 100644 index 160b322475..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f583.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f584.png b/hub/apps/design/style/images/segoe-mdl/f584.png deleted file mode 100644 index 923cf0d767..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f584.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f585.png b/hub/apps/design/style/images/segoe-mdl/f585.png deleted file mode 100644 index e867ab05f2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f585.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f586.png b/hub/apps/design/style/images/segoe-mdl/f586.png deleted file mode 100644 index 99ff3945aa..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f586.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f587.png b/hub/apps/design/style/images/segoe-mdl/f587.png deleted file mode 100644 index 950c0e3470..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f587.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f588.png b/hub/apps/design/style/images/segoe-mdl/f588.png deleted file mode 100644 index 98a5ae41fe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f588.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f589.png b/hub/apps/design/style/images/segoe-mdl/f589.png deleted file mode 100644 index 2c3a738f48..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f589.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f58a.png b/hub/apps/design/style/images/segoe-mdl/f58a.png deleted file mode 100644 index fd2e0a6c95..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f58a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f58b.png b/hub/apps/design/style/images/segoe-mdl/f58b.png deleted file mode 100644 index dfc59fb7ee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f58b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f58c.png b/hub/apps/design/style/images/segoe-mdl/f58c.png deleted file mode 100644 index c785bd25a6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f58c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f58d.png b/hub/apps/design/style/images/segoe-mdl/f58d.png deleted file mode 100644 index 32f824fea9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f58d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f58e.png b/hub/apps/design/style/images/segoe-mdl/f58e.png deleted file mode 100644 index c1f398611f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f58e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f58f.png b/hub/apps/design/style/images/segoe-mdl/f58f.png deleted file mode 100644 index 32a0de1269..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f58f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f590.png b/hub/apps/design/style/images/segoe-mdl/f590.png deleted file mode 100644 index f68715ed54..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f590.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f591.png b/hub/apps/design/style/images/segoe-mdl/f591.png deleted file mode 100644 index 664af534ef..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f591.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f592.png b/hub/apps/design/style/images/segoe-mdl/f592.png deleted file mode 100644 index ab2ac0da2f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f592.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f593.png b/hub/apps/design/style/images/segoe-mdl/f593.png deleted file mode 100644 index 4891b86aac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f593.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f594.png b/hub/apps/design/style/images/segoe-mdl/f594.png deleted file mode 100644 index cd1990e13a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f594.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f595.png b/hub/apps/design/style/images/segoe-mdl/f595.png deleted file mode 100644 index 4c963c6ca3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f595.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f596.png b/hub/apps/design/style/images/segoe-mdl/f596.png deleted file mode 100644 index 81727ec50b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f596.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f597.png b/hub/apps/design/style/images/segoe-mdl/f597.png deleted file mode 100644 index 25eb62b02f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f597.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f598.png b/hub/apps/design/style/images/segoe-mdl/f598.png deleted file mode 100644 index 46f632ce9a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f598.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f599.png b/hub/apps/design/style/images/segoe-mdl/f599.png deleted file mode 100644 index 97905e7044..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f599.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f59a.png b/hub/apps/design/style/images/segoe-mdl/f59a.png deleted file mode 100644 index 09f944ba04..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f59a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f59b.png b/hub/apps/design/style/images/segoe-mdl/f59b.png deleted file mode 100644 index 4f045f9f1a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f59b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f59c.png b/hub/apps/design/style/images/segoe-mdl/f59c.png deleted file mode 100644 index c0c53857c1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f59c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f59d.png b/hub/apps/design/style/images/segoe-mdl/f59d.png deleted file mode 100644 index 4b30f195f3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f59d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f59e.png b/hub/apps/design/style/images/segoe-mdl/f59e.png deleted file mode 100644 index 52d98d0a44..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f59e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f59f.png b/hub/apps/design/style/images/segoe-mdl/f59f.png deleted file mode 100644 index aee4353dc4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f59f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a0.png b/hub/apps/design/style/images/segoe-mdl/f5a0.png deleted file mode 100644 index 197e622d9e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a1.png b/hub/apps/design/style/images/segoe-mdl/f5a1.png deleted file mode 100644 index 22cb4ad51c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a2.png b/hub/apps/design/style/images/segoe-mdl/f5a2.png deleted file mode 100644 index 1bf9c4436a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a3.png b/hub/apps/design/style/images/segoe-mdl/f5a3.png deleted file mode 100644 index 85349a6a0c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a4.png b/hub/apps/design/style/images/segoe-mdl/f5a4.png deleted file mode 100644 index bdff7737db..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a5.png b/hub/apps/design/style/images/segoe-mdl/f5a5.png deleted file mode 100644 index 8040738356..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a6.png b/hub/apps/design/style/images/segoe-mdl/f5a6.png deleted file mode 100644 index d56fd3190a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a7.png b/hub/apps/design/style/images/segoe-mdl/f5a7.png deleted file mode 100644 index ee249f944e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a8.png b/hub/apps/design/style/images/segoe-mdl/f5a8.png deleted file mode 100644 index 615c5be834..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5a9.png b/hub/apps/design/style/images/segoe-mdl/f5a9.png deleted file mode 100644 index e014a65bbd..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5aa.png b/hub/apps/design/style/images/segoe-mdl/f5aa.png deleted file mode 100644 index 583aa421b7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ab.png b/hub/apps/design/style/images/segoe-mdl/f5ab.png deleted file mode 100644 index ed2f6c8bf2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ac.png b/hub/apps/design/style/images/segoe-mdl/f5ac.png deleted file mode 100644 index 2e5e6af0f7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ad.png b/hub/apps/design/style/images/segoe-mdl/f5ad.png deleted file mode 100644 index 0c7fc13e2d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ae.png b/hub/apps/design/style/images/segoe-mdl/f5ae.png deleted file mode 100644 index 4b1601b38b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5b0.png b/hub/apps/design/style/images/segoe-mdl/f5b0.png deleted file mode 100644 index cf34d79c6a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5e7.png b/hub/apps/design/style/images/segoe-mdl/f5e7.png deleted file mode 100644 index 8f72477051..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5e7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ed.png b/hub/apps/design/style/images/segoe-mdl/f5ed.png deleted file mode 100644 index 02f4d129a3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ee.png b/hub/apps/design/style/images/segoe-mdl/f5ee.png deleted file mode 100644 index 3a825b7cbb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ef.png b/hub/apps/design/style/images/segoe-mdl/f5ef.png deleted file mode 100644 index c38ea5dafc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ef.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f2.png b/hub/apps/design/style/images/segoe-mdl/f5f2.png deleted file mode 100644 index f3e62114f6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f3.png b/hub/apps/design/style/images/segoe-mdl/f5f3.png deleted file mode 100644 index e7a26bca83..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f4.png b/hub/apps/design/style/images/segoe-mdl/f5f4.png deleted file mode 100644 index 3ef883e20e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f5.png b/hub/apps/design/style/images/segoe-mdl/f5f5.png deleted file mode 100644 index 4df3295685..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f6.png b/hub/apps/design/style/images/segoe-mdl/f5f6.png deleted file mode 100644 index 467e82f52c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f7.png b/hub/apps/design/style/images/segoe-mdl/f5f7.png deleted file mode 100644 index b7214edc86..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f8.png b/hub/apps/design/style/images/segoe-mdl/f5f8.png deleted file mode 100644 index 60b073c959..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5f9.png b/hub/apps/design/style/images/segoe-mdl/f5f9.png deleted file mode 100644 index 741ec33fc2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5f9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5fa.png b/hub/apps/design/style/images/segoe-mdl/f5fa.png deleted file mode 100644 index fd8612b122..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5fb.png b/hub/apps/design/style/images/segoe-mdl/f5fb.png deleted file mode 100644 index 6056c06732..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5fb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5fc.png b/hub/apps/design/style/images/segoe-mdl/f5fc.png deleted file mode 100644 index d4df4cb9e8..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5fc.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5fd.png b/hub/apps/design/style/images/segoe-mdl/f5fd.png deleted file mode 100644 index 512e8ecd40..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5fd.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5fe.png b/hub/apps/design/style/images/segoe-mdl/f5fe.png deleted file mode 100644 index a70439a699..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5fe.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f5ff.png b/hub/apps/design/style/images/segoe-mdl/f5ff.png deleted file mode 100644 index 0c3614f454..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f5ff.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f600.png b/hub/apps/design/style/images/segoe-mdl/f600.png deleted file mode 100644 index caf82b131d..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f600.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f601.png b/hub/apps/design/style/images/segoe-mdl/f601.png deleted file mode 100644 index 2537856fa1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f601.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f602.png b/hub/apps/design/style/images/segoe-mdl/f602.png deleted file mode 100644 index fd7211e42a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f602.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f603.png b/hub/apps/design/style/images/segoe-mdl/f603.png deleted file mode 100644 index fe3f1f82b3..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f603.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f604.png b/hub/apps/design/style/images/segoe-mdl/f604.png deleted file mode 100644 index 62c52c9e81..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f604.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f605.png b/hub/apps/design/style/images/segoe-mdl/f605.png deleted file mode 100644 index 2d4feae55a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f605.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f606.png b/hub/apps/design/style/images/segoe-mdl/f606.png deleted file mode 100644 index 4a5bad5a34..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f606.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f607.png b/hub/apps/design/style/images/segoe-mdl/f607.png deleted file mode 100644 index 75d69ecdac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f607.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f608.png b/hub/apps/design/style/images/segoe-mdl/f608.png deleted file mode 100644 index 4c35ce8335..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f608.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f614.png b/hub/apps/design/style/images/segoe-mdl/f614.png deleted file mode 100644 index 6bc3325435..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f614.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f615.png b/hub/apps/design/style/images/segoe-mdl/f615.png deleted file mode 100644 index 25caca208e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f615.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f616.png b/hub/apps/design/style/images/segoe-mdl/f616.png deleted file mode 100644 index 00e719299e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f616.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f617.png b/hub/apps/design/style/images/segoe-mdl/f617.png deleted file mode 100644 index 217e0cac9f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f617.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f618.png b/hub/apps/design/style/images/segoe-mdl/f618.png deleted file mode 100644 index f66dc69a3f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f618.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f619.png b/hub/apps/design/style/images/segoe-mdl/f619.png deleted file mode 100644 index 30f9e3debe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f619.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f61a.png b/hub/apps/design/style/images/segoe-mdl/f61a.png deleted file mode 100644 index 69134e074a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f61a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f61b.png b/hub/apps/design/style/images/segoe-mdl/f61b.png deleted file mode 100644 index 8c93e38985..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f61b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f61c.png b/hub/apps/design/style/images/segoe-mdl/f61c.png deleted file mode 100644 index 745fa4002a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f61c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f61d.png b/hub/apps/design/style/images/segoe-mdl/f61d.png deleted file mode 100644 index e6e23d77fe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f61d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f61e.png b/hub/apps/design/style/images/segoe-mdl/f61e.png deleted file mode 100644 index 8dd83b9bcc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f61e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f61f.png b/hub/apps/design/style/images/segoe-mdl/f61f.png deleted file mode 100644 index 1c1bd18d8b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f61f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f620.png b/hub/apps/design/style/images/segoe-mdl/f620.png deleted file mode 100644 index 23e57175e2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f620.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f623.png b/hub/apps/design/style/images/segoe-mdl/f623.png deleted file mode 100644 index 4974669fac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f623.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f624.png b/hub/apps/design/style/images/segoe-mdl/f624.png deleted file mode 100644 index bf67558d0a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f624.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f63c.png b/hub/apps/design/style/images/segoe-mdl/f63c.png deleted file mode 100644 index ce97a8db72..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f63c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f657.png b/hub/apps/design/style/images/segoe-mdl/f657.png deleted file mode 100644 index 2af8a5e97a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f657.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f658.png b/hub/apps/design/style/images/segoe-mdl/f658.png deleted file mode 100644 index 140eea8b83..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f658.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f659.png b/hub/apps/design/style/images/segoe-mdl/f659.png deleted file mode 100644 index c65276fbcc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f659.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f65a.png b/hub/apps/design/style/images/segoe-mdl/f65a.png deleted file mode 100644 index 01bea7a821..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f65a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f65b.png b/hub/apps/design/style/images/segoe-mdl/f65b.png deleted file mode 100644 index fd67ce4b74..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f65b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f65c.png b/hub/apps/design/style/images/segoe-mdl/f65c.png deleted file mode 100644 index fb7048758c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f65c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f69e.png b/hub/apps/design/style/images/segoe-mdl/f69e.png deleted file mode 100644 index c38473c0bf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f69e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f6a9.png b/hub/apps/design/style/images/segoe-mdl/f6a9.png deleted file mode 100644 index 4026712f17..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f6a9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f6b8.png b/hub/apps/design/style/images/segoe-mdl/f6b8.png deleted file mode 100644 index 40bd4ad7a0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f6b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f6ba.png b/hub/apps/design/style/images/segoe-mdl/f6ba.png deleted file mode 100644 index 6cd64d011f..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f6ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f6fa.png b/hub/apps/design/style/images/segoe-mdl/f6fa.png deleted file mode 100644 index ead10447dc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f6fa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f712.png b/hub/apps/design/style/images/segoe-mdl/f712.png deleted file mode 100644 index 17d29f2234..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f712.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f714.png b/hub/apps/design/style/images/segoe-mdl/f714.png deleted file mode 100644 index 7cb16ff478..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f714.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f715.png b/hub/apps/design/style/images/segoe-mdl/f715.png deleted file mode 100644 index 79a6eb0b40..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f715.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f716.png b/hub/apps/design/style/images/segoe-mdl/f716.png deleted file mode 100644 index a4456c8edf..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f716.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f71a.png b/hub/apps/design/style/images/segoe-mdl/f71a.png deleted file mode 100644 index 508a0dd164..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f71a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f71c.png b/hub/apps/design/style/images/segoe-mdl/f71c.png deleted file mode 100644 index 856837cfb5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f71c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f71d.png b/hub/apps/design/style/images/segoe-mdl/f71d.png deleted file mode 100644 index 4f420b6f8e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f71d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f71e.png b/hub/apps/design/style/images/segoe-mdl/f71e.png deleted file mode 100644 index 7008e6e68e..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f71e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f738.png b/hub/apps/design/style/images/segoe-mdl/f738.png deleted file mode 100644 index 99d3290344..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f738.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f739.png b/hub/apps/design/style/images/segoe-mdl/f739.png deleted file mode 100644 index 20eba0bca4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f739.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f73d.png b/hub/apps/design/style/images/segoe-mdl/f73d.png deleted file mode 100644 index 5a9745a2c6..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f73d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f73e.png b/hub/apps/design/style/images/segoe-mdl/f73e.png deleted file mode 100644 index 5a9a7b4431..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f73e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f73f.png b/hub/apps/design/style/images/segoe-mdl/f73f.png deleted file mode 100644 index 5dcba7ccfe..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f73f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f740.png b/hub/apps/design/style/images/segoe-mdl/f740.png deleted file mode 100644 index 9e069c9bd4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f740.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f741.png b/hub/apps/design/style/images/segoe-mdl/f741.png deleted file mode 100644 index fe01bc5a19..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f741.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f742.png b/hub/apps/design/style/images/segoe-mdl/f742.png deleted file mode 100644 index 08e00b26cc..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f742.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f743.png b/hub/apps/design/style/images/segoe-mdl/f743.png deleted file mode 100644 index 932d9d6024..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f743.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f744.png b/hub/apps/design/style/images/segoe-mdl/f744.png deleted file mode 100644 index 3d848baec5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f744.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f745.png b/hub/apps/design/style/images/segoe-mdl/f745.png deleted file mode 100644 index 1fc2b716a7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f745.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f746.png b/hub/apps/design/style/images/segoe-mdl/f746.png deleted file mode 100644 index 6d8c848d36..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f746.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f781.png b/hub/apps/design/style/images/segoe-mdl/f781.png deleted file mode 100644 index 556dd149a2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f781.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f785.png b/hub/apps/design/style/images/segoe-mdl/f785.png deleted file mode 100644 index 9556339b93..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f785.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f78a.png b/hub/apps/design/style/images/segoe-mdl/f78a.png deleted file mode 100644 index 12488e5ff1..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f78a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f78b.png b/hub/apps/design/style/images/segoe-mdl/f78b.png deleted file mode 100644 index e48a917391..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f78b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f78c.png b/hub/apps/design/style/images/segoe-mdl/f78c.png deleted file mode 100644 index 48cb1503a0..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f78c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f78d.png b/hub/apps/design/style/images/segoe-mdl/f78d.png deleted file mode 100644 index 8a70e866ec..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f78d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7ad.png b/hub/apps/design/style/images/segoe-mdl/f7ad.png deleted file mode 100644 index 4bcd2d5c98..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7ae.png b/hub/apps/design/style/images/segoe-mdl/f7ae.png deleted file mode 100644 index 3ddcdca993..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7af.png b/hub/apps/design/style/images/segoe-mdl/f7af.png deleted file mode 100644 index 8c35d72ce4..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7af.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b0.png b/hub/apps/design/style/images/segoe-mdl/f7b0.png deleted file mode 100644 index 2a5ce1fbb7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b1.png b/hub/apps/design/style/images/segoe-mdl/f7b1.png deleted file mode 100644 index 362f96f37a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b2.png b/hub/apps/design/style/images/segoe-mdl/f7b2.png deleted file mode 100644 index b9a8d33b5b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b3.png b/hub/apps/design/style/images/segoe-mdl/f7b3.png deleted file mode 100644 index 76430155e2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b3.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b4.png b/hub/apps/design/style/images/segoe-mdl/f7b4.png deleted file mode 100644 index b9a8d33b5b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b4.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b5.png b/hub/apps/design/style/images/segoe-mdl/f7b5.png deleted file mode 100644 index 57f532a37b..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b6.png b/hub/apps/design/style/images/segoe-mdl/f7b6.png deleted file mode 100644 index bea93af608..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b7.png b/hub/apps/design/style/images/segoe-mdl/f7b7.png deleted file mode 100644 index 0303ee3913..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b7.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b8.png b/hub/apps/design/style/images/segoe-mdl/f7b8.png deleted file mode 100644 index 6960358809..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b8.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7b9.png b/hub/apps/design/style/images/segoe-mdl/f7b9.png deleted file mode 100644 index f8f2eaaa63..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7b9.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7ba.png b/hub/apps/design/style/images/segoe-mdl/f7ba.png deleted file mode 100644 index bea93af608..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7ba.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7bb.png b/hub/apps/design/style/images/segoe-mdl/f7bb.png deleted file mode 100644 index 9a41816f10..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7bb.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7ed.png b/hub/apps/design/style/images/segoe-mdl/f7ed.png deleted file mode 100644 index 94ee50ace2..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7ed.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f7ee.png b/hub/apps/design/style/images/segoe-mdl/f7ee.png deleted file mode 100644 index db09eba884..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f7ee.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f809.png b/hub/apps/design/style/images/segoe-mdl/f809.png deleted file mode 100644 index 1606fc2bac..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f809.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f83b.png b/hub/apps/design/style/images/segoe-mdl/f83b.png deleted file mode 100644 index 689740a8e5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f83b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f83d.png b/hub/apps/design/style/images/segoe-mdl/f83d.png deleted file mode 100644 index bb16a07bbb..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f83d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f83e.png b/hub/apps/design/style/images/segoe-mdl/f83e.png deleted file mode 100644 index 41de17644a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f83e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f83f.png b/hub/apps/design/style/images/segoe-mdl/f83f.png deleted file mode 100644 index f7e3a22254..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f83f.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f847.png b/hub/apps/design/style/images/segoe-mdl/f847.png deleted file mode 100644 index 8e5dc79ed7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f847.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f87b.png b/hub/apps/design/style/images/segoe-mdl/f87b.png deleted file mode 100644 index 96bf63fc20..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f87b.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f87c.png b/hub/apps/design/style/images/segoe-mdl/f87c.png deleted file mode 100644 index a25cc2a344..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f87c.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f87d.png b/hub/apps/design/style/images/segoe-mdl/f87d.png deleted file mode 100644 index 14e75b46af..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f87d.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f87e.png b/hub/apps/design/style/images/segoe-mdl/f87e.png deleted file mode 100644 index c9740f9303..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f87e.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f89a.png b/hub/apps/design/style/images/segoe-mdl/f89a.png deleted file mode 100644 index fac9288fe7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f89a.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8a5.png b/hub/apps/design/style/images/segoe-mdl/f8a5.png deleted file mode 100644 index 72d22e5bf7..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8a5.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8a6.png b/hub/apps/design/style/images/segoe-mdl/f8a6.png deleted file mode 100644 index 5515e24b2c..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8a6.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8aa.png b/hub/apps/design/style/images/segoe-mdl/f8aa.png deleted file mode 100644 index 05bcb49da5..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8aa.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8ab.png b/hub/apps/design/style/images/segoe-mdl/f8ab.png deleted file mode 100644 index 44a176aa4a..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8ab.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8ac.png b/hub/apps/design/style/images/segoe-mdl/f8ac.png deleted file mode 100644 index 29837ccdd9..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8ac.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8ad.png b/hub/apps/design/style/images/segoe-mdl/f8ad.png deleted file mode 100644 index c241bb40ff..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8ad.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8ae.png b/hub/apps/design/style/images/segoe-mdl/f8ae.png deleted file mode 100644 index 5f613fc7ee..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8ae.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8af.png b/hub/apps/design/style/images/segoe-mdl/f8af.png deleted file mode 100644 index b743902a09..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8af.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8b0.png b/hub/apps/design/style/images/segoe-mdl/f8b0.png deleted file mode 100644 index 5a2c254d33..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8b0.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8b1.png b/hub/apps/design/style/images/segoe-mdl/f8b1.png deleted file mode 100644 index a71f04ba39..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8b1.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/f8b2.png b/hub/apps/design/style/images/segoe-mdl/f8b2.png deleted file mode 100644 index 2ecb435444..0000000000 Binary files a/hub/apps/design/style/images/segoe-mdl/f8b2.png and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-mdl/txt.txt b/hub/apps/design/style/images/segoe-mdl/txt.txt deleted file mode 100644 index 7d4e109930..0000000000 --- a/hub/apps/design/style/images/segoe-mdl/txt.txt +++ /dev/null @@ -1,1549 +0,0 @@ -e001.png -e002.png -e003.png -e004.png -e005.png -e006.png -e007.png -e008.png -e009.png -e00a.png -e00b.png -e00c.png -e00e.png -e00f.png -e010.png -e011.png -e012.png -e013.png -e014.png -e015.png -e016.png -e017.png -e018.png -e019.png -e052.png -e07f.png -e081.png -e082.png -e087.png -e08f.png -e094.png -e096.png -e097.png -e098.png -e099.png -e09a.png -e09b.png -e09c.png -e09d.png -e09e.png -e09f.png -e0a0.png -e0a1.png -e0a2.png -e0a5.png -e0a6.png -e0ab.png -e0ad.png -e0ae.png -e0b4.png -e0b5.png -e0b8.png -e0c4.png -e0d5.png -e0e2.png -e0e3.png -e0e4.png -e0e5.png -e0e7.png -e100.png -e101.png -e102.png -e103.png -e104.png -e105.png -e106.png -e107.png -e108.png -e109.png -e10a.png -e10b.png -e10c.png -e10d.png -e10e.png -e10f.png -e110.png -e111.png -e112.png -e113.png -e114.png -e115.png -e116.png -e117.png -e118.png -e119.png -e11a.png -e11b.png -e11c.png -e11d.png -e11e.png -e11f.png -e120.png -e121.png -e122.png -e123.png -e124.png -e125.png -e126.png -e127.png -e128.png -e129.png -e12a.png -e12b.png -e12c.png -e12d.png -e12e.png -e12f.png -e130.png -e131.png -e132.png -e133.png -e134.png -e135.png -e136.png -e137.png -e138.png -e139.png -e13a.png -e13b.png -e13c.png -e13d.png -e13e.png -e13f.png -e140.png -e141.png -e142.png -e143.png -e144.png -e145.png -e146.png -e147.png -e148.png -e149.png -e14a.png -e14b.png -e14c.png -e14d.png -e14e.png -e14f.png -e150.png -e151.png -e152.png -e153.png -e154.png -e155.png -e156.png -e158.png -e159.png -e15a.png -e15b.png -e15c.png -e15d.png -e15e.png -e15f.png -e160.png -e161.png -e162.png -e163.png -e164.png -e165.png -e166.png -e167.png -e168.png -e169.png -e16a.png -e16b.png -e16c.png -e16d.png -e16e.png -e16f.png -e170.png -e171.png -e172.png -e173.png -e174.png -e175.png -e176.png -e177.png -e178.png -e179.png -e17a.png -e17b.png -e17c.png -e17d.png -e181.png -e182.png -e183.png -e184.png -e185.png -e186.png -e187.png -e188.png -e189.png -e18a.png -e18b.png -e18c.png -e18d.png -e18e.png -e18f.png -e190.png -e191.png -e192.png -e193.png -e194.png -e195.png -e196.png -e197.png -e198.png -e199.png -e19a.png -e19b.png -e19c.png -e19d.png -e19e.png -e19f.png -e1a0.png -e1a1.png -e1a2.png -e1a3.png -e1a4.png -e1a5.png -e1a6.png -e1a7.png -e1a8.png -e1aa.png -e1ab.png -e1ac.png -e1ad.png -e1ae.png -e1af.png -e1b0.png -e1b1.png -e1b2.png -e1b3.png -e1b4.png -e1b5.png -e1b6.png -e1b7.png -e1b8.png -e1b9.png -e1ba.png -e1bb.png -e1bc.png -e1bd.png -e1be.png -e1bf.png -e1c0.png -e1c2.png -e1c3.png -e1c4.png -e1c5.png -e1c6.png -e1c7.png -e1c8.png -e1c9.png -e1ca.png -e1cb.png -e1cc.png -e1cd.png -e1ce.png -e1cf.png -e1d0.png -e1d1.png -e1d2.png -e1d3.png -e1d4.png -e1d5.png -e1d6.png -e1d7.png -e1d8.png -e1d9.png -e1da.png -e1db.png -e1dc.png -e1dd.png -e1de.png -e1df.png -e1e0.png -e1e1.png -e1e2.png -e1e3.png -e1e4.png -e1e5.png -e1e6.png -e1e7.png -e1e8.png -e1e9.png -e1ea.png -e1ec.png -e1ed.png -e1ee.png -e1ef.png -e1f1.png -e1f2.png -e1f3.png -e1f4.png -e1f5.png -e1f6.png -e1f7.png -e1fd.png -e206.png -e208.png -e209.png -e20a.png -e20b.png -e211.png -e212.png -e224.png -e228.png -e248.png -e249.png -e24a.png -e25a.png -e25b.png -e25c.png -e25d.png -e25e.png -e26b.png -e26c.png -e28f.png -e290.png -e291.png -e292.png -e294.png -e295.png -e297.png -e298.png -e299.png -e29b.png -e2ac.png -e2ad.png -e2ae.png -e2af.png -e2b0.png -e2b1.png -e2b2.png -e2b3.png -e2b4.png -e2f6.png -e2f7.png -e700.png -e701.png -e702.png -e703.png -e704.png -e705.png -e706.png -e707.png -e708.png -e709.png -e70a.png -e70b.png -e70c.png -e70d.png -e70e.png -e70f.png -e710.png -e711.png -e712.png -e713.png -e714.png -e715.png -e716.png -e717.png -e718.png -e719.png -e71a.png -e71b.png -e71c.png -e71d.png -e71e.png -e71f.png -e720.png -e721.png -e722.png -e723.png -e724.png -e725.png -e726.png -e727.png -e728.png -e729.png -e72a.png -e72b.png -e72c.png -e72d.png -e72e.png -e730.png -e731.png -e734.png -e735.png -e737.png -e738.png -e739.png -e73a.png -e73b.png -e73c.png -e73d.png -e73e.png -e73f.png -e740.png -e741.png -e742.png -e743.png -e744.png -e745.png -e746.png -e747.png -e748.png -e749.png -e74a.png -e74b.png -e74c.png -e74d.png -e74e.png -e74f.png -e750.png -e751.png -e752.png -e753.png -e754.png -e755.png -e756.png -e759.png -e75a.png -e75b.png -e75c.png -e75d.png -e75e.png -e75f.png -e760.png -e761.png -e762.png -e763.png -e764.png -e765.png -e766.png -e767.png -e768.png -e769.png -e76b.png -e76c.png -e76d.png -e76e.png -e76f.png -e770.png -e771.png -e772.png -e773.png -e774.png -e775.png -e776.png -e777.png -e778.png -e779.png -e77a.png -e77b.png -e77c.png -e77f.png -e780.png -e781.png -e783.png -e784.png -e785.png -e786.png -e787.png -e788.png -e789.png -e78a.png -e78b.png -e78c.png -e790.png -e791.png -e792.png -e793.png -e799.png -e7a5.png -e7a6.png -e7a7.png -e7a8.png -e7ac.png -e7ad.png -e7b3.png -e7b5.png -e7b7.png -e7b8.png -e7ba.png -e7bc.png -e7be.png -e7bf.png -e7c0.png -e7c1.png -e7c3.png -e7c4.png -e7c5.png -e7c6.png -e7c7.png -e7c8.png -e7c9.png -e7de.png -e7e3.png -e7e6.png -e7e7.png -e7e8.png -e7ea.png -e7eb.png -e7ec.png -e7ed.png -e7ee.png -e7ef.png -e7f0.png -e7f1.png -e7f2.png -e7f3.png -e7f4.png -e7f5.png -e7f6.png -e7f7.png -e7f8.png -e7f9.png -e7fa.png -e7fb.png -e7fc.png -e7fd.png -e802.png -e803.png -e804.png -e805.png -e806.png -e809.png -e80a.png -e80c.png -e80d.png -e80f.png -e811.png -e812.png -e813.png -e814.png -e815.png -e816.png -e819.png -e81a.png -e81b.png -e81c.png -e81d.png -e81e.png -e81f.png -e821.png -e822.png -e823.png -e825.png -e826.png -e829.png -e82a.png -e82b.png -e82c.png -e82d.png -e82e.png -e82f.png -e830.png -e835.png -e836.png -e838.png -e839.png -e83a.png -e83b.png -e83c.png -e83d.png -e83e.png -e83f.png -e840.png -e841.png -e842.png -e843.png -e844.png -e845.png -e846.png -e847.png -e848.png -e849.png -e84a.png -e84b.png -e84c.png -e84d.png -e84e.png -e84f.png -e850.png -e851.png -e852.png -e853.png -e854.png -e855.png -e856.png -e857.png -e858.png -e859.png -e85a.png -e85b.png -e85c.png -e85d.png -e85e.png -e85f.png -e860.png -e861.png -e862.png -e863.png -e864.png -e865.png -e866.png -e867.png -e868.png -e869.png -e86a.png -e86b.png -e86c.png -e86d.png -e86e.png -e86f.png -e870.png -e871.png -e872.png -e873.png -e874.png -e875.png -e876.png -e877.png -e878.png -e879.png -e87a.png -e87b.png -e87c.png -e87d.png -e87e.png -e87f.png -e880.png -e881.png -e882.png -e883.png -e884.png -e885.png -e886.png -e887.png -e888.png -e889.png -e88a.png -e88b.png -e88c.png -e88d.png -e88e.png -e88f.png -e890.png -e891.png -e892.png -e893.png -e894.png -e895.png -e896.png -e897.png -e898.png -e899.png -e89a.png -e89b.png -e89c.png -e89e.png -e89f.png -e8a0.png -e8a1.png -e8a2.png -e8a3.png -e8a4.png -e8a5.png -e8a6.png -e8a7.png -e8a8.png -e8a9.png -e8aa.png -e8ab.png -e8ac.png -e8ad.png -e8ae.png -e8af.png -e8b0.png -e8b1.png -e8b2.png -e8b3.png -e8b4.png -e8b5.png -e8b6.png -e8b7.png -e8b8.png -e8b9.png -e8ba.png -e8bb.png -e8bc.png -e8bd.png -e8be.png -e8bf.png -e8c0.png -e8c1.png -e8c2.png -e8c3.png -e8c4.png -e8c5.png -e8c6.png -e8c7.png -e8c8.png -e8c9.png -e8ca.png -e8cb.png -e8cc.png -e8cd.png -e8ce.png -e8cf.png -e8d0.png -e8d1.png -e8d2.png -e8d3.png -e8d4.png -e8d5.png -e8d6.png -e8d7.png -e8d8.png -e8d9.png -e8da.png -e8db.png -e8dc.png -e8dd.png -e8de.png -e8df.png -e8e0.png -e8e1.png -e8e2.png -e8e3.png -e8e4.png -e8e5.png -e8e6.png -e8e7.png -e8e8.png -e8e9.png -e8ea.png -e8eb.png -e8ec.png -e8ed.png -e8ee.png -e8ef.png -e8f0.png -e8f1.png -e8f2.png -e8f3.png -e8f4.png -e8f5.png -e8f6.png -e8f7.png -e8f8.png -e8f9.png -e8fa.png -e8fb.png -e8fc.png -e8fd.png -e8fe.png -e8ff.png -e902.png -e904.png -e905.png -e906.png -e907.png -e908.png -e909.png -e90a.png -e90b.png -e90c.png -e90d.png -e90e.png -e90f.png -e910.png -e911.png -e912.png -e913.png -e914.png -e915.png -e916.png -e91b.png -e91c.png -e91f.png -e921.png -e922.png -e923.png -e924.png -e925.png -e926.png -e927.png -e928.png -e929.png -e92c.png -e92d.png -e92e.png -e92f.png -e930.png -e931.png -e932.png -e933.png -e934.png -e935.png -e936.png -e937.png -e938.png -e939.png -e93c.png -e93e.png -e943.png -e944.png -e945.png -e946.png -e947.png -e948.png -e949.png -e94a.png -e94b.png -e94c.png -e94d.png -e94e.png -e94f.png -e950.png -e951.png -e952.png -e953.png -e954.png -e955.png -e956.png -e957.png -e958.png -e95a.png -e95b.png -e95d.png -e95e.png -e960.png -e961.png -e962.png -e963.png -e964.png -e965.png -e966.png -e967.png -e968.png -e969.png -e96a.png -e96d.png -e96e.png -e96f.png -e970.png -e971.png -e972.png -e973.png -e974.png -e975.png -e976.png -e977.png -e978.png -e979.png -e97a.png -e97b.png -e97c.png -e97d.png -e97e.png -e97f.png -e980.png -e981.png -e982.png -e983.png -e984.png -e985.png -e986.png -e987.png -e988.png -e989.png -e98a.png -e98f.png -e990.png -e992.png -e993.png -e994.png -e995.png -e996.png -e998.png -e99a.png -e9a1.png -e9a8.png -e9a9.png -e9aa.png -e9ab.png -e9ac.png -e9ad.png -e9ae.png -e9af.png -e9b0.png -e9b1.png -e9b2.png -e9b3.png -e9b4.png -e9b5.png -e9b6.png -e9b7.png -e9b8.png -e9b9.png -e9ba.png -e9bb.png -e9bc.png -e9ca.png -e9d2.png -e9d5.png -e9d9.png -e9f3.png -e9f5.png -e9f9.png -ea0c.png -ea14.png -ea18.png -ea1f.png -ea21.png -ea24.png -ea35.png -ea37.png -ea38.png -ea39.png -ea3a.png -ea3b.png -ea40.png -ea41.png -ea42.png -ea43.png -ea44.png -ea47.png -ea48.png -ea49.png -ea4a.png -ea4b.png -ea4c.png -ea4e.png -ea4f.png -ea50.png -ea51.png -ea52.png -ea53.png -ea54.png -ea55.png -ea56.png -ea57.png -ea58.png -ea5b.png -ea5c.png -ea5e.png -ea5f.png -ea60.png -ea61.png -ea62.png -ea63.png -ea64.png -ea65.png -ea69.png -ea6a.png -ea6c.png -ea79.png -ea80.png -ea81.png -ea82.png -ea83.png -ea84.png -ea86.png -ea89.png -ea8a.png -ea8b.png -ea8c.png -ea8d.png -ea8e.png -ea8f.png -ea91.png -ea92.png -ea93.png -ea94.png -ea95.png -ea97.png -ea98.png -ea99.png -eadf.png -eb05.png -eb0f.png -eb11.png -eb3c.png -eb41.png -eb42.png -eb44.png -eb47.png -eb48.png -eb49.png -eb4a.png -eb4b.png -eb4c.png -eb4d.png -eb4e.png -eb4f.png -eb50.png -eb51.png -eb52.png -eb55.png -eb56.png -eb57.png -eb58.png -eb59.png -eb5a.png -eb5b.png -eb5c.png -eb5d.png -eb5e.png -eb5f.png -eb60.png -eb61.png -eb62.png -eb63.png -eb66.png -eb67.png -eb68.png -eb7e.png -eb82.png -eb83.png -eb84.png -eb85.png -eb86.png -eb87.png -eb88.png -eb89.png -eb8a.png -eb8b.png -eb8c.png -eb8d.png -eb90.png -eb91.png -eb95.png -eb96.png -eb97.png -eb9d.png -eb9e.png -eb9f.png -eba0.png -eba1.png -eba2.png -eba3.png -eba4.png -eba5.png -eba6.png -eba7.png -eba8.png -eba9.png -ebaa.png -ebab.png -ebac.png -ebad.png -ebae.png -ebaf.png -ebb0.png -ebb1.png -ebb2.png -ebb3.png -ebb4.png -ebb5.png -ebb6.png -ebb7.png -ebb8.png -ebb9.png -ebba.png -ebbb.png -ebbc.png -ebbd.png -ebbe.png -ebbf.png -ebc0.png -ebc3.png -ebc4.png -ebc5.png -ebc6.png -ebd2.png -ebd4.png -ebd5.png -ebd6.png -ebd7.png -ebd8.png -ebd9.png -ebda.png -ebdb.png -ebde.png -ebe6.png -ebe7.png -ebe8.png -ebfc.png -ebfd.png -ebfe.png -ebff.png -ec00.png -ec02.png -ec05.png -ec06.png -ec07.png -ec08.png -ec09.png -ec0a.png -ec0b.png -ec11.png -ec12.png -ec13.png -ec14.png -ec15.png -ec16.png -ec19.png -ec1b.png -ec1e.png -ec20.png -ec24.png -ec25.png -ec26.png -ec27.png -ec31.png -ec32.png -ec37.png -ec38.png -ec39.png -ec3a.png -ec3b.png -ec3c.png -ec3d.png -ec3e.png -ec3f.png -ec40.png -ec41.png -ec42.png -ec43.png -ec44.png -ec45.png -ec46.png -ec47.png -ec48.png -ec49.png -ec4a.png -ec4e.png -ec4f.png -ec50.png -ec51.png -ec52.png -ec54.png -ec55.png -ec56.png -ec57.png -ec58.png -ec59.png -ec5a.png -ec5b.png -ec5c.png -ec61.png -ec64.png -ec6d.png -ec71.png -ec72.png -ec74.png -ec75.png -ec76.png -ec77.png -ec7a.png -ec7e.png -ec7f.png -ec80.png -ec81.png -ec87.png -ec88.png -ec8a.png -ec8f.png -ec92.png -eca5.png -eca7.png -ecaa.png -ecad.png -ecc4.png -ecc5.png -ecc6.png -ecc8.png -ecc9.png -ecca.png -eccb.png -eccc.png -eccd.png -ece7.png -ece8.png -ece9.png -ecf0.png -ecf1.png -ecf3.png -ed0c.png -ed0d.png -ed10.png -ed15.png -ed1e.png -ed1f.png -ed25.png -ed28.png -ed2a.png -ed2b.png -ed2c.png -ed2d.png -ed2e.png -ed2f.png -ed30.png -ed31.png -ed32.png -ed33.png -ed35.png -ed39.png -ed3a.png -ed3c.png -ed3d.png -ed41.png -ed42.png -ed43.png -ed44.png -ed47.png -ed4c.png -ed4d.png -ed53.png -ed54.png -ed55.png -ed56.png -ed57.png -ed58.png -ed59.png -ed5a.png -ed5b.png -ed5c.png -ed5d.png -ed5e.png -ed5f.png -ed60.png -ed61.png -ed62.png -ed63.png -ed64.png -ed65.png -ed66.png -ed67.png -eda2.png -eda3.png -eda4.png -eda5.png -eda6.png -eda7.png -eda8.png -eda9.png -edaa.png -edab.png -edac.png -edad.png -edae.png -edaf.png -edb0.png -edb1.png -edb3.png -edb4.png -edb5.png -edc6.png -edd6.png -edd9.png -edda.png -eddb.png -eddc.png -ede1.png -ede2.png -ede3.png -ede4.png -ede5.png -edfb.png -ee35.png -ee3f.png -ee40.png -ee4a.png -ee56.png -ee57.png -ee63.png -ee64.png -ee65.png -ee71.png -ee77.png -ee79.png -ee7a.png -ee92.png -ee93.png -ee94.png -eeca.png -ef15.png -ef16.png -ef17.png -ef18.png -ef19.png -ef1f.png -ef20.png -ef2c.png -ef2d.png -ef2e.png -ef2f.png -ef31.png -ef3b.png -ef3c.png -ef3d.png -ef3e.png -ef3f.png -ef40.png -ef58.png -efa5.png -efa9.png -f003.png -f080.png -f081.png -f085.png -f08c.png -f093.png -f094.png -f095.png -f096.png -f0ad.png -f0ae.png -f0af.png -f0b0.png -f0b2.png -f0b3.png -f0b4.png -f0b5.png -f0b6.png -f0b7.png -f0b8.png -f0b9.png -f0c6.png -f0c7.png -f0ca.png -f0cb.png -f0cc.png -f0cd.png -f0ce.png -f0d2.png -f0d3.png -f0d5.png -f0d6.png -f0d7.png -f0d8.png -f0e2.png -f0e3.png -f0e4.png -f0e5.png -f0e6.png -f0e7.png -f0e8.png -f0e9.png -f0ea.png -f0eb.png -f0ec.png -f0ed.png -f0ee.png -f0f7.png -f0f8.png -f0f9.png -f0fb.png -f103.png -f108.png -f109.png -f10a.png -f10b.png -f10c.png -f10d.png -f10e.png -f110.png -f111.png -f119.png -f126.png -f127.png -f128.png -f129.png -f12a.png -f12b.png -f12e.png -f12f.png -f136.png -f137.png -f138.png -f139.png -f13a.png -f13b.png -f13c.png -f13d.png -f13e.png -f13f.png -f140.png -f141.png -f142.png -f143.png -f146.png -f147.png -f148.png -f149.png -f14a.png -f14b.png -f14c.png -f14d.png -f14e.png -f14f.png -f150.png -f151.png -f152.png -f153.png -f154.png -f155.png -f156.png -f157.png -f158.png -f159.png -f161.png -f163.png -f164.png -f165.png -f166.png -f167.png -f168.png -f169.png -f16a.png -f16b.png -f16c.png -f16d.png -f16e.png -f175.png -f17f.png -f180.png -f182.png -f191.png -f193.png -f1ad.png -f1cb.png -f1cc.png -f1d8.png -f1d9.png -f20c.png -f20d.png -f210.png -f22c.png -f259.png -f260.png -f261.png -f26b.png -f26c.png -f26d.png -f26e.png -f270.png -f271.png -f272.png -f32a.png -f384.png -f385.png -f386.png -e736.png -e77e.png -e80b.png -e95f.png -ea0d.png -ea3c.png -ea3d.png -ea3f.png -ea90.png -eac2.png -eafc.png -ec6c.png -ece4.png -ed0e.png -ed11.png -ed14.png -ee6f.png -eea3.png -ef90.png -f211.png -f2b7.png -f3b1.png -f49a.png -f5aa.png -f5e7.png -f63c.png -f657.png -f658.png -f659.png -f65a.png -f65b.png -f65c.png -f69e.png -f6ba.png -f6fa.png -f712.png -f714.png -f715.png -f716.png -f71a.png -f71c.png -f71d.png -f71e.png -f738.png -f739.png -f73d.png -f73e.png -f73f.png -f740.png -f741.png -f742.png -f743.png -f744.png -f745.png -f746.png -f781.png -f785.png -f78a.png -f78b.png -f78c.png -f78d.png -f7ad.png -f7ae.png -f7af.png -f7b0.png -f7b1.png -f7b2.png -f7b3.png -f7b4.png -f7b5.png -f7b6.png -f7b7.png -f7b8.png -f7b9.png -f7ba.png -f7bb.png -f7ed.png -f7ee.png -f809.png -f83b.png -f83d.png -f83e.png -f83f.png -f847.png -f87b.png -f87c.png -f87d.png -f87e.png -f89a.png -txt.txt diff --git a/hub/apps/design/style/images/segoe-sample.psd b/hub/apps/design/style/images/segoe-sample.psd deleted file mode 100644 index 6ae94fec7c..0000000000 Binary files a/hub/apps/design/style/images/segoe-sample.psd and /dev/null differ diff --git a/hub/apps/design/style/images/segoe-ui-symbol-layering.png b/hub/apps/design/style/images/segoe-ui-symbol-layering.png deleted file mode 100644 index f9a82b8854..0000000000 Binary files a/hub/apps/design/style/images/segoe-ui-symbol-layering.png and /dev/null differ diff --git a/hub/apps/design/style/images/shades.psd b/hub/apps/design/style/images/shades.psd deleted file mode 100644 index 97c6a02cee..0000000000 Binary files a/hub/apps/design/style/images/shades.psd and /dev/null differ diff --git a/hub/apps/design/style/images/spellcheck.psd b/hub/apps/design/style/images/spellcheck.psd deleted file mode 100644 index 089345d2cf..0000000000 Binary files a/hub/apps/design/style/images/spellcheck.psd and /dev/null differ diff --git a/hub/apps/design/style/images/standarddensity.png b/hub/apps/design/style/images/standarddensity.png deleted file mode 100644 index bffcbfd61d..0000000000 Binary files a/hub/apps/design/style/images/standarddensity.png and /dev/null differ diff --git a/hub/apps/design/style/images/standarddensitycommanding.png b/hub/apps/design/style/images/standarddensitycommanding.png deleted file mode 100644 index 0f64d116f9..0000000000 Binary files a/hub/apps/design/style/images/standarddensitycommanding.png and /dev/null differ diff --git a/hub/apps/design/style/images/type-ramp.psd b/hub/apps/design/style/images/type-ramp.psd deleted file mode 100644 index 3d8265df1c..0000000000 Binary files a/hub/apps/design/style/images/type-ramp.psd and /dev/null differ diff --git a/hub/apps/design/style/images/type/alignment.svg b/hub/apps/design/style/images/type/alignment.svg deleted file mode 100644 index b60b26bea4..0000000000 --- a/hub/apps/design/style/images/type/alignment.svg +++ /dev/null @@ -1,308 +0,0 @@ - -alignment -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/type/clipping.svg b/hub/apps/design/style/images/type/clipping.svg deleted file mode 100644 index fb6992a578..0000000000 --- a/hub/apps/design/style/images/type/clipping.svg +++ /dev/null @@ -1,127 +0,0 @@ - -clipping -Created using Figma - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/type/scaling-chart.svg b/hub/apps/design/style/images/type/scaling-chart.svg deleted file mode 100644 index e1b582210c..0000000000 --- a/hub/apps/design/style/images/type/scaling-chart.svg +++ /dev/null @@ -1 +0,0 @@ -scaling-chart \ No newline at end of file diff --git a/hub/apps/design/style/images/type/segoe-sample.svg b/hub/apps/design/style/images/type/segoe-sample.svg deleted file mode 100644 index 3ec7e80dba..0000000000 --- a/hub/apps/design/style/images/type/segoe-sample.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/hub/apps/design/style/images/type/text-block-type-ramp.svg b/hub/apps/design/style/images/type/text-block-type-ramp.svg deleted file mode 100644 index 315aadd306..0000000000 --- a/hub/apps/design/style/images/type/text-block-type-ramp.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/type/type-hierarchy-dark.svg b/hub/apps/design/style/images/type/type-hierarchy-dark.svg deleted file mode 100644 index 18070f03b2..0000000000 --- a/hub/apps/design/style/images/type/type-hierarchy-dark.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/hub/apps/design/style/images/type/type-hierarchy.svg b/hub/apps/design/style/images/type/type-hierarchy.svg deleted file mode 100644 index 21235327e0..0000000000 --- a/hub/apps/design/style/images/type/type-hierarchy.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/hub/apps/design/style/images/type/type-ramp.svg b/hub/apps/design/style/images/type/type-ramp.svg deleted file mode 100644 index 05cb541e72..0000000000 --- a/hub/apps/design/style/images/type/type-ramp.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hub/apps/design/style/images/weights.psd b/hub/apps/design/style/images/weights.psd deleted file mode 100644 index 73e49b048e..0000000000 Binary files a/hub/apps/design/style/images/weights.psd and /dev/null differ diff --git a/hub/apps/design/style/images/word-letter.psd b/hub/apps/design/style/images/word-letter.psd deleted file mode 100644 index 1a0b218cea..0000000000 Binary files a/hub/apps/design/style/images/word-letter.psd and /dev/null differ diff --git a/hub/apps/design/style/images/xaml-controls-gallery-sm.png b/hub/apps/design/style/images/xaml-controls-gallery-sm.png deleted file mode 100644 index c78a6ae24d..0000000000 Binary files a/hub/apps/design/style/images/xaml-controls-gallery-sm.png and /dev/null differ diff --git a/hub/apps/design/style/mica.md b/hub/apps/design/style/mica.md deleted file mode 100644 index b8adc3c6e4..0000000000 --- a/hub/apps/design/style/mica.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -description: Learn to use Mica and Mica Alt, opaque, dynamic materials that incorporate theme and desktop wallpaper to delight users and create visual hierarchy. -title: Mica material -template: detail.hbs -ms.date: 11/21/2024 -ms.topic: article -keywords: windows 11 -ms.localizationpriority: medium ---- - -# Mica material - -_Mica_ is an opaque, dynamic material that incorporates theme and desktop wallpaper to paint the background of long-lived windows such as apps and settings. You can apply Mica to your application backdrop to delight users and create visual hierarchy, aiding productivity, by increasing clarity about which window is in focus. Mica is specifically designed for app performance as it only samples the desktop wallpaper once to create its visualization. Mica is available for UWP apps that use WinUI 2 and apps that use Windows App SDK 1.1 or later, while running on Windows 11 version 22000 or later. - -![hero image](images/materials/mica-header.png) - -:::row::: - :::column::: -Mica in light theme
    -![Mica in light theme](images/materials/mica-light-theme.png) - :::column-end::: - :::column::: -Mica in dark theme
    -![Mica in dark theme](images/materials/mica-dark-theme.png) - :::column-end::: -:::row-end::: - -_Mica Alt_ is a variant of Mica, with stronger tinting of the user's desktop background color. You can apply Mica Alt to your app's backdrop to provide a deeper visual hierarchy than Mica, especially when creating an app with a tabbed title bar. Mica Alt is available for apps that use Windows App SDK 1.1 or later, while running on Windows 11 version 22000 or later. - -These images show the difference between Mica and Mica Alt in a title bar with tabs. The first image uses Mica and the second image uses Mica Alt. - -:::image type="content" source="images/mica-tabs.png" alt-text="Screenshot of Mica in a title bar with tabs."::: - -:::image type="content" source="images/mica-alt-tabs.png" alt-text="Screenshot of Mica Alt in a title bar with tabs."::: - -## When to use Mica or Mica Alt - -Mica and Mica Alt are materials that appear on the backdrop of your application — behind all other content. Each material is opaque and incorporates the user's theme and desktop wallpaper to create its highly personalized appearance. As the user moves the window across the screen, the Mica material dynamically adapts to create a rich visualization using the wallpaper underneath the application. In addition, the material helps users focus on the current task by falling back to a neutral color when the app is inactive. - -We recommend that you apply Mica or Mica Alt as the base layer of your app, and prioritize visibility in the title bar area. For more specific layering guidance see [Layering and Elevation](../signature-experiences/layering.md) and the [App layering with Mica](#app-layering-with-mica) section of this article. - -## Usability and adaptability - -The Mica materials automatically adapt their appearance for a wide variety of devices and contexts. They are designed for performance as they capture the background wallpaper only once to create their visualizations. - -In High Contrast mode, users continue to see the familiar background color of their choosing in place of Mica or Mica Alt. In addition, the Mica materials will appear as a solid fallback color (`SolidBackgroundFillColorBase` for Mica, `SolidBackgroundFillColorBaseAlt` for Mica Alt) when: - -* The user turns off transparency in Settings > Personalization > Color. -* Battery Saver mode is activated. -* The app runs on low-end hardware. -* An app window on desktop deactivates. -* The Windows app is running on Xbox or HoloLens. -* The Windows version is below 22000. - -## App layering with Mica - -:::row::: - :::column::: -Standard pattern content layer
    -![Standard content layer](images/materials/mica-l-content.png) - :::column-end::: - :::column::: -Card pattern content layer
    -![Card pattern content layer](images/materials/mica-card-content.png) - :::column-end::: -:::row-end::: - -Mica is ideal as a foundation layer in your app's hierarchy due to its inactive and active states and subtle personalization. To follow the two-layer [Layering and Elevation](../signature-experiences/layering.md) system, we encourage you to apply Mica as the base layer of your app and add an additional content layer that sits on top of the base layer. The content layer should pick up the material behind it, Mica, using the `LayerFillColorDefaultBrush`, a low-opacity solid color, as its background. Our recommended content layer patterns are: - -* **Standard pattern**: A contiguous background for large areas that need a distinct hierarchical differentiation from the base layer. The `LayerFillColorDefaultBrush` should be applied to the container backgrounds of your WinUI app surfaces (e.g. Grids, StackPanels, Frames, etc.). -* **Card pattern**: Segmented cards for apps that are designed with multiple sectioned and discontinuous UI components. For the definition of the card UI using the `LayerFillColorDefaultBrush`, see [Layering and Elevation](../signature-experiences/layering.md) guidance. - -To give your app's window a seamless look, Mica should be visible in the title bar if you choose to apply the material to your app. You can show Mica in the title bar by extending your app into the non-client area and creating a transparent custom title bar. For more info, see [Title bar](../basics/titlebar-design.md). - -The following examples showcase common implementations of the layering strategy with [NavigationView](../controls/navigationview.md) where Mica is visible in the title bar area. - -* Standard pattern in Left NavigationView. -* Standard pattern in Top NavigationView. -* Card pattern in Left NavigationView. - -### Standard pattern in Left NavigationView - -By default, NavigationView in Left mode includes the content layer in its content area. This example extends Mica into the title bar area and creates a custom title bar. - -![Nav View in standard pattern with custom title bar in Left mode](images/materials/mica-light-theme.png) - -### Standard pattern in Top NavigationView - -By default, NavigationView in Top mode includes the content layer in its content area. This example extends Mica into the title bar area and creates a custom title bar. - -![NavigationView in standard pattern with custom title bar in Top mode](images/materials/mica-top.png) - -### Card pattern in Left NavigationView - -To follow the card pattern using a NavigationView you will need to remove the default content layer by overriding the background and border theme resources. Then, you can create the cards in the content area of the control. This example creates several cards, extends Mica into the title bar area, and creates a custom title bar. For more information on card UI, see [Layering and Elevation](../signature-experiences/layering.md) guidance. - -![NavigationView in standard pattern with custom title bar in Left mode](images/materials/mica-left-card.png) - -## App layering with Mica Alt - -Mica Alt is an alternative to Mica as a foundation layer in your app's hierarchy with the same features like inactive and active states and subtle personalization. We encourage you to apply Mica Alt as the base layer of your app when you need contrast between title bar elements and the commanding areas of your app (e.g. navigation, menus). - -A common scenario for using Mica Alt is when you are creating an application with a tabbed title bar. To follow the [Layering and Elevation](../signature-experiences/layering.md) guidance we encourage you to apply Mica Alt as the base layer of your app, add a commanding layer that sits on top of the base layer, and finally add an additional content layer that sits on top of the commanding layer. The commanding layer should pick up the material behind it, Mica Alt, using the `LayerOnMicaBaseAltFillColorDefaultBrush`, a low-opacity solid color, as its background. The content layer should pick up the layers below it, using the `LayerFillColorDefaultBrush`, another low-opacity solid color. The layer system is as follows: - -* **Mica Alt**: The base layer. -* **Commanding layer**: Requires distinct hierarchical differentiation from the base layer. The `LayerOnMicaBaseAltFillColorDefaultBrush` should be applied to the commanding areas of your WinUI app surfaces (e.g. MenuBar, navigation structure, etc.) -* **Content layer**: A contiguous background for large areas that need a distinct hierarchical differentiation from the commanding layer. The `LayerFillColorDefaultBrush` should be applied to the container backgrounds of your WinUI app surfaces (e.g. Grids, StackPanels, Frames, etc.). - -To give your app's window a seamless look, Mica Alt should be visible in the title bar if you choose to apply the material to your app. You can show Mica Alt in the title bar by extending your app into the non-client area and creating a transparent custom title bar. - -## Recommendations - -* **Do** set the background to _transparent_ for all layers where you want to see Mica so the Mica shows through. -* **Don't** apply backdrop material more than once in an application. -* **Don't** apply backdrop material to a UI element. The backdrop material will not appear on the element itself. It will only appear if all layers between the UI element and the window are set to transparent. - -## Examples - -> [!div class="nextstepaction"] -> [Open the WinUI 3 Gallery app and see Mica in action](winui3gallery://item/SystemBackdrops) - -[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)] - -## How to use Mica - -You can use Mica in UWP apps that use WinUI 2, or in apps that use Windows App SDK 1.1 or later. You can use Mica Alt in apps that use Windows App SDK 1.1 or later. - -### Use Mica with the Windows App SDK - -To use Mica in a WinUI 3 XAML app, see [Apply Mica or Acrylic materials in desktop apps for Windows 11](../../windows-app-sdk/system-backdrop-controller.md). - -To use Mica in a Win32 app, see [Apply Mica in Win32 desktop apps for Windows 11](../../desktop/modernize/ui/apply-mica-win32.md). - -### Use Mica with WinUI 2 for UWP - -To use Mica in a UWP app with WinUI 2, see [Apply Mica with WinUI 2 for UWP](/windows/uwp/ui-input/mica-uwp). - -## Related articles - -- [Materials](../signature-experiences/materials.md) -- [Layering and Elevation](../signature-experiences/layering.md) -- [Apply Mica or Acrylic materials in desktop apps for Windows 11](../../windows-app-sdk/system-backdrop-controller.md) -- [Apply Mica in Win32 desktop apps for Windows 11](../../desktop/modernize/ui/apply-mica-win32.md) -- [NavigationView](../controls/navigationview.md) diff --git a/hub/apps/design/style/rounded-corner.md b/hub/apps/design/style/rounded-corner.md deleted file mode 100644 index 3da80ae7f6..0000000000 --- a/hub/apps/design/style/rounded-corner.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: Corner radius -description: Learn about rounded corners principles, design approaches, and customization options. -ms.date: 10/08/2019 -ms.topic: how-to -keywords: windows 10, uwp, corner radius, rounded ---- - -# Corner radius - -Starting with version 2.2 of [WinUI](/windows/uwp/get-started/winui2/), the default style for many controls has been updated to use rounded corners. These new styles are intended to evoke warmth and trust, and make the UI easier for users to visually process. - -Here are two Button controls, the first without rounded corners and the second using a rounded corner style. - -![Buttons without and with rounded corners](images/rounded-corner/my-button.png) - -WinUI provides you with the updated styles for both WinUI and platform controls. See [Customization options](#customization-options), for details on how to customize rounded corners. - -> [!IMPORTANT] -> Some controls are available both in the platform ([Windows.UI.Xaml.Controls](/uwp/api/windows.ui.xaml.controls)) and in WinUI ([Microsoft.UI.Xaml.Controls](/uwp/api/microsoft.ui.xaml.controls?view=winui-2.2&preserve-view=true)); for example, **TreeView** or **ColorPicker**. When you use WinUI in your app, you should use the WinUI version of the control. Corner rounding might be applied inconsistently in the platform version when used with WinUI. - -> **Important APIs**: [Control.CornerRadius property](/uwp/api/windows.ui.xaml.controls.control.cornerradius) - -## Default control designs - -There are three areas of the controls where the rounded corner styles are used: rectangular elements, flyout elements, and bar elements. - -### Corners of rectangle UI elements - -- These UI elements include basic controls like buttons that users see on screen at all times. -- The default radius value we use for these UI elements is **4px**. - -![Button with rounded corners highlighted](images/rounded-corner/button.png) - -**Controls** - -- AutoSuggestBox -- Buttons - - ContentDialog buttons -- CalendarDatePicker -- CheckBox - - TreeView, GridView, and ListView multi-select check boxes -- Color picker -- CommandBar -- ComboBox -- DatePicker -- DropDownButton -- Expander -- FlipView -- GridView and ListView - - AutoSuggestBox, ComboBox, DatePicker, MenuBar, NavigationView, TimePicker, TreeView list -- InfoBar -- Inking controls -- Media playback -- MenuBar -- NumberBox -- PasswordBox -- RichEditBox -- SplitButton -- TextBox -- TimePicker -- ToggleButton -- ToggleSplitButton - -### Corners of flyout and overlay UI elements - -- These can be transient UI elements that appear on screen temporarily, like MenuFlyout, or elements that overlay other UI, like TabView tabs. -- The default radius value we use for these UI elements is **8px**. - -![Flyout example](images/rounded-corner/flyout.png) - -**Controls** - -- CommandBarFlyout -- ContentDialog -- Flyout -- MenuFlyout -- TabView tabs -- TeachingTip -- ToolTip (uses **4px** radius due to small size) -- Flyout part (when open) - - AutoSuggestBox - - CalendarDatePicker - - ComboBox - - DatePicker - - DropDownButton - - Inking control - - MenuBar - - NumberBox - - SplitButton - - TimePicker - - ToggleSplitButton - -### Bar elements - -- These UI elements are shaped like bars or lines; for example, ProgressBar. -- The default radius values we use here are **4px**. - -![Progress bar example](images/rounded-corner/bars.png) - -**Controls** - -- NavigationView selection indicator -- ProgressBar -- ScrollBar -- Slider - - ColorPicker color slider - - MediaTransportControls seek bar slider - -## Customization options - -The default corner radii values that we provide are not set in stone and there are a few ways you can easily modify the amount of rounding on the corners. This can be done through two global resources, or through the [CornerRadius](/uwp/api/windows.ui.xaml.controls.control.cornerradius) property directly on the control, depending on the level of customization granularity you want. - -### When not to round - -There are instances where the corner of a control should not be rounded, and we don't round these by default. - -- When multiple UI elements that are housed inside a container touch each other, such as the two parts of a SplitButton. There should be no space when they contact. - -![SplitButton](images/rounded-corner/split-button-2.png) - -- When a flyout UI element is connected to a UI that invokes the flyout on one side. - -![Screenshot of an AutoSuggest flyout where some corners aren't rounded.](images/rounded-corner/autosuggest.png) - -### Page or app-wide CornerRadius changes - -There are 2 app resources that control the corner radii of all the controls: - -- `ControlCornerRadius` - default is 4px. -- `OverlayCornerRadius` - default is 8px. - -If you override the value of these resources at any scope, it will affect all controls within that scope accordingly. - -This means if you want to change the roundness of all controls where roundness could be applied, you can define both resources at the app level with the new CornerRadius values like this: - -```xaml - - - - - - 0 - 0 - - - - - - - -``` - -Alternatively, if you want to change all controls' roundness within a particular scope, like at a page or container level, you can follow a similar pattern: - -```xaml - - - 8 - - -
    - - ``` - -### Define a XamlApplication class - -Next, revise the default **App** class in the **MyUWPApp** project to derive from the [Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/tree/master/Microsoft.Toolkit.Win32.UI.XamlApplication) class provided by the Windows Community Toolkit. This class supports the [IXamlMetadataProvider](/uwp/api/Windows.UI.Xaml.Markup.IXamlMetadataProvider) interface, which enables your app to discover and load metadata for custom WinRT XAML controls in assemblies in the current directory of your application at run time. This class also initializes the WinRT XAML framework for the current thread. Later in this walkthrough you'll update the desktop project to create an instance of this class. - - > [!NOTE] - > Each solution that uses XAML Islands can contain only one project that defines a `XamlApplication` object. All custom WinRT XAML controls in your app share the same `XamlApplication` object. - -1. In **Solution Explorer**, right-click the **MainPage.xaml** file in the **MyUWPApp** project. Click **Remove** and then **Delete** to delete this file permanently from the project. -2. In the **MyUWPApp** project, expand **App.xaml** file. -3. Replace the contents of the **App.xaml**, **App.cpp**, **App.h**, and **App.idl** files with the following code. - - * **App.xaml**: - - ```xml - - - ``` - - * **App.idl**: - - ```IDL - namespace MyUWPApp - { - [default_interface] - runtimeclass App : Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication - { - App(); - } - } - ``` - - * **App.h**: - - ```cpp - #pragma once - #include "App.g.h" - #include "App.base.h" - namespace winrt::MyUWPApp::implementation - { - class App : public AppT2 - { - public: - App(); - ~App(); - }; - } - namespace winrt::MyUWPApp::factory_implementation - { - class App : public AppT - { - }; - } - ``` - - * **App.cpp**: - - ```cpp - #include "pch.h" - #include "App.h" - #include "App.g.cpp" - using namespace winrt; - using namespace Windows::UI::Xaml; - namespace winrt::MyUWPApp::implementation - { - App::App() - { - Initialize(); - AddRef(); - m_inner.as<::IUnknown>()->Release(); - } - App::~App() - { - Close(); - } - } - ``` - - > [!NOTE] - > The `#include "App.g.cpp"` statement is necessary when the **Optimized** property on the **Common Properties** -> **C++/WinRT** page of the project properties is set to **Yes**. This is the default for new C++/WinRT projects. For more details about the effects of the **Optimized** property, see [this section](/windows/uwp/cpp-and-winrt-apis/author-apis#opt-in-to-uniform-construction-and-direct-implementation-access). - -4. Add a new header file to the **MyUWPApp** project named **app.base.h**. -5. Add the following code to the **app.base.h** file, save the file, and close it. - - ```cpp - #pragma once - namespace winrt::MyUWPApp::implementation - { - template - struct App_baseWithProvider : public App_base - { - using IXamlType = ::winrt::Windows::UI::Xaml::Markup::IXamlType; - IXamlType GetXamlType(::winrt::Windows::UI::Xaml::Interop::TypeName const& type) - { - return _appProvider.GetXamlType(type); - } - IXamlType GetXamlType(::winrt::hstring const& fullName) - { - return _appProvider.GetXamlType(fullName); - } - ::winrt::com_array<::winrt::Windows::UI::Xaml::Markup::XmlnsDefinition> GetXmlnsDefinitions() - { - return _appProvider.GetXmlnsDefinitions(); - } - private: - bool _contentLoaded{ false }; - winrt::MyUWPApp::XamlMetaDataProvider _appProvider; - }; - template - using AppT2 = App_baseWithProvider; - } - ``` - -6. Build the solution and confirm that it builds successfully. - -## Configure the desktop project to consume custom control types - -Before the **MyDesktopWin32App** app can host a custom WinRT XAML control in a XAML Island, it must be configured to consume custom control types from the **MyUWPApp** project. There are two ways to do this, and you can choose either option as you complete this walkthrough. - -### Option 1: Package the app using MSIX - -You can package the app in an [MSIX package](/windows/msix) for deployment. MSIX is the modern app packaging technology for Windows, and it is based on a combination of MSI, .appx, App-V and ClickOnce installation technologies. - -1. Add a new [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net) to your solution. As you create the project, name it **MyDesktopWin32Project** and select **Windows 10, version 1903 (10.0; Build 18362)** for both the **Target version** and **Minimum version**. - -2. In the packaging project, right-click the **Applications** node and choose **Add reference**. In the list of projects, select the check box next to the **MyDesktopWin32App** project and click **OK**. - ![Screenshot of the Reference Manager dialog for the packaging project with the current project selected as a reference.](../images/xaml-islands/xaml-island-cpp-6.png) - -3. For info about distributing/deploying the package, see [Manage your MSIX deployment](/windows/msix/desktop/managing-your-msix-deployment-overview). - -> [!NOTE] -> If you choose to not package your application in an [MSIX package](/windows/msix) for deployment, then computers that run your app must have the [Visual C++ Runtime](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) installed. - -### Option 2: Create an application manifest - -You can add an [application manifest](/windows/desktop/SbsCs/application-manifests) to your app. - -1. Right-click the **MyDesktopWin32App** project and select **Add** -> **New Item**. -2. In the **Add New Item** dialog, click **Web** in the left pane and select **XML File (.xml)**. -3. Name the new file **app.manifest** and click **Add**. -4. Replace the contents of the new file with the following XML. This XML registers custom control types in the **MyUWPApp** project. - - ```xml - - - - - - - - - ``` - -## Configure additional desktop project properties - -Next, update the **MyDesktopWin32App** project to define a macro for additional include directories and configure additional properties. - -1. In **Solution Explorer**, right-click the **MyDesktopWin32App** project and select **Unload Project**. - -2. Right-click **MyDesktopWin32App (Unloaded)** and select **Edit MyDesktopWin32App.vcxproj**. - -3. Add the following XML just before the closing `` tag at the end of the file. Then, save and close the file. - - ```xml - - - MyUWPApp - - - $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(AppProjectName)\;$(SolutionDir)\obj\$(Platform)\$(Configuration)\$(AppProjectName)\Generated Files\; - - - - - - ``` - -4. In **Solution Explorer**, right-click **MyDesktopWin32App (unloaded)** and select **Reload Project**. - -5. Right-click the **MyDesktopWin32App** project, select **Properties**, and expand **Manifest Tool** -> **Input and Output** in the left pane. Set the **DPI Awareness** property to **Per Monitor High DPI Aware**. If you do not set this property, you may encounter a manifest configuration error in certain high DPI scenarios. - - ![Screenshot of the Property page for the current project with Configuration Properties - Manifest Tool - Input and Output selected and DPI Awareness set to 'Per Monitor High DPI Aware'.](../images/xaml-islands/xaml-island-cpp-8.png) - -6. Click **OK** to close the **Property Pages** dialog. - -## Host the custom WinRT XAML control in the desktop project - -Finally, you're ready to add code to the **MyDesktopWin32App** project to host the custom WinRT XAML control you defined earlier in the **MyUWPApp** project. - -1. In the **MyDesktopWin32App** project, open the **framework.h** file and comment out the following line of code. Save the file when you're done. - - ```cpp - #define WIN32_LEAN_AND_MEAN - ``` - -2. Open the **MyDesktopWin32App.h** file and replace the contents of this file with the following code to reference necessary C++/WinRT header files. Save the file when you're done. - - ```cpp - #pragma once - - #include "resource.h" - #include - #include - #include - #include - #include - #include - #include - #include - - using namespace winrt; - using namespace Windows::UI; - using namespace Windows::UI::Composition; - using namespace Windows::UI::Xaml::Hosting; - using namespace Windows::Foundation::Numerics; - using namespace Windows::UI::Xaml::Controls; - ``` - -3. Open the **MyDesktopWin32App.cpp** file and add the following code to the `Global Variables:` section. - - ```cpp - winrt::MyUWPApp::App hostApp{ nullptr }; - winrt::Windows::UI::Xaml::Hosting::DesktopWindowXamlSource _desktopWindowXamlSource{ nullptr }; - winrt::MyUWPApp::MyUserControl _myUserControl{ nullptr }; - ``` - -4. In the same file, add the following code to the `Forward declarations of functions included in this code module:` section. - - ```cpp - void AdjustLayout(HWND); - ``` - -5. In the same file, add the following code immediately after the `TODO: Place code here.` comment in the `wWinMain` function. - - ```cpp - // TODO: Place code here. - winrt::init_apartment(winrt::apartment_type::single_threaded); - hostApp = winrt::MyUWPApp::App{}; - _desktopWindowXamlSource = winrt::Windows::UI::Xaml::Hosting::DesktopWindowXamlSource{}; - ``` - -6. In the same file, replace the default `InitInstance` function with the following code. - - ```cpp - BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) - { - hInst = hInstance; // Store instance handle in our global variable - - HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); - - if (!hWnd) - { - return FALSE; - } - - // Begin XAML Islands walkthrough code. - if (_desktopWindowXamlSource != nullptr) - { - auto interop = _desktopWindowXamlSource.as(); - check_hresult(interop->AttachToWindow(hWnd)); - HWND hWndXamlIsland = nullptr; - interop->get_WindowHandle(&hWndXamlIsland); - RECT windowRect; - ::GetWindowRect(hWnd, &windowRect); - ::SetWindowPos(hWndXamlIsland, NULL, 0, 0, windowRect.right - windowRect.left, windowRect.bottom - windowRect.top, SWP_SHOWWINDOW); - _myUserControl = winrt::MyUWPApp::MyUserControl(); - _desktopWindowXamlSource.Content(_myUserControl); - } - // End XAML Islands walkthrough code. - - ShowWindow(hWnd, nCmdShow); - UpdateWindow(hWnd); - - return TRUE; - } - ``` - -7. In the same file, add the following new function to the end of the file. - - ```cpp - void AdjustLayout(HWND hWnd) - { - if (_desktopWindowXamlSource != nullptr) - { - auto interop = _desktopWindowXamlSource.as(); - HWND xamlHostHwnd = NULL; - check_hresult(interop->get_WindowHandle(&xamlHostHwnd)); - RECT windowRect; - ::GetWindowRect(hWnd, &windowRect); - ::SetWindowPos(xamlHostHwnd, NULL, 0, 0, windowRect.right - windowRect.left, windowRect.bottom - windowRect.top, SWP_SHOWWINDOW); - } - } - ``` - -8. In the same file, locate the `WndProc` function. Replace the default `WM_DESTROY` handler in the switch statement with the following code. - - ```cpp - case WM_DESTROY: - PostQuitMessage(0); - if (_desktopWindowXamlSource != nullptr) - { - _desktopWindowXamlSource.Close(); - _desktopWindowXamlSource = nullptr; - } - break; - case WM_SIZE: - AdjustLayout(hWnd); - break; - ``` - -9. Save the file. -10. Build the solution and confirm that it builds successfully. - -## Add a control from the WinUI 2 library to the custom control - -Traditionally, WinRT XAML controls have been released as part of the Windows OS and made available to developers through the Windows SDK. The [WinUI library](/uwp/toolkits/winui/) is an alternative approach, where updated versions of WinRT XAML controls from the Windows SDK are distributed in a NuGet package that is not tied to Windows SDK releases. This library also includes new controls that aren't part of the Windows SDK and the default UWP platform. - -This section demonstrates how to add a WinRT XAML control from the WinUI 2 library to your user control. - -> [!NOTE] -> Currently, XAML Islands only supports hosting controls from the WinUI 2 library. Support for hosting controls from the WinUI 3 library is coming in a later release. - -1. In the **MyUWPApp** project, install the latest prerelease or release version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NuGet package. - - * If you chose to [package the MyDesktopWin32App project using MSIX](#option-1-package-the-app-using-msix) earlier in this walkthrough, you can install either the prerelease or release version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NugGet package. Packaged desktop apps can use either the prerelease or release version of this package. - * If you chose not to package the **MyDesktopWin32App** project, you must install the prerelease version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NuGet package. Unpackaged desktop apps must use the prerelease version of this package. - -2. In the pch.h file in this project, add the following `#include` statements and save your changes. These statements bring a required set of projection headers from the WinUI library into your project. This step is required for any C++/WinRT project that uses the WinUI library. For more information, see [this article](/uwp/toolkits/winui/getting-started#additional-steps-for-a-cwinrt-project). - - ```cpp - #include "winrt/Microsoft.UI.Xaml.Automation.Peers.h" - #include "winrt/Microsoft.UI.Xaml.Controls.Primitives.h" - #include "winrt/Microsoft.UI.Xaml.Media.h" - #include "winrt/Microsoft.UI.Xaml.XamlTypeInfo.h" - ``` - -3. In the App.xaml file in the same project, add the following child element to the `` element and save your changes. - - ```xml - - - - ``` - - After adding this element, the contents of this file should now look similar to this. - - ```xml - - - - - - ``` - -4. In the same project, open the MyUserControl.xaml file and add the following namespace declaration to the `` element. - - ```xml - xmlns:winui="using:Microsoft.UI.Xaml.Controls" - ``` - -5. In the same file, add a `` element as a child of the `` and save your changes. This element adds an instance of the [RatingControl](/uwp/api/microsoft.ui.xaml.controls.ratingcontrol) class from the WinUI library. After adding this element, the `` should now look similar to this. - - ```xml - - - - - - - ``` - -6. Build the solution and confirm that it builds successfully. - -## Test the app - -Run the solution and confirm that **MyDesktopWin32App** opens with the following window. - -![Screenshot of the MyDesktopWin32App app demonstrated in this topic.](../images/xaml-islands/xaml-island-cpp-9.png) - -## Next steps - -Many desktop applications that host XAML Islands will need to handle additional scenarios in order to provide a smooth user experience. For example, desktop applications may need to handle keyboard input in XAML Islands, focus navigation between XAML Islands and other UI elements, and layout changes. - -For more information about handling these scenarios and pointers to related code samples, see [Advanced scenarios for XAML Islands in C++ desktop apps](advanced-scenarios-xaml-islands-cpp.md). - -## Related topics - -* [Host WinRT XAML controls in desktop apps (XAML Islands)](xaml-islands.md) -* [Using the WinRT XAML hosting API in a desktop Win32 app](using-the-xaml-hosting-api.md) -* [Host a standard WinRT XAML control in a desktop Win32 app](host-standard-control-with-xaml-islands-cpp.md) -* [Advanced scenarios for XAML Islands in desktop Win32 apps](advanced-scenarios-xaml-islands-cpp.md) -* [XAML Islands code samples](https://github.com/microsoft/Xaml-Islands-Samples) diff --git a/hub/apps/desktop/modernize/xaml-islands/host-custom-control-with-xaml-islands.md b/hub/apps/desktop/modernize/xaml-islands/host-custom-control-with-xaml-islands.md deleted file mode 100644 index 118b0a6a89..0000000000 --- a/hub/apps/desktop/modernize/xaml-islands/host-custom-control-with-xaml-islands.md +++ /dev/null @@ -1,354 +0,0 @@ ---- -description: This article demonstrates how to host a custom WinRT XAML control in a WPF app by using XAML Islands. -title: Host a custom WinRT XAML control in a WPF app using XAML Islands -ms.date: 09/15/2021 -ms.topic: how-to -keywords: windows 10, uwp, windows forms, wpf, xaml islands, custom controls, user controls, host controls -ms.localizationpriority: medium -ms.custom: 19H1 ---- - -# Host a custom WinRT XAML control in a WPF app using XAML Islands - -> [!IMPORTANT] -> This topic uses or mentions types from the [CommunityToolkit/Microsoft.Toolkit.Win32](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32) GitHub repo. For important info about XAML Islands support, please see the [XAML Islands Notice](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32#xaml-islands-notice) in that repo. - -This article demonstrates how to use the [WindowsXamlHost](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control in the Windows Community Toolkit to host a custom WinRT XAML control in a WPF app that targets .NET Core 3.1. The custom control contains several first-party controls from the Windows SDK and binds a property in one of the WinRT XAML controls to a string in the WPF app. This article also demonstrates how to also host a control from the [WinUI library](/uwp/toolkits/winui/). - -Although this article demonstrates how to do this in a WPF app, the process is similar for a Windows Forms app. For an overview about hosting WinRT XAML controls in WPF and Windows Forms apps, see [this article](xaml-islands.md#wpf-and-windows-forms-applications). - -> [!NOTE] -> Using XAML Islands to host WinRT XAML controls in WPF and Windows Forms apps is currently supported only in apps that target .NET Core 3.x. XAML Islands are not yet supported in apps that target .NET, or in apps that any version of the .NET Framework. - -## Required components - -To host a custom WinRT XAML control in a WPF (or Windows Forms) app, you'll need the following components in your solution. This article provides instructions for creating each of these components. - -* **The project and source code for your app**. Using the [WindowsXamlHost](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control to host custom controls is supported only in apps that target .NET Core 3.x. - -* **The custom WinRT XAML control**. You'll need the source code for the custom control you want to host so you can compile it with your app. Typically, the custom control is defined in a UWP class library project that you reference in the same solution as your WPF or Windows Forms project. - -* **A UWP app project that defines a root Application class that derives from XamlApplication**. Your WPF or Windows Forms project must have access to an instance of the [Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/tree/master/Microsoft.Toolkit.Win32.UI.XamlApplication) class provided by the Windows Community Toolkit so that it can discover and load custom UWP XAML controls. The recommended way to do this is to define this object in a separate UWP app project that is part of the solution for your WPF or Windows Forms app. - - > [!NOTE] - > Your solution can contain only one project that defines a `XamlApplication` object. All custom WinRT XAML controls in your app share the same `XamlApplication` object. The project that defines the `XamlApplication` object must include references to all other WinRT libraries and projects that are used host to controls on the XAML Island. - -## Create a WPF project - -Before getting started, follow these instructions to create a WPF project and configure it to host XAML Islands. If you have an existing WPF project, you can adapt these steps and code examples for your project. - -> [!NOTE] -> If you have an existing project that targets the .NET Framework, you'll need to migrate your project to .NET Core 3.1. For more information, see [this blog series](https://devblogs.microsoft.com/dotnet/migrating-a-sample-wpf-app-to-net-core-3-part-1/). - -1. If you haven't done so already, install the latest version of the [.NET Core 3.1 SDK](https://dotnet.microsoft.com/download/dotnet/current). - -2. In Visual Studio 2019, create a new **WPF App (.NET Core)** project. - -3. Make sure [package references](/nuget/consume-packages/package-references-in-project-files) are enabled: - - 1. In Visual Studio, click **Tools -> NuGet Package Manager -> Package Manager Settings**. - 2. Make sure **PackageReference** is selected for **Default package management format**. - -4. Right-click your WPF project in **Solution Explorer** and choose **Manage NuGet Packages**. - -5. Select the **Browse** tab, search for the [Microsoft.Toolkit.Wpf.UI.XamlHost](https://www.nuget.org/packages/Microsoft.Toolkit.Wpf.UI.XamlHost) package and install the latest stable version. This package provides everything you need to use the **WindowsXamlHost** control to host a WinRT XAML control, including other related NuGet packages. - > [!NOTE] - > Windows Forms apps must use the [Microsoft.Toolkit.Forms.UI.XamlHost](https://www.nuget.org/packages/Microsoft.Toolkit.Forms.UI.XamlHost) package. - -6. Configure your solution to target a specific platform such as x86 or x64. Custom WinRT XAML controls are not supported in projects that target **Any CPU**. - - 1. In **Solution Explorer**, right-click the solution node and select **Properties** -> **Configuration Properties** -> **Configuration Manager**. - 2. Under **Active solution platform**, select **New**. - 3. In the **New Solution Platform** dialog, select **x64** or **x86** and press **OK**. - 4. Close the open dialog boxes. - -## Define a XamlApplication class in a UWP app project - -Next, add a UWP app project to your solution and revise the default `App` class in this project to derive from the [Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/tree/master/Microsoft.Toolkit.Win32.UI.XamlApplication) class provided by the Windows Community Toolkit. This class supports the [IXamlMetadataProvider](/uwp/api/Windows.UI.Xaml.Markup.IXamlMetadataProvider) interface, which enables your app to discover and load metadata for custom UWP XAML controls in assemblies in the current directory of your application at run time. This class also initializes the UWP XAML framework for the current thread. - -1. In **Solution Explorer**, right-click the solution node and select **Add** -> **New Project**. -2. Add a **Blank App (Universal Windows)** project to your solution. Make sure the target version and minimum version are both set to **Windows 10, version 1903 (Build 18362)** or a later release. -3. In the UWP app project, install the [Microsoft.Toolkit.Win32.UI.XamlApplication](https://www.nuget.org/packages/Microsoft.Toolkit.Win32.UI.XamlApplication) NuGet package (latest stable version). -4. Open the **App.xaml** file and replace the contents of this file with the following XAML. Replace `MyUWPApp` with the namespace of your UWP app project. - - ```xml - - - ``` - -5. Open the **App.xaml.cs** file and replace the contents of this file with the following code. Replace `MyUWPApp` with the namespace of your UWP app project. - - ```csharp - namespace MyUWPApp - { - public sealed partial class App : Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication - { - public App() - { - this.Initialize(); - } - } - } - ``` - -6. Delete the **MainPage.xaml** file from the UWP app project. -7. Clean the UWP app project and then build it. - -## Add a reference to the UWP project in your WPF project - -1. Specify the compatible framework version in the WPF project file. - - 1. In **Solution Explorer**, double-click the WPF project node to open the project file in the editor. - 2. In the first **PropertyGroup** element, add the following child element. Change the `19041` portion of the value as necessary to match the target and minimum OS build of the UWP project. - - ```xml - uap10.0.19041 - ``` - - When you're done, the **PropertyGroup** element should look similar to this. - - ```xml - - WinExe - netcoreapp3.1 - true - AnyCPU;x64 - uap10.0.19041 - - ``` - -2. In **Solution Explorer**, right-click the **Dependencies** node under the WPF project and add a reference to your UWP app project. - -## Instantiate the XamlApplication object in the entry point of your WPF app - -Next, add code to the entry point for your WPF app to create an instance of the `App` class you just defined in the UWP project (this is the class that now derives from `XamlApplication`). - -1. In your WPF project, right-click the project node, select **Add** -> **New Item**, and then select **Class**. Name the class **Program** and click **Add**. - -2. Replace the generated `Program` class with the following code and then save the file. Replace `MyUWPApp` with the namespace of your UWP app project, and replace `MyWPFApp` with the namespace of your WPF app project. - - ```csharp - public class Program - { - [System.STAThreadAttribute()] - public static void Main() - { - using (new MyUWPApp.App()) - { - MyWPFApp.App app = new MyWPFApp.App(); - app.InitializeComponent(); - app.Run(); - } - } - } - ``` - -3. Right-click the project node and choose **Properties**. - -4. On the **Application** tab of the properties, click the **Startup object** drop-down and choose the fully qualified name of the `Program` class you added in the previous step. - > [!NOTE] - > By default, WPF projects define a `Main` entry point function in a generated code file that isn't intended to be modified. This step changes the entry point for your project to the `Main` method of the new `Program` class, which enables you to add code that runs as early in the startup process of the app as possible. - -5. Save your changes to the project properties. - -## Create a custom WinRT XAML control - -To host a custom WinRT XAML control in your WPF app, you must have the source code for the control so you can compile it with your app. Typically custom controls are defined in a UWP class library project for easy portability. - -In this section, you will define a simple custom control in a new class library project. You can alternatively define the custom control in the UWP app project you created in the previous section. However, these steps do this in a separate class library project for illustrative purposes because this is typically how custom controls are implemented for portability. - -If you already have a custom control, you can use it instead of the control shown here. However, you'll still need to configure the project that contains the control as shown in these steps. - -1. In **Solution Explorer**, right-click the solution node and select **Add** -> **New Project**. -2. Add a **Class Library (Universal Windows)** project to your solution. Make sure the target version and minimum version are both set to the same target and minimum OS build as the UWP project. -3. Right-click the project file and select **Unload Project**. Right-click the project file again and select **Edit**. -4. Before the closing `` element, add the following XML to disable several properties and then save the project file. These properties must be enabled to host the custom control in a WPF (or Windows Forms) app. - - ```xml - - false - false - - ``` - -5. Right-click the project file and select **Reload Project**. -6. Delete the default **Class1.cs** file and add a new **User Control** item to the project. -7. In the XAML file for the user control, add the following `StackPanel` as a child of the default `Grid`. This example adds a ``TextBlock`` control and then binds the ``Text`` attribute of that control to the ``XamlIslandMessage`` field. - - ```xml - - This is a simple custom WinRT XAML control - - - - ``` - -8. In the code-behind file for the user control, add the `XamlIslandMessage` field to the user control class as shown below. - - ```csharp - public sealed partial class MyUserControl : UserControl - { - public string XamlIslandMessage { get; set; } - - public MyUserControl() - { - this.InitializeComponent(); - } - } - ``` - -9. Build the UWP class library project. -10. In your WPF project, right-click the **Dependencies** node and add a reference to the UWP class library project. -11. In the UWP app project you configured earlier, right-click the **References** node and add a reference to the UWP class library project. -12. Rebuild the entire solution and make sure all the projects build successfully. - -## Host the custom WinRT XAML control in your WPF app - -1. In **Solution Explorer**, expand the WPF project and open the MainWindow.xaml file or some other window in which you want to host the custom control. -2. In the XAML file, add the following namespace declaration to the `` element. - - ```xml - xmlns:xaml="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost" - ``` - -3. In the same file, add the following control to the `` element. Change the `InitialTypeName` attribute to the fully qualified name of the user control in your UWP class library project. - - ```xml - - ``` - -4. Open the code-behind file and add the following code to the `Window` class. This code defines a `ChildChanged` event handler that assigns the value of the ``XamlIslandMessage`` field of the UWP custom control to the value of the `WPFMessage` field in the WPF app. Change `UWPClassLibrary.MyUserControl` to the fully qualified name of the user control in your UWP class library project. - - ```csharp - private void WindowsXamlHost_ChildChanged(object sender, EventArgs e) - { - // Hook up x:Bind source. - global::Microsoft.Toolkit.Wpf.UI.XamlHost.WindowsXamlHost windowsXamlHost = - sender as global::Microsoft.Toolkit.Wpf.UI.XamlHost.WindowsXamlHost; - global::UWPClassLibrary.MyUserControl userControl = - windowsXamlHost.GetUwpInternalObject() as global::UWPClassLibrary.MyUserControl; - - if (userControl != null) - { - userControl.XamlIslandMessage = this.WPFMessage; - } - } - - public string WPFMessage - { - get - { - return "Binding from WPF to UWP XAML"; - } - } - ``` - -6. Build and run your app and confirm that the UWP user control displays as expected. - -## Add a control from the WinUI 2 library to the custom control - -Traditionally, WinRT XAML controls have been released as part of the Windows OS and made available to developers through the Windows SDK. The [WinUI library](/uwp/toolkits/winui/) is an alternative approach, where updated versions of WinRT XAML controls from the Windows SDK are distributed in a NuGet package that is not tied to Windows SDK releases. This library also includes new controls that aren't part of the Windows SDK and the default UWP platform. - -This section demonstrates how to add a WinRT XAML control from the WinUI 2 library to your user control. - -> [!NOTE] -> Currently, XAML Islands only supports hosting controls from the WinUI 2 library. Support for hosting controls from the WinUI 3 library is coming in a later release. - -1. In the UWP app project, install the latest release or prerelease version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NuGet package. - - > [!NOTE] - > If your desktop app is packaged in an [MSIX package](/windows/msix), you can use either a prerelease or release version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NugGet package. If your desktop app is not packaged using MSIX, you must install a prerelease version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NuGet package. - -2. In the App.xaml file in this project, add the following child element to the `` element. - - ```xml - - - - ``` - - After adding this element, the contents of this file should now look similar to this. - - ```xml - - - - - - ``` - -3. In the UWP class library project, install the latest version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NuGet package (the same version that you installed in the UWP app project). - -4. In the same project, open the XAML file for the user control and add the following namespace declaration to the `` element. - - ```xml - xmlns:winui="using:Microsoft.UI.Xaml.Controls" - ``` - -5. In the same file, add a `` element as a child of the ``. This element adds an instance of the [RatingControl](/uwp/api/microsoft.ui.xaml.controls.ratingcontrol) class from the WinUI library. After adding this element, the `` should now look similar to this. - - ```xml - - This is a simple custom WinRT XAML control - - - - - ``` - -6. Build and run your app and confirm that the new rating control displays as expected. - -## Package the app - -You can optionally package the WPF app in an [MSIX package](/windows/msix) for deployment. MSIX is the modern app packaging technology for Windows, and it is based on a combination of MSI, .appx, App-V, and ClickOnce installation technologies. - -The following instructions show you how to package the all the components in the solution in an MSIX package by using the [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net) in Visual Studio 2019. These steps are necessary only if you want to package the WPF app in an MSIX package. - -> [!NOTE] -> If you choose to not package your application in an [MSIX package](/windows/msix) for deployment, then computers that run your app must have the [Visual C++ Runtime](https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads) installed. - -1. Add a new [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net) to your solution. As you create the project, select the same **Target version** and **Minimum version** as you selected for the UWP project. - -2. In the packaging project, right-click the **Applications** node and choose **Add reference**. In the list of projects, select the WPF project in your solution and click **OK**. - - > [!NOTE] - > If you want to publish your app in the Microsoft Store, you have to add reference to the UWP project in the packaging project. - -3. Configure your solution to target a specific platform such as x86 or x64. This is required to build the WPF app into an MSIX package using the Windows Application Packaging Project. - - 1. In **Solution Explorer**, right-click the solution node and select **Properties** -> **Configuration Properties** -> **Configuration Manager**. - 2. Under **Active solution platform**, select **x64** or **x86**. - 3. In the row for your WPF project, in the **Platform** column select **New**. - 4. In the **New Solution Platform** dialog, select **x64** or **x86** (the same platform you selected for **Active solution platform**) and click **OK**. - 5. Close the open dialog boxes. - -4. Build and run the packaging project. Confirm that the WPF runs and the UWP custom control displays as expected. - -5. For info about distributing/deploying the package, see [Manage your MSIX deployment](/windows/msix/desktop/managing-your-msix-deployment-overview). - -## Resolve "Cannot find a Resource" error when hosting a WinUI control - -If you're hosting a custom control that contains a control from the WinUI library, you may encounter a problem where the control cannot be loaded in a packaged app and debugging the code shows the following error. - -![Failed to host WinUI library control](../images/xaml-islands/host-custom-control-error.png) - -To resolve this error, copy the **App.xbf** file from the build output folder of the WPF project to the **\AppX\\** build output folder of the packaging project. - -For example, if the WPF project is named **WPFXamlIslandsApp** and targets x86 platform, copy **App.xbf** from **\WPFXamlIslandsApp\bin\x86\Release\netcoreapp3.1** to **\WPFXamlIslandsApp.Pack\bin\x86\Release\AppX\WPFXamlIslandsAPP**. - - -## Related topics - -* [Host UWP XAML controls in desktop apps (XAML Islands)](xaml-islands.md) -* [XAML Islands code samples](https://github.com/microsoft/Xaml-Islands-Samples) -* [WindowsXamlHost](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) diff --git a/hub/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands-cpp.md b/hub/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands-cpp.md deleted file mode 100644 index 6f68bf5451..0000000000 --- a/hub/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands-cpp.md +++ /dev/null @@ -1,318 +0,0 @@ ---- -description: This article demonstrates how to host a standard WinRT XAML control in a C++ desktop (Win32) app by using the XAML Hosting API. -title: Host a standard WinRT XAML control in a C++ desktop (Win32) app using XAML Islands -ms.date: 10/02/2020 -ms.topic: how-to -keywords: windows 10, uwp, cpp, win32, xaml islands, wrapped controls, standard controls -ms.localizationpriority: medium -ms.custom: 19H1 ---- - -# Host a standard WinRT XAML control in a C++ desktop (Win32) app - -> [!IMPORTANT] -> This topic uses or mentions types from the [CommunityToolkit/Microsoft.Toolkit.Win32](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32) GitHub repo. For important info about XAML Islands support, please see the [XAML Islands Notice](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32#xaml-islands-notice) in that repo. - -This article demonstrates how to use the [WinRT XAML hosting API](using-the-xaml-hosting-api.md) to host a standard WinRT XAML control (that is, a control provided by the Windows SDK) in a new C++ desktop app. The code is based on the [simple XAML Island sample](https://github.com/microsoft/Xaml-Islands-Samples/tree/master/Standalone_Samples/CppWinRT_Basic_Win32App), and this section discusses some of the most important parts of the code. If you have an existing C++ desktop app project, you can adapt these steps and code examples for your project. - -> [!NOTE] -> The scenario demonstrated in this article doesn't support directly editing XAML markup for WinRT XAML controls hosted in your app. This scenario restricts you to modifying the appearance and behavior of hosted controls via code. For instructions that enable you to directly edit XAML markup when hosting WinRT XAML controls, see [Host a custom WinRT XAML control in a C++ desktop app](host-custom-control-with-xaml-islands-cpp.md). - -## Create a desktop application project - -1. In Visual Studio 2019 with the Windows 10, version 1903 SDK (build 10.0.18362) or a later release installed, create a new **Windows Desktop Application** project and name it **MyDesktopWin32App**. This project type is available under the **C++**, **Windows**, and **Desktop** project filters. - -2. In **Solution Explorer**, right-click the solution node, click **Retarget solution**, select the **10.0.18362.0** or a later SDK release, and then click **OK**. - -3. Install the [Microsoft.Windows.CppWinRT](https://www.nuget.org/packages/Microsoft.Windows.CppWinRT/) NuGet package to enable support for [C++/WinRT](/windows/uwp/cpp-and-winrt-apis) in your project: - - 1. Right-click your project in **Solution Explorer** and choose **Manage NuGet Packages**. - 2. Select the **Browse** tab, search for the [Microsoft.Windows.CppWinRT](https://www.nuget.org/packages/Microsoft.Windows.CppWinRT/) package, and install the latest version of this package. - - > [!NOTE] - > For new projects, you can alternatively install the [C++/WinRT Visual Studio Extension (VSIX)](https://marketplace.visualstudio.com/items?itemName=CppWinRTTeam.cppwinrt101804264) and use one of the C++/WinRT project templates included in that extension. For more details, see [Visual Studio support for C++/WinRT, and the VSIX](/windows/uwp/cpp-and-winrt-apis/intro-to-using-cpp-with-winrt#visual-studio-support-for-cwinrt-xaml-the-vsix-extension-and-the-nuget-package). - -4. On the **Browse** tab of the **NuGet Package Manager** window, search for the [Microsoft.Toolkit.Win32.UI.SDK](https://www.nuget.org/packages/Microsoft.Toolkit.Win32.UI.SDK) NuGet package and install the latest stable version of this package. This package provides several build and run time assets that enable XAML Islands to work in your app. - -5. Set the `maxversiontested` value in your [application manifest](/windows/desktop/SbsCs/application-manifests) to specify that your application is compatible with Windows 10, version 1903. - - 1. If you don't already have an application manifest in your project, add a new XML file to your project and name it **app.manifest**. - 2. In your application manifest, include the **compatibility** element and the child elements shown in the following example. Replace the **Id** attribute of the **maxversiontested** element with the version number of Windows you are targeting (this must be 10.0.18362.0 or a later release). Note that setting a higher value means older versions of Windows won't run the app properly because every Windows release only knows of versions before it. If you want the app to run on Windows 10, version 1903 (build 10.0.18362), you should either leave the 10.0.18362.0 value as is, or add multiple **maxversiontested** elements for the different values the app supports. - - ```xml - - - - - - - - - - - ``` - -6. Add a reference to the Windows Runtime metadata: - 1. In **Solution Explorer**, right-click on your project **References** node and select **Add Reference**. - 2. Click the **Browse** button at the bottom of the page and navigate to the UnionMetadata folder in your SDK install path. By default the SDK will be installed to `C:\Program Files (x86)\Windows Kits\10\UnionMetadata`. - 3. Then, select the folder named after the Windows version you are targeting (e.g. 10.0.18362.0) and inside of that folder pick the `Windows.winmd` file. - 4. Click **OK** to close the **Add Reference** dialog. - -## Use the XAML hosting API to host a WinRT XAML control - -The basic process of using the XAML hosting API to host a WinRT XAML control follows these general steps: - -1. Initialize the WinRT XAML framework for the current thread before your app creates any of the [Windows.UI.Xaml.UIElement](/uwp/api/windows.ui.xaml.uielement) objects that it will host. There are several ways to do this, depending on when you plan to create the [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) object that will host the controls. - - * If your application creates the **DesktopWindowXamlSource** object before it creates any of the **Windows.UI.Xaml.UIElement** objects that it will host, this framework will be initialized for you when you instantiate the **DesktopWindowXamlSource** object. In this scenario, you don't need to add any code of your own to initialize the framework. - - * However, if your application creates the **Windows.UI.Xaml.UIElement** objects before it creates the **DesktopWindowXamlSource** object that will host them, your application must call the static [WindowsXamlManager.InitializeForCurrentThread](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager.initializeforcurrentthread) method to explicitly initialize the WinRT XAML framework before the **Windows.UI.Xaml.UIElement** objects are instantiated. Your application should typically call this method when the parent UI element that hosts the **DesktopWindowXamlSource** is instantiated. - - > [!NOTE] - > This method returns a [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) object that contains a reference to the WinRT XAML framework. You can create as many **WindowsXamlManager** objects as you want on a given thread. However, because each object holds a reference to the WinRT XAML framework, you should dispose the objects to ensure that XAML resources are eventually released. - -2. Create a [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) object and attach it to a parent UI element in your application that is associated with a window handle. - - To do this, you'll need to follow these steps: - - 1. Create a **DesktopWindowXamlSource** object and cast it to the [IDesktopWindowXamlSourceNative](/windows/win32/api/windows.ui.xaml.hosting.desktopwindowxamlsource/nn-windows-ui-xaml-hosting-desktopwindowxamlsource-idesktopwindowxamlsourcenative) or [IDesktopWindowXamlSourceNative2](/windows/win32/api/windows.ui.xaml.hosting.desktopwindowxamlsource/nn-windows-ui-xaml-hosting-desktopwindowxamlsource-idesktopwindowxamlsourcenative2) COM interface. - - 2. Call the [AttachToWindow](/windows/win32/api/windows.ui.xaml.hosting.desktopwindowxamlsource/nf-windows-ui-xaml-hosting-desktopwindowxamlsource-idesktopwindowxamlsourcenative-attachtowindow) method of the **IDesktopWindowXamlSourceNative** or **IDesktopWindowXamlSourceNative2** interface, and pass in the window handle of the parent UI element in your application. - - > [!IMPORTANT] - > Make sure that your code calls the **AttachToWindow** method only once per [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) object. Calling this method more than once for a **DesktopWindowXamlSource** object could result in a memory leak. - - 3. Set the initial size of the internal child window contained in the **DesktopWindowXamlSource**. By default, this internal child window is set to a width and height of 0. If you don't set the size of the window, any WinRT XAML controls you add to the **DesktopWindowXamlSource** will not be visible. To access the internal child window in the **DesktopWindowXamlSource**, use the **WindowHandle** property of the **IDesktopWindowXamlSourceNative** or **IDesktopWindowXamlSourceNative2** interface. - -3. Finally, assign the **Windows.UI.Xaml.UIElement** you want to host to the [Content](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource.content) property of your **DesktopWindowXamlSource** object. - -The following steps and code examples demonstrate how to do implement the above process: - -1. In the **Source Files** folder of the project, open the default **MyDesktopWin32App.cpp** file. Delete the entire contents of the file and add the following `include` and `using` statements. In addition to standard C++ and UWP headers and namespaces, these statements include several items specific to XAML Islands. - - ```cppwinrt - #include - #include - #include - - #include - #include - #include - #include - #include - #include - - using namespace winrt; - using namespace Windows::UI; - using namespace Windows::UI::Composition; - using namespace Windows::UI::Xaml::Hosting; - using namespace Windows::Foundation::Numerics; - ``` - -3. Copy the following code after the previous section. This code defines the **WinMain** function for the app. This function initializes a basic window and uses the XAML hosting API to host a simple UWP **TextBlock** control in the window. - - ```cppwinrt - LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM); - - HWND _hWnd; - HWND _childhWnd; - HINSTANCE _hInstance; - - int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) - { - _hInstance = hInstance; - - // The main window class name. - const wchar_t szWindowClass[] = L"Win32DesktopApp"; - WNDCLASSEX windowClass = { }; - - windowClass.cbSize = sizeof(WNDCLASSEX); - windowClass.lpfnWndProc = WindowProc; - windowClass.hInstance = hInstance; - windowClass.lpszClassName = szWindowClass; - windowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); - - windowClass.hIconSm = LoadIcon(windowClass.hInstance, IDI_APPLICATION); - - if (RegisterClassEx(&windowClass) == NULL) - { - MessageBox(NULL, L"Windows registration failed!", L"Error", NULL); - return 0; - } - - _hWnd = CreateWindow( - szWindowClass, - L"Windows c++ Win32 Desktop App", - WS_OVERLAPPEDWINDOW | WS_VISIBLE, - CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, - NULL, - NULL, - hInstance, - NULL - ); - if (_hWnd == NULL) - { - MessageBox(NULL, L"Call to CreateWindow failed!", L"Error", NULL); - return 0; - } - - - // Begin XAML Island section. - - // The call to winrt::init_apartment initializes COM; by default, in a multithreaded apartment. - winrt::init_apartment(apartment_type::single_threaded); - - // Initialize the XAML framework's core window for the current thread. - WindowsXamlManager winxamlmanager = WindowsXamlManager::InitializeForCurrentThread(); - - // This DesktopWindowXamlSource is the object that enables a non-UWP desktop application - // to host WinRT XAML controls in any UI element that is associated with a window handle (HWND). - DesktopWindowXamlSource desktopSource; - - // Get handle to the core window. - auto interop = desktopSource.as(); - - // Parent the DesktopWindowXamlSource object to the current window. - check_hresult(interop->AttachToWindow(_hWnd)); - - // This HWND will be the window handler for the XAML Island: A child window that contains XAML. - HWND hWndXamlIsland = nullptr; - - // Get the new child window's HWND. - interop->get_WindowHandle(&hWndXamlIsland); - - // Update the XAML Island window size because initially it is 0,0. - SetWindowPos(hWndXamlIsland, 0, 200, 100, 800, 200, SWP_SHOWWINDOW); - - // Create the XAML content. - Windows::UI::Xaml::Controls::StackPanel xamlContainer; - xamlContainer.Background(Windows::UI::Xaml::Media::SolidColorBrush{ Windows::UI::Colors::LightGray() }); - - Windows::UI::Xaml::Controls::TextBlock tb; - tb.Text(L"Hello World from Xaml Islands!"); - tb.VerticalAlignment(Windows::UI::Xaml::VerticalAlignment::Center); - tb.HorizontalAlignment(Windows::UI::Xaml::HorizontalAlignment::Center); - tb.FontSize(48); - - xamlContainer.Children().Append(tb); - xamlContainer.UpdateLayout(); - desktopSource.Content(xamlContainer); - - // End XAML Island section. - - ShowWindow(_hWnd, nCmdShow); - UpdateWindow(_hWnd); - - //Message loop: - MSG msg = { }; - while (GetMessage(&msg, NULL, 0, 0)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - return 0; - } - ``` - -4. Copy the following code after the previous section. This code defines the [window procedure](/windows/win32/learnwin32/writing-the-window-procedure) for the window. - - ```cppwinrt - LRESULT CALLBACK WindowProc(HWND hWnd, UINT messageCode, WPARAM wParam, LPARAM lParam) - { - PAINTSTRUCT ps; - HDC hdc; - wchar_t greeting[] = L"Hello World in Win32!"; - RECT rcClient; - - switch (messageCode) - { - case WM_PAINT: - if (hWnd == _hWnd) - { - hdc = BeginPaint(hWnd, &ps); - TextOut(hdc, 300, 5, greeting, wcslen(greeting)); - EndPaint(hWnd, &ps); - } - break; - case WM_DESTROY: - PostQuitMessage(0); - break; - - // Create main window - case WM_CREATE: - _childhWnd = CreateWindowEx(0, L"ChildWClass", NULL, WS_CHILD | WS_BORDER, 0, 0, 0, 0, hWnd, NULL, _hInstance, NULL); - return 0; - - // Main window changed size - case WM_SIZE: - // Get the dimensions of the main window's client - // area, and enumerate the child windows. Pass the - // dimensions to the child windows during enumeration. - GetClientRect(hWnd, &rcClient); - MoveWindow(_childhWnd, 200, 200, 400, 500, TRUE); - ShowWindow(_childhWnd, SW_SHOW); - - return 0; - - // Process other messages. - - default: - return DefWindowProc(hWnd, messageCode, wParam, lParam); - break; - } - - return 0; - } - ``` - -5. Save the code file, and build and run the app. Confirm that you see the UWP **TextBlock** control in the app window. - > [!NOTE] - > You may see the several build warnings, including `warning C4002: too many arguments for function-like macro invocation 'GetCurrentTime'` and `manifest authoring warning 81010002: Unrecognized Element "maxversiontested" in namespace "urn:schemas-microsoft-com:compatibility.v1"`. These warnings are known issues with the current tools and NuGet packages, and they can be ignored. - -For complete examples that demonstrate using the XAML hosting API to host a WinRT XAML control, see the following code files: - -* **C++ desktop (Win32):** See the [XamlBridge.cpp](https://github.com/microsoft/Xaml-Islands-Samples/blob/master/Standalone_Samples/Contoso/App/XamlBridge.cpp) file in the [XAML Islands code samples repo](https://github.com/microsoft/Xaml-Islands-Samples). -* **WPF:** See the [WindowsXamlHostBase.cs](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/blob/master/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs) and [WindowsXamlHost.cs](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/blob/master/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHost.cs) files in the Windows Community Toolkit. -* **Windows Forms:** See the [WindowsXamlHostBase.cs](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/blob/master/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs) and [WindowsXamlHost.cs](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/blob/master/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHost.cs) files in the Windows Community Toolkit. - -## Package the app - -You can optionally package the app in an [MSIX package](/windows/msix) for deployment. MSIX is the modern app packaging technology for Windows, and it is based on a combination of MSI, .appx, App-V and ClickOnce installation technologies. - -The following instructions show you how to package the all the components in the solution in an MSIX package by using the [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net) in Visual Studio 2019. These steps are necessary only if you want to package the app in an MSIX package. - -> [!NOTE] -> If you choose to not package your application in an [MSIX package](/windows/msix) for deployment, then computers that run your app must have the [Visual C++ Runtime](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) installed. - -1. Add a new [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net) to your solution. As you create the project, select **Windows 10, version 1903 (10.0; Build 18362)** for both the **Target version** and **Minimum version**. - -2. In the packaging project, right-click the **Applications** node and choose **Add reference**. In the list of projects, select the C++ desktop application project in your solution and click **OK**. - -3. Build and run the packaging project. Confirm that the app runs and displays the WinRT XAML controls as expected. - -4. For info about distributing/deploying the package, see [Manage your MSIX deployment](/windows/msix/desktop/managing-your-msix-deployment-overview). - -## Next steps - -The code examples in this article get you started with the basic scenario of hosting a standard WinRT XAML control in a C++ desktop app. The following sections introduce additional scenarios that your application may need to support. - -### Host a custom WinRT XAML control - -For many scenarios, you may need to host a custom WinRT XAML control that contains several individual controls that work together. The process for hosting a custom control (either a control you define yourself or a control provided by a 3rd party) in a C++ desktop app is more complex than hosting a standard control, and requires additional code. - -For a complete walkthrough, see [Host a custom WinRT XAML control in a C++ desktop app using the XAML Hosting API](host-custom-control-with-xaml-islands-cpp.md). - -### Advanced scenarios - -Many desktop applications that host XAML Islands will need to handle additional scenarios in order to provide a smooth user experience. For example, desktop applications may need to handle keyboard input in XAML Islands, focus navigation between XAML Islands and other UI elements, and layout changes. - -For more information about handling these scenarios and pointers to related code samples, see [Advanced scenarios for XAML Islands in C++ desktop apps](advanced-scenarios-xaml-islands-cpp.md). - -## Related topics - -* [Host WinRT XAML controls in desktop apps (XAML Islands)](xaml-islands.md) -* [Using the WinRT XAML hosting API in a C++ desktop app](using-the-xaml-hosting-api.md) -* [Host a custom WinRT XAML control in a C++ desktop app](host-custom-control-with-xaml-islands-cpp.md) -* [Advanced scenarios for XAML Islands in C++ desktop apps](advanced-scenarios-xaml-islands-cpp.md) -* [XAML Islands code samples](https://github.com/microsoft/Xaml-Islands-Samples) diff --git a/hub/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands.md b/hub/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands.md deleted file mode 100644 index 4ef3fa5092..0000000000 --- a/hub/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands.md +++ /dev/null @@ -1,323 +0,0 @@ ---- -title: Use XAML Islands to host a UWP XAML control in a C# WPF app -description: This topic demonstrates two ways to use XAML Islands to host a Universal Windows Platform (UWP) XAML control (that is, a first-party control provided by the Windows SDK) in a Windows Presentation Foundation (WPF) app that targets .NET Core 3.1. -ms.date: 02/24/2022 -ms.topic: how-to -keywords: windows 11, windows 10, uwp, wpf, windows forms, xaml islands, wrapped controls, standard controls, InkCanvas, InkToolbar -ms.localizationpriority: medium ---- - -# Use XAML Islands to host a UWP XAML control in a C# WPF app - -> [!IMPORTANT] -> This topic uses or mentions types from the [CommunityToolkit/Microsoft.Toolkit.Win32](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32) GitHub repo. For important info about XAML Islands support, please see the [XAML Islands Notice](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32#xaml-islands-notice) in that repo. - -This topic shows how to build a C# Windows Presentation Foundation (WPF) app (targeting .NET Core 3.1) that uses [XAML Islands](xaml-islands.md) to host a Universal Windows Platform (UWP) XAML control (that is, a first-party control provided by the Windows SDK). We show how to do that in two ways: - -* We show how to host UWP [**InkCanvas**](/uwp/api/Windows.UI.Xaml.Controls.InkCanvas) and [**InkToolbar**](/uwp/api/windows.ui.xaml.controls.inktoolbar) controls by using [wrapped controls](xaml-islands.md#wrapped-controls) (available in the Windows Community Toolkit). Wrapped controls wrap the interface and functionality of a small set of useful UWP XAML controls. You can add a wrapped control directly to the design surface of your WPF or Windows Forms project, and then use it in the designer like any other WPF or Windows Forms control. - -* We also show how to host a UWP [**CalendarView**](/uwp/api/Windows.UI.Xaml.Controls.CalendarView) control by using the [**WindowsXamlHost**](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control (available in the Windows Community Toolkit). Because only a small set of UWP XAML controls are available as wrapped controls, you can use **WindowsXamlHost** to host any UWP XAML control. - -The process for hosting a UWP XAML control in a WPF app is similar for a Windows Forms app. - -> [!IMPORTANT] -> Using XAML Islands (wrapped controls or [**WindowsXamlHost**](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost)) to host UWP XAML controls is supported only in apps that target .NET Core 3.x. XAML Islands are not supported in apps that target .NET, or in apps that target any version of the .NET Framework. - -## Recommended components - -To host a UWP XAML control in a WPF or Windows Forms app, we recommend that you have the following components in your solution. This topic provides instructions for creating each of these components: - -* **The project and source code for your WPF or Windows Forms app**. - -* **A UWP project that defines a root Application class that derives from XamlApplication**. The [**Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication**](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/tree/master/Microsoft.Toolkit.Win32.UI.XamlApplication) class is available in the Windows Community Toolkit). We recommended that you define your **XamlApplication**-derived **Application** class a separate UWP app project that's part of your WPF or Windows Forms Visual Studio solution. - - > [!NOTE] - > Making a **XamlApplication**-derived object available to your WPF or Windows Forms project isn't actually required in order to host a first-party UWP XAML control. But it *is* necessary in order to discover, load, and host custom UWP XAML controls. So—to support the full range of XAML Island scenarios—we recommend that you always define a **XamlApplication**-derived object in any solution in which you use XAML Islands. - - > [!NOTE] - > Your solution can contain only one project that defines a **XamlApplication**-derived object. That one project must reference any other libraries and projects that host UWP XAML controls via XAML Islands. - -## Create a WPF project - -You can follow these instructions to create a new WPF project, and configure it to host XAML Islands. If you have an existing WPF project, then you can adapt these steps and code examples for your project. - -1. If you haven't done so already, then install the latest version of [.NET Core 3.1](https://dotnet.microsoft.com/download/dotnet/3.1). - -1. In Visual Studio, create a new C# project from the **WPF Application** project template. Set the **Project name** to *MyWPFApp* so that you won't need to edit any of the steps or source code in this topic. Set the **Framework** to *.NET Core 3.1**, and click **Create**. - -> [!IMPORTANT] -> Be sure not to use the **WPF App (.NET Framework)** project template. - -## Configure your WPF project - -1. These steps enable [package references](/nuget/consume-packages/package-references-in-project-files): - - 1. In Visual Studio, click **Tools** > **NuGet Package Manager** > **Package Manager Settings**. - 1. On the right, find the **Package Management** > **Default package management format** setting, and set it to **PackageReference**. - -1. Use these steps to install the [**Microsoft.Toolkit.Wpf.UI.Controls**](https://www.nuget.org/packages/Microsoft.Toolkit.Wpf.UI.Controls) NuGet Package: - - 1. Right-click the *MyWPFApp* project node in **Solution Explorer**, and choose **Manage NuGet Packages...**. - - 1. On the **Browse** tab, type or paste *Microsoft.Toolkit.Wpf.UI.Controls* into the search box. Select the latest stable version, and click **Install**. That package provides everything you need to use the wrapped UWP XAML controls for WPF (including [**InkCanvas**](/windows/communitytoolkit/controls/wpf-winforms/inkcanvas), [**InkToolbar**](/windows/communitytoolkit/controls/wpf-winforms/inktoolbar), and the [**WindowsXamlHost**](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control). - - > [!NOTE] - > For a Windows Forms app, reference the [**Microsoft.Toolkit.Forms.UI.Controls**](https://www.nuget.org/packages/Microsoft.Toolkit.Forms.UI.Controls) package instead. - -1. Most XAML Islands scenarios aren't supported in projects that target **Any CPU**. So to target a specific architecture (such as **x86** or **x64**), do the following: - - 1. Right-click the solution node (*not* the project node) in **Solution Explorer**, and choose **Properties**. - 1. Select **Configuration Properties** on the left. - 1. Click the **Configuration Manager...** button. - 1. Under **Active solution platform**, select **New**. - 1. In the **New Solution Platform** dialog, select **x64** or **x86**, and press **OK**. - 1. Close the open dialog boxes. - -## Define a XamlApplication class in a new UWP project - -In this section we'll be adding a UWP project to the solution, and revising the default **App** class in that project to derive from the [**Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication**](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/tree/master/Microsoft.Toolkit.Win32.UI.XamlApplication) class provided by the Windows Community Toolkit. That class supports the [**IXamlMetadataProvider**](/uwp/api/Windows.UI.Xaml.Markup.IXamlMetadataProvider) interface, which enables your app to discover and load metadata for custom UWP XAML controls in assemblies in the current directory of your application at run time. That class also initializes the UWP XAML framework for the current thread. - -1. In **Solution Explorer**, right-click the solution node, and select **Add** > **New Project...**. - -1. Select the C# **Blank App (Universal Windows)** project template. Set the **Project name** to *MyUWPApp* so that you won't need to edit any of the steps or source code in this topic. Set the **Target version** and **Minimum version** to either **Windows 10, version 1903 (Build 18362)** or later. - - > [!NOTE] - > Be sure not to create *MyUWPApp* in a subfolder of *MyWPFApp*. If you do that, then *MyWPFApp* will try to build the UWP XAML markup as if it were WPF XAML. - -1. In *MyUWPApp*, install the [**Microsoft.Toolkit.Win32.UI.XamlApplication**](https://www.nuget.org/packages/Microsoft.Toolkit.Win32.UI.XamlApplication) NuGet package (latest stable version). The process for installng a NuGet package was described in the previous section. - -1. In *MyUWPApp*, open the `App.xaml` file, and replace its contents with the following XAML: - - ```xml - - - ``` - -1. Similarly, open `App.xaml.cs`, and replace its contents with the following code: - - ```csharp - namespace MyUWPApp - { - public sealed partial class App : Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication - { - public App() - { - this.Initialize(); - } - } - } - ``` - -1. Delete the `MainPage.xaml` and `MainPage.xaml.cs` files. -1. Build the *MyUWPApp* project. - -## In MyWPFApp, add a reference to the MyUWPApp project - -1. Specify the compatible framework version in *MyWPFApp*'s project file like this: - - 1. In **Solution Explorer**, click the *MyWPFApp* project node to open the project file in the editor. - 1. Inside the first **PropertyGroup** element, add the following child element. Change the `19041` portion of the value as necessary to match the target and minimum OS build of the *MyWPFApp* project. - - ```xml - uap10.0.19041 - ``` - -1. In **Solution Explorer**, right-click *MyWPFApp* > **Dependencies**, choose **Add Project Reference...**, and add a reference to the *MyUWPApp* project. - -## Instantiate the XamlApplication object in the entry point of MyWPFApp - -Next, add code to the entry point of *MyWPFApp* to create an instance of the **App** class that you just defined in *MyUWPApp* (the class that derives from **XamlApplication**). - -1. Right-click the *MyWPFApp* project node, select **Add** > **New Item...**, and then select **Class**. Set **Name** to *Program.cs*, and click **Add**. - -1. Replace the contents of `Program.cs` with the following XAML (and then save the file and build the *MyWPFApp* project): - - ```csharp - namespace MyWPFApp - { - public class Program - { - [System.STAThreadAttribute()] - public static void Main() - { - using (new MyUWPApp.App()) - { - var app = new MyWPFApp.App(); - app.InitializeComponent(); - app.Run(); - } - } - } - } - ``` - -1. Right-click the *MyWPFApp* project node, and choose **Properties**. - -1. In **Application** > **General**, click the **Startup object** drop-down, and choose *MyWPFApp.Program* (which is the fully-qualified name of the **Program** class that you just added). If you don't see it, then try closing and reopening Visual Studio. - - > [!NOTE] - > By default, a WPF project defines a **Main** entry point function in a generated code file that isn't intended to be modified. The step above changes the entry point for your project to the **Main** method of the new **Program** class, which enables you to add code that runs as early in the startup process of the app as possible. - -1. Save your changes to the project properties. - -## Use wrapped controls to host an InkCanvas and InkToolbar - -Now that you've configured your project to use UWP XAML Islands, you're ready to add the [**InkCanvas**](/windows/communitytoolkit/controls/wpf-winforms/inkcanvas) and [**InkToolbar**](/windows/communitytoolkit/controls/wpf-winforms/inktoolbar) wrapped UWP XAML controls to the app. - -1. In *MyWPFApp*, open the `MainWindow.xaml` file. - -1. In the **Window** element near the top of the XAML file, add the following attribute. This attribute references the XAML namespace for the **InkCanvas** and **InkToolbar** wrapped UWP XAML controls, and maps it to the **controls** XML namespace. - - ```xml - xmlns:controls="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls" - ``` - -1. Still in `MainWindow.xaml`, edit the existing **Grid** element so that it looks like the XAML below. This XAML adds to the **Grid** an [**InkCanvas**](/windows/communitytoolkit/controls/wpf-winforms/inkcanvas) and an [**InkToolbar**](/windows/communitytoolkit/controls/wpf-winforms/inktoolbar) control (prefixed by the **controls** XML namespace that you defined in the previous step). - - ```xml - - - - - - - - - ``` - - > [!NOTE] - > You can also add these and other wrapped controls to the **Window** by dragging them to the designer from the **Windows Community Toolkit** section of the **Toolbox**. - -1. Save `MainWindow.xaml`. - - If you have a device that supports a digital pen (such as a Surface), and you're following along on a physical machine, then you could now build and run the app, and draw digital ink on the screen with the pen. But if you try to write with your mouse, then nothing will happen, because by default **InkCanvas** is enabled only for digital pens. Here's how to enable **InkCanvas** for the mouse. - -1. Still in *MyWPFApp*, open `MainWindow.xaml.cs`. - -1. Add the following namespace directive to the top of the file: - - ```csharp - using Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT; - ``` - -1. Locate the **MainWindow** constructor. Immediately after the call to **InitializeComponent**, add the following line of code: - - ```csharp - myInkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen; - ``` - - You can use the **InkPresenter** object to customize the default inking experience. The code above uses the **InputDeviceTypes** property to enable mouse as well as pen input. - -1. Save, build, and run. If you're using a computer with a mouse, then confirm that you can draw something in the ink canvas space with the mouse. - -## Host a CalendarView by using the host control - -In this section, we'll use the [**WindowsXamlHost**](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control to add a [**CalendarView**](/uwp/api/Windows.UI.Xaml.Controls.CalendarView) to the app. - -> [!NOTE] -> The [**WindowsXamlHost**](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control is provided by the [**Microsoft.Toolkit.Wpf.UI.XamlHost**](https://www.nuget.org/packages/Microsoft.Toolkit.Wpf.UI.XamlHost) package. That package is included with the [**Microsoft.Toolkit.Wpf.UI.Controls**](https://www.nuget.org/packages/Microsoft.Toolkit.Wpf.UI.Controls) package that you installed earlier. - -1. In **Solution Explorer**, in *MyWPFApp*, open the `MainWindow.xaml` file. - -1. In the **Window** element near the top of the XAML file, add the following attribute. This attribute references the XAML namespace for the **WindowsXamlHost** control, and maps it to the **xamlhost** XML namespace. - - ```xml - xmlns:xamlhost="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost" - ``` - -1. Still in `MainWindow.xaml`, edit the existing **Grid** element so that it looks like the XAML below. This XAML adds to the **Grid** a [**WindowsXamlHost**](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control (prefixed by the **xamlhost** XML namespace that you defined in the previous step). To host a UWP [**CalendarView**](/uwp/api/Windows.UI.Xaml.Controls.CalendarView) control, this XAML sets the **InitialTypeName** property to the fully-qualified name of the control. The XAML also defines an event handler for the **ChildChanged** event, which is raised when the hosted control has been rendered. - - ```xml - - - - ``` - -1. Save `MainWindow.xaml`, and open `MainWindow.xaml.cs`. - -1. Delete this line of code, which we added in the previous section: `myInkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen;`. - -1. Add the following namespace directive to the top of the file: - - ```csharp - using Microsoft.Toolkit.Wpf.UI.XamlHost; - ``` - -1. Add the following **ChildChanged** event handler method to the **MainWindow** class. When the host control has been rendered, this event handler runs and creates a simple event handler for the **SelectedDatesChanged** event of the calendar control. - - ```csharp - private void MyCalendar_ChildChanged(object sender, EventArgs e) - { - WindowsXamlHost windowsXamlHost = (WindowsXamlHost)sender; - - var calendarView = - (Windows.UI.Xaml.Controls.CalendarView)windowsXamlHost.Child; - - if (calendarView != null) - { - calendarView.SelectedDatesChanged += (obj, args) => - { - if (args.AddedDates.Count > 0) - { - MessageBox.Show("The user selected a new date: " + - args.AddedDates[0].DateTime.ToString()); - } - }; - } - } - ``` - -1. Save, build, and run. Confirm that the calendar control is shown in the window, and that a message box is displayed when you select a date. - -## Package the app - -You can optionally package your WPF app in an [MSIX package](/windows/msix) for deployment. MSIX is the modern and reliable app packaging technology for Windows. - -The following instructions show you how to package all the components in the solution into an MSIX package by using the **Windows Application Packaging Project** in Visual Studio (see [Set up your desktop application for MSIX packaging in Visual Studio](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net)). These steps are necessary only if you want to package the WPF app in an MSIX package. - -> [!NOTE] -> If you choose not to package your application in an [MSIX package](/windows/msix) for deployment, then computers that run your app must have the [Visual C++ Runtime](https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads) installed. - -1. Add a new project to your solution created from the **Windows Application Packaging Project** project template. As you create the project, select the same **Target version** and **Minimum version** as you selected for the UWP project. - -1. In the packaging project, right-click the **Dependencies** node, and choose **Add Project Reference...**. In the list of projects, select *MyWPFApp*, and click **OK**. - - > [!NOTE] - > If you want to publish your app in the Microsoft Store, then you also have to add a reference to the UWP project in the packaging project. - -1. If you followed the steps up to this point, then all of the projects in your solution will target the same specific platform (x86 or x64). And that's necessary in order to build the WPF app into an MSIX package using the Windows Application Packaging Project. To confirm that, you can follow these steps: - - 1. Right-click the solution node (*not* the project node) in **Solution Explorer**, and choose **Properties**. - 1. Select **Configuration Properties** on the left. - 1. Click the **Configuration Manager...** button. - 1. Confirm that all of the listed projects have the same value under **Platform**: either *x86* or *x64*. - -1. Right-click the project node for the packaging project that you just added, and click **Set as Startup project**. - -1. Build and run the packaging project. Confirm that the WPF app runs, and that the UWP control(s) display as expected. - -1. For info about distributing/deploying the package, see [Manage your MSIX deployment](/windows/msix/desktop/managing-your-msix-deployment-overview). - -## Related topics - -* [Host WinRT XAML controls in desktop apps (XAML Islands)](xaml-islands.md) -* [InkCanvas class (UWP)](/uwp/api/Windows.UI.Xaml.Controls.InkCanvas) -* [InkToolbar class (UWP)](/uwp/api/windows.ui.xaml.controls.inktoolbar) -* [CalendarView class (UWP)](/uwp/api/Windows.UI.Xaml.Controls.CalendarView) -* [WindowsXamlHost control for Windows Forms and WPF](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) -* [.NET Core 3.1](https://dotnet.microsoft.com/download/dotnet/3.1) -* [PackageReference in project files](/nuget/consume-packages/package-references-in-project-files) -* [InkCanvas control for Windows Forms and WPF](/windows/communitytoolkit/controls/wpf-winforms/inkcanvas) -* [InkToolbar control for Windows Forms and WPF](/windows/communitytoolkit/controls/wpf-winforms/inktoolbar) -* [IXamlMetadataProvider interface](/uwp/api/Windows.UI.Xaml.Markup.IXamlMetadataProvider) -* [MSIX documentation](/windows/msix) -* [Set up your desktop application for MSIX packaging in Visual Studio](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net) -* [Microsoft Visual C++ Redistributable latest supported downloads](https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads) diff --git a/hub/apps/desktop/modernize/xaml-islands/using-the-xaml-hosting-api.md b/hub/apps/desktop/modernize/xaml-islands/using-the-xaml-hosting-api.md deleted file mode 100644 index 512ccef85d..0000000000 --- a/hub/apps/desktop/modernize/xaml-islands/using-the-xaml-hosting-api.md +++ /dev/null @@ -1,133 +0,0 @@ ---- -description: This article describes how to host WinRT XAML UI in your desktop C++ desktop (Win32) app. -title: Using the WinRT XAML hosting API in a C++ desktop (Win32) app -ms.date: 03/23/2020 -ms.topic: concept-article -keywords: windows 10, uwp, windows forms, wpf, win32, xaml islands -ms.localizationpriority: medium -ms.custom: 19H1 ---- - -# Using the WinRT XAML hosting API in a C++ desktop (Win32) app - -> [!IMPORTANT] -> This topic uses or mentions types from the [CommunityToolkit/Microsoft.Toolkit.Win32](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32) GitHub repo. For important info about XAML Islands support, please see the [XAML Islands Notice](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32#xaml-islands-notice) in that repo. - -Starting in Windows 10, version 1903, non-UWP desktop apps (including C++ desktop (Win32), WPF, and Windows Forms apps) can use the *WinRT XAML hosting API* to host WinRT XAML controls in any UI element that is associated with a window handle (HWND). This API enables non-UWP desktop apps to use the latest Windows UI features that are only available via WinRT XAML controls. For example, non-UWP desktop apps can use this API to host WinRT XAML controls that use the [Fluent Design System](/windows/uwp/design/fluent-design-system/index) and support [Windows Ink](/windows/uwp/design/input/pen-and-stylus-interactions). - -The WinRT XAML hosting API provides the foundation for a broader set of controls that we are providing to enable developers to bring Fluent UI to non-UWP desktop apps. This feature is called *XAML Islands*. For an overview of this feature, see [Host WinRT XAML controls in desktop apps (XAML Islands)](xaml-islands.md). - -> [!NOTE] -> If you have feedback about XAML Islands, create a new issue in the [Microsoft.Toolkit.Win32 repo](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/issues) and leave your comments there. - -## Is the WinRT XAML hosting API the right choice for your desktop app? - -The WinRT XAML hosting API provides the low-level infrastructure for hosting WinRT XAML controls in desktop apps. Some types of desktop apps have the option of using alternative, more convenient APIs to accomplish this goal. - -* If you have a C++ desktop app and you want to host WinRT XAML controls in your app, you must use the WinRT XAML hosting API. There are no alternatives for these types of apps. - -* For WPF and Windows Forms apps, we strongly recommend that you use the [XAML Island .NET controls](xaml-islands.md#wpf-and-windows-forms-applications) in the Windows Community Toolkit instead of using the WinRT XAML hosting API directly. These controls use the WinRT XAML hosting API internally and implement all of the behavior you would otherwise need to handle yourself if you used the WinRT XAML hosting API directly, including keyboard navigation and layout changes. - -Because we recommend that only C++ desktop apps use the WinRT XAML hosting API, this article primarily provides instructions and examples for C++ desktop apps. However, you can use the WinRT XAML hosting API in WPF and Windows Forms apps if you choose. This article points to relevant source code for the [host controls](xaml-islands.md#host-controls) for WPF and Windows Forms in the Windows Community Toolkit so you can see how the WinRT XAML hosting API is used by those controls. - -## Learn how to use the XAML Hosting API - -To follow step-by-step instructions with code examples for using the XAML Hosting API in C++ desktop apps, see these articles: - -* [Host a standard WinRT XAML control](host-standard-control-with-xaml-islands-cpp.md) -* [Host a custom WinRT XAML control](host-custom-control-with-xaml-islands-cpp.md) -* [Advanced scenarios](advanced-scenarios-xaml-islands-cpp.md) - -## Samples - -The way you use the WinRT XAML hosting API in your code depends on your app type, the design of your app, and other factors. To help illustrate how to use this API in the context of a complete app, this article refers to code from the following samples. - -### C++ desktop (Win32) - -The following samples demonstrate how to use the WinRT XAML hosting API in a C++ desktop app: - -* [Simple XAML Island sample](https://github.com/microsoft/Xaml-Islands-Samples/tree/master/Standalone_Samples/CppWinRT_Basic_Win32App). This sample demonstrates a basic implementation of hosting a WinRT XAML control in an unpackaged C++ desktop app. - -* [XAML Island with custom control sample](https://github.com/microsoft/Xaml-Islands-Samples/tree/master/Samples/Win32). This sample demonstrates a complete implementation of hosting a custom WinRT XAML control in a packaged C++ desktop app, as well as handling other behavior such as keyboard input and focus navigation. - -### WPF and Windows Forms - -The [WindowsXamlHost](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control in the Windows Community Toolkit serves as a reference sample for using the WinRT XAML hosting API in WPF and Windows Forms apps. The source code is available at the following locations: - -* For the WPF version of the control, [go here](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/tree/master/Microsoft.Toolkit.Wpf.UI.XamlHost). The WPF version derives from [System.Windows.Interop.HwndHost](/dotnet/api/system.windows.interop.hwndhost). - -* For the Windows Forms version of the control, [go here](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/tree/master/Microsoft.Toolkit.Forms.UI.XamlHost). The Windows Forms version derives from [System.Windows.Forms.Control](/dotnet/api/system.windows.forms.control). - -> [!NOTE] -> We strongly recommend that you use the [XAML Island .NET controls](xaml-islands.md#wpf-and-windows-forms-applications) in the Windows Community Toolkit instead of using the WinRT XAML hosting API directly in WPF and Windows Forms apps. The WPF and Windows Forms sample links in this article are for illustrative purposes only. - -## Architecture of the API - -The WinRT XAML hosting API includes these main Windows Runtime types and COM interfaces. - -| Type or interface | Description | -|--------------------|-------------| -| [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) | This class represents the UWP XAML framework. This class provides a single static [InitializeForCurrentThread](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager.initializeforcurrentthread) method that initializes the UWP XAML framework on the current thread in the desktop app. | -| [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) | This class represents an instance of UWP XAML content that you are hosting in your desktop app. The most important member of this class is the [Content](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource.content) property. You assign this property to a [Windows.UI.Xaml.UIElement](/uwp/api/windows.ui.xaml.uielement) that you want to host. This class also has other members for routing keyboard focus navigation into and out of the XAML Islands. | -| [IDesktopWindowXamlSourceNative](/windows/win32/api/windows.ui.xaml.hosting.desktopwindowxamlsource/nn-windows-ui-xaml-hosting-desktopwindowxamlsource-idesktopwindowxamlsourcenative) | This COM interface provides the [AttachToWindow](/windows/win32/api/windows.ui.xaml.hosting.desktopwindowxamlsource/nf-windows-ui-xaml-hosting-desktopwindowxamlsource-idesktopwindowxamlsourcenative-attachtowindow) method, which you use to attach a XAML Island in your app to a parent UI element. Every **DesktopWindowXamlSource** object implements this interface. | -| [IDesktopWindowXamlSourceNative2](/windows/win32/api/windows.ui.xaml.hosting.desktopwindowxamlsource/nn-windows-ui-xaml-hosting-desktopwindowxamlsource-idesktopwindowxamlsourcenative2) | This COM interface provides the [PreTranslateMessage](/windows/win32/api/windows.ui.xaml.hosting.desktopwindowxamlsource/nf-windows-ui-xaml-hosting-desktopwindowxamlsource-idesktopwindowxamlsourcenative2-pretranslatemessage) method, which enables the UWP XAML framework to process certain Windows messages correctly. Every **DesktopWindowXamlSource** object implements this interface. | - -The following diagram illustrates the hierarchy of objects in a XAML Island that is hosted in a desktop app. - -* At the base level is the UI element in your app where you want to host the XAML Island. This UI element must have a window handle (HWND). Examples of UI elements in which you can host a XAML Island include a [window](/windows/desktop/winmsg/about-windows) for C++ desktop apps, a [System.Windows.Interop.HwndHost](/dotnet/api/system.windows.interop.hwndhost) for WPF apps, and a [System.Windows.Forms.Control](/dotnet/api/system.windows.forms.control) for Windows Forms apps. - -* At the next level is a **DesktopWindowXamlSource** object. This object provides the infrastructure for hosting the XAML Island. Your code is responsible for creating this object and attaching it to the parent UI element. - -* When you create a **DesktopWindowXamlSource**, this object automatically creates a native child window to host your WinRT XAML control. This native child window is mostly abstracted away from your code, but you can access its handle (HWND) if necessary. - -* Finally, at the top level is the WinRT XAML control you want to host in your desktop app. This can be any UWP object that derives from [Windows.UI.Xaml.UIElement](/uwp/api/windows.ui.xaml.uielement), including any WinRT XAML control provided by the Windows SDK as well as custom user controls. - -![DesktopWindowXamlSource architecture](../images/xaml-islands/xaml-hosting-api-rev2.png) - -> [!NOTE] -> When you host XAML Islands in a desktop app, you can have multiple trees of XAML content running on the same thread at the same time. To access the root element of a tree of XAML content in a XAML Island and get related information about the context in which it is hosted, use the [XamlRoot](/uwp/api/windows.ui.xaml.xamlroot) class. The [CoreWindow](/uwp/api/windows.ui.core.corewindow), [ApplicationView](/uwp/api/windows.ui.viewmanagement.applicationview), and [Window](/uwp/api/windows.ui.xaml.window) APIs won't provide the correct information for XAML Islands. For more information, see [this section](xaml-islands.md#window-host-context-for-xaml-islands). - -## Best practices - -When using the WinRT XAML hosting API, follow these best practices for each thread that hosts WinRT XAML controls: - -* Create a dedicated [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) for the thread. -* For each WinRT XAML control you want to host, create a [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource). -* Destroy each [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) after it is no longer needed. -* Before exiting the thread, destroy the dedicated [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) for the thread. Note that destruction of this [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) is asynchronous, and requires draining the Windows message queue before exiting the thread. For examples of how to do this, see the [XAML Islands samples](https://github.com/microsoft/Xaml-Islands-Samples). -* After destroying the [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) for a given thread, creating a new [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) on the same thread is not supported and will result in unpredictable behavior. - -## Troubleshooting - -### Error using WinRT XAML hosting API in a UWP app - -| Issue | Resolution | -|-------|------------| -| Your app receives a **COMException** with the following message: "Cannot activate DesktopWindowXamlSource. This type cannot be used in a UWP app." or "Cannot activate WindowsXamlManager. This type cannot be used in a UWP app." | This error indicates you are trying to use the WinRT XAML hosting API (specifically, you are trying to instantiate the [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) or [WindowsXamlManager](/uwp/api/windows.ui.xaml.hosting.windowsxamlmanager) types) in a UWP app. The WinRT XAML hosting API is only intended to be used in non-UWP desktop apps, such as WPF, Windows Forms, and C++ desktop applications. | - -### Error trying to use the WindowsXamlManager or DesktopWindowXamlSource types - -| Issue | Resolution | -|-------|------------| -| Your app receives an exception with the following message: "WindowsXamlManager and DesktopWindowXamlSource are supported for apps targeting Windows version 10.0.18226.0 and later. Please check either the application manifest or package manifest and ensure the MaxTestedVersion property is updated." | This error indicates that your application tried to use the **WindowsXamlManager** or **DesktopWindowXamlSource** types in the WinRT XAML hosting API, but the OS can't determine whether the app was built to target Windows 10, version 1903 or later. The WinRT XAML hosting API was first introduced as a preview in an earlier version of Windows 10, but it is only supported starting in Windows 10, version 1903.

    To resolve this issue, either create an MSIX package for the app and run it from the package, or install the [Microsoft.Toolkit.Win32.UI.SDK](https://www.nuget.org/packages/Microsoft.Toolkit.Win32.UI.SDK) NuGet package in your project. | - -### Error attaching to a window on a different thread - -| Issue | Resolution | -|-------|------------| -| Your app receives a **COMException** with the following message: "AttachToWindow method failed because the specified HWND was created on a different thread." | This error indicates that your application called the **IDesktopWindowXamlSourceNative::AttachToWindow** method and passed it the HWND of a window that was created on a different thread. You must pass this method the HWND of a window that was created on the same thread as the code from which you are calling the method. | - -### Error attaching to a window on a different top-level window - -| Issue | Resolution | -|-------|------------| -| Your app receives a **COMException** with the following message: "AttachToWindow method failed because the specified HWND descends from a different top-level window than the HWND that was previously passed to AttachToWindow on the same thread." | This error indicates that your application called the **IDesktopWindowXamlSourceNative::AttachToWindow** method and passed it the HWND of a window that descends from a different top-level window than a window you specified in a previous call to this method on the same thread.

    After your application calls **AttachToWindow** on a particular thread, all other [DesktopWindowXamlSource](/uwp/api/windows.ui.xaml.hosting.desktopwindowxamlsource) objects on the same thread can only attach to windows that are descendants of the same top-level window that was passed in the first call to **AttachToWindow**. When all the **DesktopWindowXamlSource** objects are closed for a particular thread, the next **DesktopWindowXamlSource** is then free to attach to any window again.

    To resolve this issue, either close all **DesktopWindowXamlSource** objects that are bound to other top-level windows on this thread, or create a new thread for this **DesktopWindowXamlSource**. | - -## Related topics - -* [Host UWP XAML controls in desktop apps (XAML Islands)](xaml-islands.md) -* [Host a standard WinRT XAML control in a C++ desktop app](host-standard-control-with-xaml-islands-cpp.md) -* [Host a custom WinRT XAML control in a C++ desktop app](host-custom-control-with-xaml-islands-cpp.md) -* [Advanced scenarios for XAML Islands in C++ desktop apps](advanced-scenarios-xaml-islands-cpp.md) -* [XAML Islands code samples](https://github.com/microsoft/Xaml-Islands-Samples) -* [C++ desktop XAML Islands sample](https://github.com/microsoft/Xaml-Islands-Samples/tree/master/Samples/Win32/SampleCppApp) diff --git a/hub/apps/desktop/modernize/xaml-islands/xaml-islands.md b/hub/apps/desktop/modernize/xaml-islands/xaml-islands.md deleted file mode 100644 index 414570c9bb..0000000000 --- a/hub/apps/desktop/modernize/xaml-islands/xaml-islands.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -description: This guide helps you to create Fluent-based UWP UIs directly in your WPF and Windows Forms applications -title: Host WinRT XAML controls in desktop apps -ms.date: 10/20/2020 -ms.topic: how-to -keywords: windows 10, uwp, windows forms, wpf, xaml islands -ms.localizationpriority: high -ms.custom: 19H1 ---- - -# Host WinRT XAML controls in desktop apps (XAML Islands) - -> [!IMPORTANT] -> This topic uses or mentions types from the [CommunityToolkit/Microsoft.Toolkit.Win32](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32) GitHub repo. For important info about XAML Islands support, please see the [XAML Islands Notice](https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32#xaml-islands-notice) in that repo. - -Starting in Windows 10, version 1903, you can host WinRT XAML controls in non-UWP desktop applications using a feature called *XAML Islands*. This feature enables you to enhance the look, feel, and functionality of your existing WPF, Windows Forms, and C++ desktop (Win32) applications with the latest Windows UI features that are only available via WinRT XAML controls. This means that you can use UWP features such as [Windows Ink](/windows/uwp/design/input/pen-and-stylus-interactions) and controls that support the [Fluent Design System](/windows/uwp/design/fluent-design-system/index) in your existing WPF, Windows Forms, and C++ desktop applications. - -You can host any WinRT XAML control that derives from [Windows.UI.Xaml.UIElement](/uwp/api/windows.ui.xaml.uielement), including: - -* Most first-party WinRT XAML control provided by the Windows SDK or the WinUI 2 library (see [exceptions](#limitations-and-workarounds)). -* Any custom WinRT XAML control (for example, a user control that consists of several WinRT XAML controls that work together). You must have the source code for the custom control so you can compile it with your application. - -Fundamentally, XAML Islands are created by using the *WinRT XAML hosting API*. This API consists of several Windows Runtime classes and COM interfaces that were introduced in the Windows 10, version 1903 SDK. We also provide a set of XAML Island .NET controls in the [Windows Community Toolkit](/windows/uwpcommunitytoolkit/) that use the WinRT XAML hosting API internally and provide a more convenient development experience for WPF and Windows Forms apps. - -The way you use XAML Islands depends on your application type and the types of WinRT XAML controls you want to host. - -> [!NOTE] -> If you have feedback about XAML Islands, create a new issue in the [Microsoft.Toolkit.Win32 repo](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/issues) and leave your comments there. - -## Requirements - -XAML Islands have these run time requirements: - -* Windows 10, version 1903, or a later release. -* If your application is not packaged in an [MSIX package](/windows/msix) for deployment, the computer must have the [Visual C++ Runtime](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) installed. - -## WPF and Windows Forms applications - -> [!NOTE] -> Using XAML Islands to host WinRT XAML controls in WPF and Windows Forms apps is currently supported only in apps that target .NET Core 3.x. XAML Islands are not yet supported in apps that target .NET, or in apps that any version of the .NET Framework. - -We recommend that WPF and Windows Forms applications use the XAML Island .NET controls that are available in the Windows Community Toolkit. These controls provide an object model that mimics (or provides access to) the properties, methods, and events of the corresponding WinRT XAML controls. They also handle behavior such as keyboard navigation and layout changes. - -There are two sets of XAML Island controls for WPF and Windows Forms applications: *wrapped controls* and *host controls*. - -### Wrapped controls - -WPF and Windows Forms applications can use a selection of XAML Island controls that wrap the interface and functionality of a specific WinRT XAML control. You can add these controls directly to the design surface of your WPF or Windows Forms project and then use them like any other WPF or Windows Forms control in the designer. - -The following wrapped WinRT XAML controls are currently available in the Windows Community Toolkit. - -| Control | Minimum supported OS | Description | -|-----------------|-------------------------------|-------------| -| [InkCanvas](/windows/communitytoolkit/controls/wpf-winforms/inkcanvas)
    [InkToolbar](/windows/communitytoolkit/controls/wpf-winforms/inktoolbar) | Windows 10, version 1903 | Provide a surface and related toolbars for Windows Ink-based user interaction in your Windows Forms or WPF desktop application. | -| [MediaPlayerElement](/windows/communitytoolkit/controls/wpf-winforms/mediaplayerelement) | Windows 10, version 1903 | Embeds a view that streams and renders media content such as video in your Windows Forms or WPF desktop application. | -| [MapControl](/windows/communitytoolkit/controls/wpf-winforms/mapcontrol) | Windows 10, version 1903 | Enables you to display a symbolic or photorealistic map in your Windows Forms or WPF desktop application. | - -For a walkthrough that demonstrates how to use the wrapped WinRT XAML controls, see [Use XAML Islands to host a UWP XAML control in a C# WPF app](host-standard-control-with-xaml-islands.md). - -### Host controls - -For custom controls and other scenarios beyond those covered by the available wrapped controls, WPF and Windows Forms applications can also use the [WindowsXamlHost](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) control that is available in the Windows Community Toolkit. - -| Control | Minimum supported OS | Description | -|-----------------|-------------------------------|-------------| -| [WindowsXamlHost](/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost) | Windows 10, version 1903 | Can host any WinRT XAML control that derives from [Windows.UI.Xaml.UIElement](/uwp/api/windows.ui.xaml.uielement), including any first-party WinRT XAML control provided by the Windows SDK as well as custom controls. | - -For walkthroughs that demonstrate how to use the **WindowsXamlHost** control, see [Use XAML Islands to host a UWP XAML control in a C# WPF app](host-standard-control-with-xaml-islands.md) and [Host a custom WinRT XAML control in a WPF app using XAML Islands](host-custom-control-with-xaml-islands.md). - - - -### Configure your project to use the XAML Island .NET controls - -The XAML Island .NET controls require Windows 10, version 1903, or a later version. To use these controls, install one of the NuGet packages listed below. These packages provide everything you need to use the XAML Island wrapped controls and host controls, and they include other related NuGet packages that are also required. - -| Type of control | NuGet package | Related articles | -|-----------------|----------------|---------------------| -| [Wrapped controls](#wrapped-controls) | Version 6.0.0 or later of these packages:
    • WPF: [Microsoft.Toolkit.Wpf.UI.Controls](https://www.nuget.org/packages/Microsoft.Toolkit.Wpf.UI.Controls)
    • Windows Forms: [Microsoft.Toolkit.Forms.UI.Controls](https://www.nuget.org/packages/Microsoft.Toolkit.Forms.UI.Controls)
    | [Use XAML Islands to host a UWP XAML control in a C# WPF app](host-standard-control-with-xaml-islands.md) | -| [Host control](#host-controls) | Version 6.0.0 or later of these packages:
    • WPF: [Microsoft.Toolkit.Wpf.UI.XamlHost](https://www.nuget.org/packages/Microsoft.Toolkit.Wpf.UI.XamlHost)
    • Windows Forms: [Microsoft.Toolkit.Forms.UI.XamlHost](https://www.nuget.org/packages/Microsoft.Toolkit.Forms.UI.XamlHost)
    | [Use XAML Islands to host a UWP XAML control in a C# WPF app](host-standard-control-with-xaml-islands.md)
    [Host a custom WinRT XAML control in a WPF app](host-custom-control-with-xaml-islands.md) | - -Be aware of the following details: - -* The host control packages are also included in the wrapped control packages. You can install the wrapped control packages if you want to use both sets of controls. - -* If you're hosting a custom WinRT XAML control, you'll also need to perform some additional steps to reference the custom control. For more info, see [Host a custom WinRT XAML control in a WPF app using XAML Islands](host-custom-control-with-xaml-islands.md). - -### Web view controls - -The Windows Community Toolkit also provides the following .NET controls for hosting web content in WPF and Windows Forms applications. These controls are often used in similar desktop app modernization scenarios as the XAML Island controls, and they are maintained in the same [Microsoft.Toolkit.Win32 repo](https://github.com/windows-toolkit/Microsoft.Toolkit.Win32) as the XAML Island controls. - -| Control | Minimum supported OS | Description | -|-----------------|-------------------------------|-------------| -| [WebView](/windows/communitytoolkit/controls/wpf-winforms/webview) | Windows 10, version 1803 | Uses the Microsoft Edge rendering engine to show web content. | -| [WebViewCompatible](/windows/communitytoolkit/controls/wpf-winforms/webviewcompatible) | Windows 7 | Provides a version of **WebView** that is compatible with more OS versions. This control uses the Microsoft Edge rendering engine to show web content on Windows 10 version 1803 and later, and the Internet Explorer rendering engine to show web content on earlier versions of Windows 10, Windows 8.x, and Windows 7. | - -To use these controls, install one of these NuGet packages: - -* WPF: [Microsoft.Toolkit.Wpf.UI.Controls.WebView](https://www.nuget.org/packages/Microsoft.Toolkit.Wpf.UI.Controls.WebView) -* Windows Forms: [Microsoft.Toolkit.Forms.UI.Controls.WebView](https://www.nuget.org/packages/Microsoft.Toolkit.Forms.UI.Controls.WebView) - -## C++ desktop (Win32) applications - -The XAML Island .NET controls are not supported in C++ desktop applications. These applications must instead use the *WinRT XAML hosting API* provided by the Windows 10 SDK (version 1903 and later). - -The WinRT XAML hosting API consists of several Windows Runtime classes and COM interfaces that your C++ desktop application can use to host any WinRT XAML control that derives from [Windows.UI.Xaml.UIElement](/uwp/api/windows.ui.xaml.uielement). You can host WinRT XAML controls in any UI element in your application that has an associated window handle (HWND). For more information about this API, see the following articles. - -* [Using the WinRT XAML hosting API in a C++ desktop app](using-the-xaml-hosting-api.md) -* [Host a standard WinRT XAML control in a C++ desktop app](host-standard-control-with-xaml-islands-cpp.md) -* [Host a custom WinRT XAML control in a C++ desktop app](host-custom-control-with-xaml-islands-cpp.md) - -> [!NOTE] -> The wrapped controls and host controls in the Windows Community Toolkit use the WinRT XAML hosting API internally and implement all of the behavior you would otherwise need to handle yourself if you used the WinRT XAML hosting API directly, including keyboard navigation and layout changes. For WPF and Windows Forms applications, we strongly recommend that you use these controls instead of the WinRT XAML hosting API directly because they abstract away many of the implementation details of using the API. - -## Architecture of XAML Islands - -Here's a quick look at how the different types of XAML Island controls are organized architecturally on top of the WinRT XAML hosting API. - -![Host control Architecture](../images/xaml-islands/host-controls.png) - -The APIs that appear at the bottom of this diagram ship with the Windows SDK. The wrapped controls and host controls are available via NuGet packages in the Windows Community Toolkit. - -## Limitations and workarounds - -The following sections discuss limitations and workarounds for certain UWP development scenarios in desktop apps that use XAML Islands. - -### Supported only with workarounds - -:heavy_check_mark: Hosting controls from the [WinUI 2 Library](../../../winui/index.md) in a XAML Island is supported conditionally in the current release of XAML Islands. If your desktop app uses an [MSIX package](/windows/msix) for deployment, you can host WinUI controls from prerelease or release versions of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NuGet package. If your desktop app is not packaged using MSIX, you can host WinUI controls only if you install a prerelease version of the [Microsoft.UI.Xaml](https://www.nuget.org/packages/Microsoft.UI.Xaml) NuGet package, or if you use the [Dynamic Dependencies API](../framework-packages/framework-packages-overview.md). Support for hosting controls from the [WinUI 3.0 Library](../../../winui/winui3/index.md) is coming in a later release. - -:heavy_check_mark: To access the root element of a tree of XAML content in a XAML Island and get related information about the context in which it is hosted, do not use the [CoreWindow](/uwp/api/windows.ui.core.corewindow), [ApplicationView](/uwp/api/windows.ui.viewmanagement.applicationview), and [Window](/uwp/api/windows.ui.xaml.window) classes. Instead, use the [XamlRoot](/uwp/api/windows.ui.xaml.xamlroot) class. For more information, see [this section](#window-host-context-for-xaml-islands). - -:heavy_check_mark: To support the [Share contract](/windows/uwp/app-to-app/share-data) from a WPF, Windows Forms, or C++ desktop (Win32) app, your app must use the [IDataTransferManagerInterop](/windows/win32/api/shobjidl_core/nn-shobjidl_core-idatatransfermanagerinterop) interface to get the [DataTransferManager](/uwp/api/windows.applicationmodel.datatransfer.datatransfermanager) object to initiate the share operation for a specific window. For a sample that demonstrates how to use this interface in a WPF app, see the [ShareSource sample](https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/ShareSource). - -:heavy_check_mark: Using `x:Bind` with hosted controls in XAML Islands is not supported. You'll have to declare the data model in a .NET Standard library. - -### Not supported - -:no_entry_sign: Using XAML Islands in WPF and Windows Forms apps that target the .NET Framework. XAML Islands are supported only in apps that target .NET Core 3.x. - -:no_entry_sign: UWP XAML content in XAML Islands doesn't respond to Windows theme changes from dark to light or vice versa at run time. Content does respond to high contrast changes at run time. - -:no_entry_sign: Adding a [Windows.UI.Xaml.WebView](/uwp/api/Windows.UI.Xaml.Controls.WebView) control. For WPF and WinForms apps, see [these alternatives](#web-view-controls). - -:no_entry_sign: The [MediaPlayer](/uwp/api/Windows.Media.Playback.MediaPlayer) control and [MediaPlayerElement](/windows/communitytoolkit/controls/wpf-winforms/mediaplayerelement) host control are not supported in full screen mode. - -:no_entry_sign: Text input with the handwriting view. For more information about this feature, see [this article](/windows/uwp/design/controls-and-patterns/text-handwriting-view). - -:no_entry_sign: Text controls that use `@Places` and `@People` content links. For more information about this feature, see [this article](/windows/uwp/design/controls-and-patterns/content-links). - -:no_entry_sign: XAML Islands do not support hosting a [ContentDialog](/uwp/api/Windows.UI.Xaml.Controls.ContentDialog) that contains a control that accepts text input, such as a [TextBox](/uwp/api/windows.ui.xaml.controls.textbox), [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox), or [AutoSuggestBox](/uwp/api/windows.ui.xaml.controls.autosuggestbox). If you do this, the input control will not properly respond to key presses. To achieve similar functionality using a XAML Island, we recommend that you host a [Popup](/uwp/api/Windows.UI.Xaml.Controls.Primitives.Popup) that contains the input control. - -:no_entry_sign: XAML Islands do not currently support displaying SVG files in a hosted [Windows.UI.Xaml.Controls.Image](/uwp/api/Windows.UI.Xaml.Controls.Image) control or by using an [Windows.UI.Xaml.Media.Imaging.SvgImageSource](/uwp/api/windows.ui.xaml.media.imaging.svgimagesource) object. As a workaround, convert the image files you want to display to raster-based formats such as JPG or PNG. - -### Window host context for XAML Islands - -When you host XAML Islands in a desktop app, you can have multiple trees of XAML content running on the same thread at the same time. To access the root element of a tree of XAML content in a XAML Island and get related information about the context in which it is hosted, use the [XamlRoot](/uwp/api/windows.ui.xaml.xamlroot) class. The [CoreWindow](/uwp/api/windows.ui.core.corewindow), [ApplicationView](/uwp/api/windows.ui.viewmanagement.applicationview), and [Window](/uwp/api/windows.ui.xaml.window) classes won't provide the correct information for XAML Islands. [CoreWindow](/uwp/api/windows.ui.core.corewindow) and [Window](/uwp/api/windows.ui.xaml.window) objects do exist on the thread and are accessible to your app, but they won't return meaningful bounds or visibility (they are always invisible and have a size of 1x1). For more information, see [Windowing hosts](/windows/uwp/design/layout/show-multiple-views#windowing-hosts). - -For example, to get the bounding rectangle of the window that contains a WinRT XAML control that is hosted in a XAML Island, use the [XamlRoot.Size](/uwp/api/windows.ui.xaml.xamlroot.size) property of the control. Because every WinRT XAML control that can be hosted in a XAML Island derives from [Windows.UI.Xaml.UIElement](/uwp/api/windows.ui.xaml.uielement), you can use the [XamlRoot](/uwp/api/windows.ui.xaml.uielement.xamlroot) property of the control to access the **XamlRoot** object. - -```csharp -Size windowSize = myUWPControl.XamlRoot.Size; -``` - -Do not use the [CoreWindows.Bounds](/uwp/api/windows.ui.core.corewindow.bounds) property to get the bounding rectangle. - -```csharp -// This will return incorrect information for a WinRT XAML control that is hosted in a XAML Island. -Rect windowSize = CoreWindow.GetForCurrentThread().Bounds; -``` - -For a table of common windowing-related APIs that you should avoid in the context of XAML Islands and the recommended [XamlRoot](/uwp/api/windows.ui.xaml.xamlroot) replacements, see the table in [this section](/windows/uwp/design/layout/show-multiple-views#make-code-portable-across-windowing-hosts). - -For a sample that demonstrates how to use this interface in a WPF app, see the [ShareSource](https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/ShareSource) sample. - -## Additional resources - -For more background information and tutorials about using XAML Islands, see the following articles and resources: - -* [Modernize a WPF app tutorial](../modernize-wpf-tutorial.md): This tutorial provides step-by-step instructions for using the wrapped controls and host controls in the Windows Community Toolkit to add WinRT XAML controls to an existing WPF line-of-business application. This tutorial includes the complete code for the WPF application as well as detailed instructions for each step in the process. -* [XAML Islands code samples](https://github.com/microsoft/Xaml-Islands-Samples): This repo contains Windows Forms, WPF, and C++ desktop (Win32) samples that demonstrate how to use XAML Islands. -* [XAML Islands v1 - Updates and Roadmap](https://blogs.windows.com/windowsdeveloper/2019/06/13/xaml-islands-v1-updates-and-roadmap): This blog post discusses many common questions about XAML Islands and provides a detailed development roadmap. diff --git a/hub/apps/desktop/visual-studio-templates.md b/hub/apps/desktop/visual-studio-templates.md deleted file mode 100644 index f33709e818..0000000000 --- a/hub/apps/desktop/visual-studio-templates.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -description: This article provides an overview of Visual Studio project and item templates for Windows apps. -title: Visual Studio project and item templates for Windows apps -ms.date: 11/17/2020 -ms.topic: article -keywords: windows 10, uwp, windows forms, wpf, xaml islands -ms.localizationpriority: high ---- - -# Visual Studio project and item templates for Windows apps - -Visual Studio 2019 (and later) provides many project and item templates that help you build apps for Windows 11 and Windows 10 devices by using C\# or C++. This topic describes the templates and helps you choose one for your scenario. - -* Project templates include project files, code files, and other assets that are configured to build an app or a component that can be loaded and used by an app. -* Item templates are project files that contain commonly used code and XAML that can be added to a project to reduce development time. For example, you can use an item template to add a new window, page, or control to your app. - -For more information about installing and configuring Visual Studio to get access to these templates, see [Start developing Windows apps](../get-started/start-here.md). - -## WinUI templates - -[WinUI](../winui/index.md) is the modern native user interface (UI) platform for Windows apps across desktop (.NET and native Win32) and UWP app platforms. [WinUI 3](../winui/index.md) is the latest major version of WinUI, and it transforms WinUI into a full UX framework for desktop Windows apps. - -WinUI 3 is available as part of [the Windows App SDK](../windows-app-sdk/index.md). It includes a VSIX package for Visual Studio 2019 (and later) that provides project and item templates that help you get started building apps with a WinUI-based interface. - -[Template Studio for WinUI (C#)](https://marketplace.visualstudio.com/items?itemName=TemplateStudio.TemplateStudioForWinUICs) is a Visual Studio 2022 extension that accelerates the creation of new .NET WinUI apps using a wizard-based UI. Select from a variety of project types and features to generate a project template customized for you. - -For more information about the available WinUI project and item templates, see [WinUI 3 templates in Visual Studio](../winui/winui3/winui-project-templates-in-visual-studio.md). - -## UWP templates - -Visual Studio provides a variety of project templates for building UWP apps with C# or C++. To use these project templates, you must include the **Universal Windows Platform development** workload when you install Visual Studio. For the C++ project templates, you must also include the **C++ (v142) Universal Windows Platforms tools** optional component for the **Universal Windows Platform development** workload. - -[Template Studio for UWP](https://marketplace.visualstudio.com/items?itemName=TemplateStudio.TemplateStudioForUWP) is a Visual Studio 2022 extension that accelerates the creation of new .NET UWP apps using a wizard-based UI. Select from a variety of project types and features to generate a project template customized for you. - -### Project templates for C# and UWP - -To access the UWP C# project templates when you create a new project in Visual Studio, filter the language to **C#**, the platform to **Windows**, and the project type to **UWP**. - -![UWP C# project templates](images/uwp-projects-csharp.png) - -You can use these project templates to create C# UWP apps. - -| Template | Description | -|----------|-------------| -| Blank App (Universal Windows) | Creates a UWP app. The generated project includes a basic page that derives from the [Windows.UI.Xaml.Controls.Page](/uwp/api/windows.ui.xaml.controls.page) class that you can use to start building your UI. | -| Unit Test App (Universal Windows) | Creates a unit test project in C# for a UWP app. For more information, see [Unit test C# code](/visualstudio/test/unit-testing-visual-csharp-code-in-a-store-app). | - -You can use these project templates to build pieces of a C# UWP app. - -| Template | Description | -|----------|-------------| -| Class Library (Universal Windows) | Creates a managed class library (DLL) in C# that can be used by other UWP apps written in managed code. | -| Windows Runtime Component (Universal Windows) | Creates a [Windows Runtime component](/windows/uwp/winrt-components/) in C# that can be consumed by any UWP app, regardless of the programming language in which the app is written. | -| Optional Code Package (Universal Windows) | Creates an optional package with executable C# code that can be loaded by an app. For more information, see [Optional packages with executable code](/windows/msix/package/optional-packages-with-executable-code). | - -### Project templates for C++ and UWP - -There are two different technologies you can use to build C++ UWP apps: - -* The recommended technology is [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/). This is a C++ language projection that is implemented entirely in header files, and designed to provide you with first-class access to the modern WinRT API. -* Alternatively, you can use the older [C++/CX](/cpp/cppcx/visual-c-language-reference-c-cx) set of extensions. C++/CX is still supported, but we recommend that you use C++/WinRT instead. - -To access the UWP C++ project templates when you create a new project in Visual Studio, filter the language to **C++**, the platform to **Windows**, and the project type to **UWP**. - -> [!NOTE] -> By default, the **Universal Windows Platform development** workload in Visual Studio only provides access to the C++/CX project templates. To access the C++/WinRT project templates, you must install the [C++/WinRT VSIX](/windows/uwp/cpp-and-winrt-apis/intro-to-using-cpp-with-winrt#visual-studio-support-for-cwinrt-xaml-the-vsix-extension-and-the-nuget-package) package. - -![UWP C++ project templates](images/uwp-projects-cpp.png) - -You can use these project templates to create C++ UWP apps. - -| Template | Description | -|----------|-------------| -| Blank App (C++/WinRT) | Creates a C++/WinRT UWP app with a XAML user interface. The generated project includes a basic page that derives from the [Windows.UI.Xaml.Controls.Page](/uwp/api/windows.ui.xaml.controls.page) class that you can use to start building your UI. | -| Core App (C++/WinRT) | Creates a C++/WinRT UWP app that uses [CoreApplication](/uwp/api/Windows.ApplicationModel.Core.CoreApplication) to integrate with a variety of UI frameworks instead of a XAML user interface. For a walkthrough that demonstrates how to use this project template to create a simple game that uses DirectX, see [Create a simple UWP game with DirectX](/windows/uwp/gaming/tutorial--create-your-first-uwp-directx-game). | -| Blank App (Universal Windows - C++/CX) | Creates a C++/WinRT UWP app with a XAML user interface. The generated project includes a basic page that derives from the [Windows.UI.Xaml.Controls.Page](/uwp/api/windows.ui.xaml.controls.page) class in the WinUI library that you can use to start building your UI. | -| DirectX 11 and XAML App (Universal Windows - C++/CX) | Creates a UWP app that uses DirectX 11 and a **SwapChainPanel** so you can use XAML UI controls. For more information, see [DirectX game project templates](/windows/uwp/gaming/user-interface). | -| DirectX 11 App (Universal Windows - C++/CX) | Creates a UWP app that uses DirectX 11. For more information, see [DirectX game project templates](/windows/uwp/gaming/user-interface). | -| DirectX 12 App (Universal Windows - C++/CX) | Creates a UWP app that uses DirectX 12. For more information, see [DirectX game project templates](/windows/uwp/gaming/user-interface). | -| Unit Test App (Universal Windows - C++/CX) | Creates a unit test project in C++/CX for a UWP app. For more information, see [How to test a C++ UWP DLL](/visualstudio/test/unit-testing-a-visual-cpp-dll-for-store-apps). | - -You can use these project templates to build pieces of a C++ UWP app. - -| Template | Description | -|----------|-------------| -| Windows Runtime Component (C++/WinRT) | Creates a [Windows Runtime component](/windows/uwp/winrt-components/) in C++/WinRT that can be consumed by any UWP app, regardless of the programming language in which the app is written. | -| Windows Runtime Component (Universal Windows) | Creates a [Windows Runtime component](/windows/uwp/winrt-components/) in C++/CX that can be consumed by any UWP app, regardless of the programming language in which the app is written. | -| DLL (Universal Windows) | A project for creating a dynamic-link library (DLL) in C++/CX that can be used in a UWP app. For more information, see [DLLs (C++/CX)](/cpp/cppcx/dlls-c-cx). | -| Static Library (Universal Windows) | A project for creating a static library (LIB) in C++/CX that can be used in a UWP app. For more information, see [Static libraries (C++/CX)](/cpp/cppcx/static-libraries-c-cx). | - -## C++ desktop (Win32) templates - -Visual Studio provides a variety of project templates for building desktop Windows apps with native C++ and direct access to the Win32 API. To use these project templates, you must include the **Desktop development with C++** workload when you install Visual Studio. This workload includes project templates for building desktop apps, console apps, and libraries. - -The recommended technology is [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/). This is a C++ language projection that is implemented entirely in header files, and designed to provide you with first-class access to the modern WinRT API. - -### Project templates for C++ desktop apps - -To access the C++ project templates for desktop apps when you create a new project in Visual Studio, filter the language to **C++**, the platform to **Windows**, and the project type to **Desktop**. - -![Native C++ app project templates](images/desktop-app-projects-cpp.png) - -| Template | Description | -|----------|----------| -| Windows Desktop Application (C++/WinRT) | Creates a [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/) client application for Windows desktop. For more information, see [Windows Desktop Application (C++/WinRT)](/windows/uwp/cpp-and-winrt-apis/intro-to-using-cpp-with-winrt#windows-desktop-application-cwinrt). This project template requires the [C++/WinRT VSIX](/windows/uwp/cpp-and-winrt-apis/intro-to-using-cpp-with-winrt#visual-studio-support-for-cwinrt-xaml-the-vsix-extension-and-the-nuget-package). | -| Windows Desktop Application | Creates a classic Windows desktop app with C++. For more information, see [Walkthrough: Create a traditional Windows Desktop application](/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp). | -| Windows Desktop Wizard | Provides a step-by-step wizard you can use to create one of the following types of projects: a classic Windows desktop app, a console app, a dynamic-link library (DLL), or a static library. For more information, see [Windows Desktop Wizard](/cpp/windows/windows-desktop-wizard) and [Walkthrough: Create a traditional Windows Desktop application](/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp). | -| Windows Application Packaging Project | Creates a project that you can use to build a desktop app into an [MSIX package](/windows/msix/overview). This provides a modern deployment experience, the ability to integrate with Windows features via package extensions, and much more. For more information, see [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net). | - -### Project templates for C++ console apps - -To access the C++ project templates for console apps, filter the language to **C++**, the platform to **Windows**, and the project type to **Console**. - -![Native C++ console project templates](images/desktop-console-projects-cpp.png) - -| Template | Description | -|----------|----------| -| Windows Console Application (C++/WinRT) | Creates a [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/) console app without a user interface. For more information, see [C++/WinRT quick-start](/windows/uwp/cpp-and-winrt-apis/get-started#a-cwinrt-quick-start). This project template requires the [C++/WinRT VSIX](/windows/uwp/cpp-and-winrt-apis/intro-to-using-cpp-with-winrt#visual-studio-support-for-cwinrt-xaml-the-vsix-extension-and-the-nuget-package). | -| Console App | Creates a console app without a user interface. For more information, see [Walkthrough: Creating a Standard C++ Program](/cpp/windows/walkthrough-creating-a-standard-cpp-program-cpp). | -| Empty Project | An empty project for creating an application, library, or DLL. You must add any code or resources required. | - -### Project templates for C++ libraries - -To access the C++ project templates for libraries, filter the language to **C++**, the platform to **Windows**, and the project type to **Library**. - -![Native C++ library project templates](images/desktop-library-projects-cpp.png) - -| Template | Description | -|----------|----------| -| Dynamic-Link Library (DLL) | A project for creating a dynamic-link library (DLL). For more information, see [Walkthrough: Creating and using a dynamic link library](/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp). | -| Static Library | A project for creating a static library (LIB). For more information, see [Walkthrough: Create and use a static library](/cpp/build/walkthrough-creating-and-using-a-static-library-cpp). | - -### Item templates for C++ desktop apps - -The C++ project templates for include many item templates that you can use to perform tasks like adding new files and resources to your project. For a comprehensive list, see [Using Visual C++ Add New Item Templates](/cpp/build/reference/using-visual-cpp-add-new-item-templates). - -## .NET templates - -Visual Studio provides a variety of project templates for building desktop Windows apps that use .NET and C#. To use these project templates, you must include the **.NET desktop development** workload when you install Visual Studio. - -To access the .NET C# project templates when you create a new project in Visual Studio, filter the language to **C#**, the platform to **Windows**, and the project type to **Desktop**. - -![.NET C# project templates](images/dotnet-projects-csharp.png) - -You can use these project templates to create apps using C# and .NET. - -| Template | Description | -|----------|----------| -| WPF Application | Creates a [WPF](/dotnet/framework/wpf/) app that targets [.NET 6](/dotnet/core/whats-new/dotnet-6) (or later). For a walkthrough of this project template, see [Create a WPF application](/visualstudio/get-started/csharp/tutorial-wpf). | -| WPF App (.NET Framework) | Creates a [WPF](/dotnet/framework/wpf/) app that targets the [.NET Framework](/dotnet/framework/). For a walkthrough of this project template, see [Tutorial: Create your first WPF application](/dotnet/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application). | -| Windows Forms App | Creates a [Windows Forms](/dotnet/framework/winforms/) app that targets [.NET 6](/dotnet/core/whats-new/dotnet-6) (or later). | -| Windows Forms App (.NET Framework) | Creates a [Windows Forms](/dotnet/framework/winforms/) app that targets the [.NET Framework](/dotnet/framework/). For a walkthrough of this project template, see [Create a Windows Forms app in Visual Studio with C#](/visualstudio/ide/create-csharp-winform-visual-studio). | -| Windows Application Packaging Project | Creates a project that you can use to build a WPF or Windows Forms app into an [MSIX package](/windows/msix/overview). This provides a modern deployment experience, the ability to integrate with Windows features via package extensions, and much more. For more information, see [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net). | diff --git a/hub/apps/develop/accessibility.md b/hub/apps/develop/accessibility.md deleted file mode 100644 index a74224a7d1..0000000000 --- a/hub/apps/develop/accessibility.md +++ /dev/null @@ -1,251 +0,0 @@ ---- -title: Accessibility in Windows 11 and Windows 10 -description: This page provides the information for you to get started developing accessible Windows apps. -ms.topic: article -ms.date: 11/28/2023 -keywords: Accessibility in Windows 10, Accessibility, building accessible win32 apps, building accessible UWP apps, building accessible WPF apps, building accessible WinForms apps ---- - -# Accessibility in Windows 11 and Windows 10 - -![Accessibility hero image](images/hero-accessibility-bar-smaller.png) - -## Build accessibility into your applications to empower people of all abilities - -Products and services—including electronic media—are accessible when they are designed to provide full and successful experiences for as many people as possible. - -Build accessible and inclusive Windows applications, with improved functionality and usability, for people with disabilities (both temporary and permanent), personal preferences, specific work styles, or situational constraints (such as shared work spaces, driving, cooking, glare, and so on). Some common solutions include providing information in alternative formats (such as captions on a video) or enabling the use of assistive technologies (such as screen readers). - -**Everyone should have access to the same rooms in a building, whether they need to use the stairs or the elevator.** - -This page provides information on how the various Windows development frameworks provide accessibility support for developers building Windows applications, assistive technology developers building tools such as screen readers and magnifiers, and software test engineers creating automated scripts for testing applications. - -## Platform-specific documentation - -:::row::: - :::column::: - ![Universal Windows Platform (UWP)](images/platform-uwp.png) - - **Universal Windows Platform (UWP)** - - Develop accessible apps and tools on the modern platform for Windows applications and games on any Windows device (including PCs, phones, Xbox, HoloLens, and more), and publish them to the Microsoft Store. - - [Designing inclusive software](/windows/uwp/accessibility/designing-inclusive-software) - - [Developing inclusive Windows apps](/windows/uwp/accessibility/developing-inclusive-windows-apps) - - [Accessibility testing](/windows/uwp/accessibility/accessibility-testing) - - [Accessibility in the Store](/windows/uwp/accessibility/accessibility-in-the-store) - :::column-end::: - :::column::: - ![Win32 platform apps](images/platform-win32.png) - - **Win32 platform** - - Develop accessible apps and tools on the original platform for C/C++ Windows applications. - - [What's new in Windows accessibility and automation](/windows/desktop/accessibility-whatsnew) - - [Developing accessible applications for Windows](/windows/desktop/accessibility-appdev) - - [Developing accessible UI frameworks for Windows](/windows/desktop/accessibility-uiframeworkdev) - - [Developing assistive technology for Windows](/windows/desktop/accessibility-atdev) - - [Testing for accessibility](/windows/desktop/accessibility-testwithuia) - - [Legacy accessibility and automation technology - MSAA to UI Automation](/windows/desktop/accessibility-legacy) - - [Windows Accessibility features](/windows/desktop/winauto/about-windows-accessibility-features) - - [Guidelines for designing accessible apps](/windows/desktop/uxguide/inter-accessibility) - :::column-end::: -:::row-end::: -:::row::: - :::column::: - ![WPF platform](images/platform-wpf2-small.png) - - **Windows Presentation Foundation (WPF)** - - Develop accessible apps and tools on the established platform for managed Windows applications with a XAML UI model and the .NET Framework. - - [Accessibility Best Practices](/dotnet/framework/ui-automation/accessibility-best-practices) - - [UI Automation Fundamentals](/dotnet/framework/ui-automation/index) - - [UI Automation Providers for Managed Code](/dotnet/framework/ui-automation/ui-automation-providers-for-managed-code) - - [UI Automation Clients for Managed Code](/dotnet/framework/ui-automation/ui-automation-clients-for-managed-code) - - [UI Automation Control Patterns](/dotnet/framework/ui-automation/ui-automation-control-patterns) - - [UI Automation Text Pattern](/dotnet/framework/ui-automation/ui-automation-text-pattern) - - [UI Automation Control Types](/dotnet/framework/ui-automation/ui-automation-control-types) - - [UI Automation Specification and Community Promise](/dotnet/framework/ui-automation/ui-automation-specification-and-community-promise) - :::column-end::: - :::column::: - ![Windows Forms platform apps](images/platform-winforms.png) - - **Windows Forms (WinForms)** - - Develop accessible apps and tools for managed Windows applications with a XAML UI model and the .NET Framework. - - [Windows Forms Accessibility](/dotnet/framework/winforms/advanced/windows-forms-accessibility) - - [Creating an Accessible Windows Application](/dotnet/framework/winforms/advanced/walkthrough-creating-an-accessible-windows-based-application) - - [Properties on Windows Forms Controls That Support Accessibility Guidelines](/dotnet/framework/winforms/advanced/properties-on-windows-forms-controls-that-support-accessibility-guidelines) - - [Providing Accessibility Information for Controls on a Windows Form](/dotnet/framework/winforms/controls/providing-accessibility-information-for-controls-on-a-windows-form) - :::column-end::: -:::row-end::: -:::row::: - :::column span="2"::: - **Web accessibility** - - Design, build, and test accessible web sites in Microsoft Edge. - :::column-end::: -:::row-end::: -:::row::: - :::column::: - [Introduction to web accessibility](/microsoft-edge/accessibility) - - [Designing accessible websites](/microsoft-edge/accessibility/design) - :::column-end::: - :::column::: - [Building accessible websites](/microsoft-edge/accessibility/build) - - [Testing accessible websites](/microsoft-edge/accessibility/test) - :::column-end::: -:::row-end::: - -## Samples - -Download and run full Windows samples that demonstrate various accessibility features and functionality. - -:::row::: - :::column::: - [Code sample browser](/samples/browse/) - - The new samples browser replacing the MSDN Code Gallery. - :::column-end::: - :::column::: - [MSDN Code Gallery (GitHub archive)](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/master/Official%20Windows%20Platform%20Sample) - - Download samples for Windows, Windows Phone, Microsoft Azure, Office, SharePoint, Silverlight and other products. - :::column-end::: -:::row-end::: -:::row::: - :::column::: - [Windows classic samples on GitHub](https://github.com/microsoft/Windows-classic-samples/search?q=accessibility&unscoped_q=accessibility) - - These samples demonstrate the functionality and programming model for Windows and Windows Server. - :::column-end::: - :::column::: - [Universal Windows Platform (UWP) samples on GitHub](https://github.com/microsoft/Windows-universal-samples/search?q=accessibility&unscoped_q=accessibility) - - These samples demonstrate the API usage patterns for the Universal Windows Platform (UWP) in the Windows Software Development Kit (SDK) for Windows 10 and later. - :::column-end::: -:::row-end::: -:::row::: - :::column span="2"::: - [WinUI 2 Gallery](https://github.com/Microsoft/WinUI-Gallery) - - This app demonstrates the various Xaml controls supported in the Fluent Design System. - :::column-end::: -:::row-end::: - -## Videos - -Various videos covering how to build accessible Windows applications to general accessibility concerns and how Microsoft addresses them. - -:::row::: - :::column::: - **Microsoft's Accessibility API** - :::column-end::: - :::column::: - **Introduction to disability and accessibility** - :::column-end::: -:::row-end::: -:::row::: - :::column::: - > [!VIDEO https://www.youtube.com/embed/6b0K2883rXA] - :::column-end::: - :::column::: - > [!VIDEO https://www.youtube.com/embed/Kl4CT4DaypM] - :::column-end::: -:::row-end::: -:::row::: - - - -:::row-end::: -:::row::: - :::column::: - **One Dev Minute: Developing apps for accessibility** - :::column-end::: - :::column::: - **Windows 11 accessibility features empower everyone** - :::column-end::: - :::column::: - **Making the mouse pointers easier to see** - :::column-end::: -:::row-end::: -:::row::: - :::column::: - > [!VIDEO 001a0bd5-c137-4a17-b45f-9f4368bf379d] - :::column-end::: - :::column::: - > [!VIDEO https://www.youtube.com/embed/uDzVBNry31s] - :::column-end::: - :::column::: - > [!VIDEO https://www.youtube.com/embed/BoME-Wr_jNw] - :::column-end::: -:::row-end::: - -## Other resources - -:::row::: - :::column span="3"::: - **Blogs and news** - - The latest from the world of Microsoft accessibility. - :::column-end::: -:::row-end::: -:::row::: - :::column::: - [In the news](https://news.microsoft.com/presskits/accessibility/) - :::column-end::: - :::column::: - [Accessibility blogs](https://blogs.microsoft.com/accessibility/) - :::column-end::: - :::column::: - [Windows UI Automation blogs](/archive/blogs/winuiautomation/) - :::column-end::: -:::row-end::: -:::row::: - :::column span="3"::: - **Community and support** - - A place where Windows developers and users meet and learn together. - :::column-end::: -:::row-end::: -:::row::: - :::column::: - [Windows community - Accessibility](https://answers.microsoft.com/en-us/search/search?SearchTerm=windows%20accessibility) - :::column-end::: - :::column::: - [Windows Accessibility and Automation Development Forum](https://social.msdn.microsoft.com/Forums/windows/home?forum=windowsaccessibilityandautomation) - :::column-end::: -:::row-end::: -:::row::: - :::column::: - [Stack Overflow](https://stackoverflow.com/questions/tagged/windows+accessibility) - :::column-end::: - :::column::: - [Disability Answer Desk](https://www.microsoft.com/Accessibility/disability-answer-desk) - :::column-end::: -:::row-end::: diff --git a/hub/apps/develop/app-lifecycle-and-system-services.md b/hub/apps/develop/app-lifecycle-and-system-services.md deleted file mode 100644 index 5b0b409912..0000000000 --- a/hub/apps/develop/app-lifecycle-and-system-services.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: App lifecycle, background tasks, and system services in Windows apps -description: This article provides an index of development features that are related to scenarios involving managing the lifecycle of Windows apps and system-level services. -ms.date: 02/13/2025 -ms.topic: concept-article -keywords: windows 11, winui, background task, app service, connected devices, remote systems, app lifecycle -ms.localizationpriority: medium -# Customer intent: As a Windows developer, I want to learn about the features available for managing the lifecycle of Windows apps and using system-level services. ---- - -# App lifecycle, background tasks, and system services - -This article provides an index of development features that are related to scenarios involving managing the lifecycle of Windows apps and using system-level services provided by the Windows OS. - -## Windows App SDK features - -The [Windows App SDK](../windows-app-sdk/index.md) provides the following features related to app lifecycle and system services for Windows 10 and later OS releases. - -[!INCLUDE [UWP migration guidance](../windows-app-sdk/includes/uwp-app-sdk-migration-pointer.md)] - -| Feature | Description | -|---------|-------------| -| [App lifecycle](../windows-app-sdk/applifecycle/applifecycle.md) | Get an overview of managing the lifecycle of your app. | -| [App instancing](../windows-app-sdk/applifecycle/applifecycle-instancing.md) | Control whether multiple instances of your app's process can run at the same time. | -| [Background tasks](../windows-app-sdk/applifecycle/background-tasks.md) | Background tasks are app components that run in the background without a user interface. They can perform actions such as downloading files, syncing data, sending notifications, or updating tiles. | -| [Rich activation](../windows-app-sdk/applifecycle/applifecycle-rich-activation.md) | Receive information about different kinds activations for your app. | -| [Power management](../windows-app-sdk/applifecycle/applifecycle-power.md) | Get visibility into how your app affects the device's power state, and enable your app to make intelligent decisions about resource usage. | -| [Restart](../windows-app-sdk/applifecycle/applifecycle-restart.md) | Programmatically restart your application and set restart options after app termination. | - -## Windows OS features - -Windows 10 and later OS releases provide a wide variety of APIs related to app lifecycle and system services for apps. These features are available via a combination of WinRT and Win32 (C++ and COM) APIs provided by the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk). - -### WinRT APIs - -The following articles provide information about features available via WinRT APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [Use app services and extensions](/windows/uwp/launch-resume/app-services) | Learn how to integrate app services into your Windows app to allow the sharing of data and functionality across apps. | -| [Support your app with background tasks](/windows/uwp/launch-resume/support-your-app-with-background-tasks) | Learn how make lightweight code run in the background in response to triggers. | -| [Launch an app through file activation](/windows/uwp/launch-resume/launch-app-from-file) | Learn how to set up your app to launch when a file of a certain type is opened. | -| [Launch an app with a URI](/windows/uwp/launch-resume/launch-app-with-uri) | Learn how to use a Uniform Resource Identifier (URI) to launch one app from another app, enabling helpful app-to-app scenarios. | -| [Threading and async programming](/windows/uwp/threading-async/) | Learn how to use the thread pool to accomplish work asynchronously in parallel threads. | - -### Win32 (C++ and COM) APIs - -The following articles provide information about features available via Win32 (C++ and COM) APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [System services](/windows/desktop/system-services) | Learn about system services available to apps, including COM, Windows messaging, service applications, and much more. | -| [Memory management](/windows/desktop/memory/memory-management) | Learn how to use virtual memory, memory mapped files, copy-on-write memory, large memory support, and other memory related features in your app. | -| [Processes and threads](/windows/desktop/procthread/processes-and-threads) | Learn how to control processes, threads, jobs, and other units of code execution in your app. | -| [Windows system information](/windows/desktop/sysinfo/windows-system-information) | Learn how to access system information including the registry, handles and objects, and more. | - -## .NET features - -The .NET SDK also provides APIs related to system services for WPF and Windows Forms apps. - -| Article | Description | -|---------|-------------| -| [Threading model (WPF)](/dotnet/framework/wpf/advanced/threading-model) | Learn about the threading model of WPF apps. | -| [System information](/dotnet/framework/winforms/advanced/system-information-and-windows-forms) | Learn how to access system information in Windows Forms apps. | diff --git a/hub/apps/develop/audio-video-camera.md b/hub/apps/develop/audio-video-camera.md deleted file mode 100644 index 46c492cb6e..0000000000 --- a/hub/apps/develop/audio-video-camera.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Audio, video, and camera -description: This article provides an index of development features that are related to scenarios involving audio, video, and camera in Windows apps. -ms.topic: article -ms.date: 10/13/2021 -keywords: ---- - -# Audio, video, and camera - -This article provides an index of development features that are related to scenarios involving audio, video, and camera in Windows apps. - - -## Windows OS features - -Windows 10 and later OS releases provide a wide variety of APIs related to audio, video, and camera scenarios for apps. These features are available via a combination of WinRT and Win32 (C++ and COM) APIs provided by the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk). - -#### WinRT APIs - -The following articles provide information about features available via WinRT APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [Camera](./camera/camera.md) | Learn about how to use the camera or microphone to capture photos, video, or audio. | -| [Media playback](/windows/uwp/audio-video-camera/media-playback/) | Learn about how to play back audio and video in your apps. | -| [Visual layer](/windows/uwp/composition/visual-layer) | The Visual layer provides a high performance, retained-mode API for graphics, effects and animations, and is the foundation for all UI across Windows devices. | -| [XAML platform](/windows/uwp/xaml-platform/) | Describes the XAML language and concepts to apps that use a WinRT XAML-based UI, including XAML UI components provided by Windows 10 and later as well as WinUI. | - -#### Win32 (C++ and COM) APIs - -The following articles provide information about features available via Win32 (C++ and COM) APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [Audio and video](/windows/desktop/audio-and-video) | Learn about features for integrating audio and video into your apps. | -| [Graphics and gaming](/windows/desktop/graphics-and-multimedia) | Learn about features involving graphics, gaming, and imaging. | -| [DirectX](/windows/desktop/getting-started-with-directx-graphics) | Learn about how to use DirectX APIs to create games and other high-performance multimedia apps using 2D and 3D graphics. | -| [Direct2D](/windows/desktop/direct2d/direct2d-portal) | Direct2D is a hardware-accelerated, immediate-mode, 2D graphics API that provides high performance and high-quality rendering for 2-D geometry, bitmaps, and text. | -| [Direct3D](/windows/desktop/direct3d) | Direct3D is a low-level API for drawing primitives with the rendering pipeline, or for performing parallel operations with the compute shader. | -| [GDI](/windows/desktop/gdi/windows-gdi) | The Windows Graphics Device Interface (GDI) is a low-level graphics API that enables apps to use two-dimensional vector graphics, imaging, and typography. | -| [GDI+](/windows/desktop/gdiplus/-gdiplus-gdi-start) | GDI+ improves on GDI by adding new features and by optimizing existing features. | - -## .NET features - -The .NET SDK also provides APIs related to audio, video, and camera scenarios for WPF and Windows Forms apps. - -| Article | Description | -|---------|-------------| -| [Graphics (WPF)](/dotnet/framework/wpf/graphics-multimedia/graphics) | Learn about support for multimedia, vector graphics, animation, and content composition in WPF apps. | -| [Multimedia (WPF)](/dotnet/framework/wpf/graphics-multimedia/multimedia-overview) | Learn about integrating audio and video into your WPF apps. | -| [Graphics and drawing (Windows Forms)](/dotnet/framework/winforms/advanced/graphics-and-drawing-in-windows-forms) | Learn how to create graphics, draw text, and manipulate graphical images in Windows Forms apps. | -| [SoundPlayer class (Windows Forms)](/dotnet/framework/winforms/controls/soundplayer-class-overview) | Learn how to include sounds in your Windows Forms applications. | diff --git a/hub/apps/develop/camera/basic-photo-capture.md b/hub/apps/develop/camera/basic-photo-capture.md deleted file mode 100644 index 5d5868ace6..0000000000 --- a/hub/apps/develop/camera/basic-photo-capture.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Basic photo, video, and audio capture with MediaCapture -description: Learn how to capture photos and video using the MediaCapture class. -ms.topic: article -ms.date: 07/23/2024 -ms.author: drewbat -author: drewbatgit -ms.localizationpriority: medium -#customer intent: As a developer, I want to access the camera in a Windows app using WinUI 3. ---- - -# Basic photo, video, and audio capture with MediaCapture in a WinUI 3 app - -This article shows the simplest way to capture photos and video using the [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) class. The **MediaCapture** class exposes a robust set of APIs that provide low-level control over the capture pipeline and enable advanced capture scenarios, but this article is intended to help you add basic media capture to your app quickly and easily. To learn about more of the features that **MediaCapture** provides, see [**Camera**](camera.md). - -## Initialize the MediaCapture object - -All of the capture methods described in this article require the first step of initializing the [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) object. This includes instantiating the object, selecting a capture device, setting initialization parameters, and then calling [**InitializeAsync**](/uwp/api/windows.media.capture.mediacapture.initializeasync). Typically camera apps will display the camera preview while capturing photos or video in their UI using the [MediaPlayerElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.mediaplayerelement). For a walkthrough of initializing **MediaCapture** and showing the preview in a XAML UI, see [Show the camera preview in a WinUI 3 app](camera-quickstart-winui3.md). The code examples in this article will assume that an initialized instance of **MediaCapture** has already been created. - -## Capture a photo to a SoftwareBitmap - -The [**SoftwareBitmap**](/uwp/api/Windows.Graphics.Imaging.SoftwareBitmap) class provides a common representation of images across multiple features. If you want to capture a photo and then immediately use the captured image in your app, such as displaying it in XAML, instead of capturing to a file, then you should capture to a **SoftwareBitmap**. You still have the option of saving the image to disk later. - -Capture a photo to a **SoftwareBitmap** using the [**LowLagPhotoCapture**](/uwp/api/Windows.Media.Capture.LowLagPhotoCapture) class. Get an instance of this class by calling [**PrepareLowLagPhotoCaptureAsync**](/uwp/api/windows.media.capture.mediacapture.preparelowlagphotocaptureasync), passing in an [**ImageEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.ImageEncodingProperties) object specifying the image format you want. [**CreateUncompressed**](/uwp/api/windows.media.mediaproperties.imageencodingproperties.createuncompressed) creates an uncompressed encoding with the specified pixel format. Initiate photo capture by calling [**CaptureAsync**](/uwp/api/windows.media.capture.lowlagphotocapture.captureasync), which returns a [**CapturedPhoto**](/uwp/api/Windows.Media.Capture.CapturedPhoto) object. Get a **SoftwareBitmap** by accessing the [**Frame**](/uwp/api/windows.media.capture.capturedphoto.frame) property and then the [**SoftwareBitmap**](/uwp/api/windows.media.capture.capturedframe.softwarebitmap) property. - -You can capture multiple photos by repeatedly calling **CaptureAsync**. When you are done capturing, call [**FinishAsync**](/uwp/api/windows.media.capture.advancedphotocapture.finishasync) to shut down the **LowLagPhotoCapture** session and free up the associated resources. After calling **FinishAsync**, to begin capturing photos again you will need to call [**PrepareLowLagPhotoCaptureAsync**](/uwp/api/windows.media.capture.mediacapture.preparelowlagphotocaptureasync) again to reinitialize the capture session before calling [**CaptureAsync**](/uwp/api/windows.media.capture.lowlagphotocapture.captureasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraLowLagPhotoCapture"::: - -## Capture a photo to a memory stream - -You can use **MediaCapture** to capture a photo to an in-memory stream, which you can then use to transcode the photo from the stream to a file on disk. - -Create an [**InMemoryRandomAccessStream**](/uwp/api/Windows.Storage.Streams.InMemoryRandomAccessStream) and then call [**CapturePhotoToStreamAsync**](/uwp/api/windows.media.capture.mediacapture.capturephototostreamasync) to capture a photo to the stream, passing in the stream and an [**ImageEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.ImageEncodingProperties) object specifying the image format that should be used. You can create custom encoding properties by initializing the object yourself, but the class provides static methods, like [**ImageEncodingProperties.CreateJpeg**](/uwp/api/windows.media.mediaproperties.imageencodingproperties.createjpeg) for common encoding formats. - -Create a [**BitmapDecoder**](/uwp/api/Windows.Graphics.Imaging.BitmapDecoder) to decode the image from the in memory stream. Create a [**BitmapEncoder**](/uwp/api/Windows.Graphics.Imaging.BitmapEncoder) to encode the image to file by calling [**CreateForTranscodingAsync**](/uwp/api/windows.graphics.imaging.bitmapencoder.createfortranscodingasync). - -You can optionally create a [**BitmapPropertySet**](/uwp/api/Windows.Graphics.Imaging.BitmapPropertySet) object and then call [**SetPropertiesAsync**](/uwp/api/windows.graphics.imaging.bitmapproperties.setpropertiesasync) on the image encoder to include metadata about the photo in the image file. For more information about encoding properties, see [**Image metadata**](/windows/uwp/audio-video-camera/image-metadata). - -Finally, call [**FlushAsync**](/uwp/api/windows.graphics.imaging.bitmapencoder.flushasync) on the encoder object to transcode the photo from the in-memory stream to the file. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraLowLagPhotoCapture"::: - - -## Capture a video - -Quickly add video capture to your app by using the [**LowLagMediaRecording**](/uwp/api/Windows.Media.Capture.LowLagMediaRecording) class. - -First, the **LowLagMediaRecording** needs to persist while video is being captured, so declare a class variable to for the object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraDeclareLowLagMediaRecording"::: - - -Call [**PrepareLowLagRecordToStorageFileAsync**](/uwp/api/windows.media.capture.mediacapture.preparelowlagrecordtostoragefileasync) to initialize the media recording, passing in the storage file and a [**MediaEncodingProfile**](/uwp/api/Windows.Media.MediaProperties.MediaEncodingProfile) object specifying the encoding for the video. The class provides static methods, like [**CreateMp4**](/uwp/api/windows.media.mediaproperties.mediaencodingprofile.createmp4), for creating common video encoding profiles. Call [**StartAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.startasync) to begin capturing video. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraStartLowLagMediaRecording"::: - - -To stop recording video, call [**StopAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.stopasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraStopLowLagMediaRecording"::: - -You can continue to call **StartAsync** and **StopAsync** to capture additional videos. When you are done capturing videos, call [**FinishAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.finishasync) to dispose of the capture session and clean up associated resources. After this call, you must call **PrepareLowLagRecordToStorageFileAsync** again to reinitialize the capture session before calling **StartAsync**. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraFinalizeLowLagMediaRecording"::: - -When capturing video, you should register a handler for the [**RecordLimitationExceeded**](/uwp/api/windows.media.capture.mediacapture.recordlimitationexceeded) event of the **MediaCapture** object, which will be raised by the operating system if you surpass the limit for a single recording, currently three hours. In the handler for the event, you should finalize your recording by calling [**StopAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.stopasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraRecordLimitationExceeded"::: - - -You can pause a video recording and then resume recording without creating a separate output file by calling [**PauseAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.pauseasync) and then calling [**ResumeAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.resumeasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraPauseVideoCapture"::: - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraResumeVideoCapture"::: - -Calling [**PauseWithResultAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.pausewithresultasync) returns a [**MediaCapturePauseResult**](/uwp/api/Windows.Media.Capture.MediaCapturePauseResult) object. The [**LastFrame**](/uwp/api/windows.media.capture.mediacapturepauseresult.lastframe) property is a [**VideoFrame**](/uwp/api/Windows.Media.VideoFrame) object representing the last frame. To display the frame in XAML, get the **SoftwareBitmap** representation of the video frame. Currently, only images in BGRA8 format with premultiplied or empty alpha channel are supported, so call [**Convert**](/uwp/api/windows.graphics.imaging.softwarebitmap.convert) if necessary to get the correct format. **PauseWithResultAsync** also returns the duration of the video that was recorded in the preceding segment in case you need to track how much total time has been recorded. - -You can also get a result frame when you stop the video by calling [**StopWithResultAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.stopwithresultasync). - -### Play and edit captured video files - -Once you have captured a video to a file, you may want to load the file and play it back within your app's UI. You can do this using the **[MediaPlayerElement](/uwp/api/Windows.UI.Xaml.Controls.MediaPlayerElement)** XAML control and an associated **[MediaPlayer](/uwp/api/windows.media.playback.mediaplayer)**. For information on playing media in a XAML page, see [Play audio and video with MediaPlayer](/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer). - -[TBD - Is the MediaComposition framework supported / recommended for WinUI?] - -You can also create a **[MediaClip](/uwp/api/windows.media.editing.mediaclip)** object from a video file by calling **[CreateFromFileAsync](/uwp/api/windows.media.editing.mediaclip.createfromfileasync)**. A **[MediaComposition](/uwp/api/windows.media.editing.mediacomposition)** provides basic video editing functionality like arranging the sequence of **MediaClip** objects, trimming video length, creating layers, adding background music, and applying video effects. For more information on working with media compositions, see [Media compositions and editing](/windows/uwp/audio-video-camera/media-compositions-and-editing). - - -## Capture audio - -You can quickly add audio capture to your app by using the same technique shown above for capturing video. Call [**PrepareLowLagRecordToStorageFileAsync**](/uwp/api/windows.media.capture.mediacapture.preparelowlagrecordtostoragefileasync) to initialize the capture session, passing in the file and a [**MediaEncodingProfile**](/uwp/api/Windows.Media.MediaProperties.MediaEncodingProfile) which is generated in this example by the [**CreateMp3**](/uwp/api/windows.media.mediaproperties.mediaencodingprofile.createmp3) static method. To begin recording, call [**StartAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.startasync). - -[TBD - This code is throwing 'The request is invalid in the current state.'] - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraStartAudioCapture"::: - - -Call [**StopAsync**](/uwp/api/windows.media.capture.lowlagphotosequencecapture.stopasync) to stop the audio recording. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraStopAudioCapture"::: - -You can call **StartAsync** and **StopAsync** multiple times to record several audio files. When you are done capturing audio, call [**FinishAsync**](/uwp/api/windows.media.capture.lowlagmediarecording.finishasync) to dispose of the capture session and clean up associated resources. After this call, you must call **PrepareLowLagRecordToStorageFileAsync** again to reinitialize the capture session before calling **StartAsync**. - -For information about detecting when the system changes the audio level of the audio capture stream, see [Detect and respond to audio level changes by the system](detect-audio-level-changes.md). - diff --git a/hub/apps/develop/camera/camera-privacy-setting.md b/hub/apps/develop/camera/camera-privacy-setting.md deleted file mode 100644 index 58945054b6..0000000000 --- a/hub/apps/develop/camera/camera-privacy-setting.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -description: Learn how apps should handle the Windows camera privacy setting. -title: Handle the Windows camera privacy setting -ms.date: 10/23/2024 -ms.topic: how-to -keywords: windows 10, winui 3 -dev_langs: -- csharp -ms.localizationpriority: medium ---- - - -# Handle the Windows camera privacy setting - -Windows allows users to grant or deny access to the device's camera in the Windows Settings app, under **Privacy & Security -> Camera**. Camera access can be disabled for the entire device, for all unpackaged apps, or for individual packaged apps. This article describes the best practices for checking whether your app has access to the camera and handling the case where access is denied by the user. - -## Check for access before initializing the camera - -For packaged apps, you should check to see if your app has camera access before initializing the camera. Use the [AppCapability](/uwp/api/windows.security.authorization.appcapabilityaccess.appcapability) class to determine if your app has access. - -### [C#](#tab/cs) - -```csharp -bool cameraCapabilityAccess = false; -private void CheckCameraAccessStatus() -{ - var status = AppCapability.Create("Webcam").CheckAccess(); - - if (status == AppCapabilityAccessStatus.Allowed) - { - cameraCapabilityAccess = true; - cameraButton.IsEnabled = true; - } - else - { - cameraCapabilityAccess = false; - cameraButton.IsEnabled = false; - } -} -``` - -### [C++](#tab/cpp) - -```cpp -bool cameraCapabilityAccess; -void MainWindow::CheckCameraAccessStatus() -{ - auto status = AppCapability::Create(L"Webcam").CheckAccess(); - - if (status == AppCapabilityAccessStatus::Allowed) - { - cameraCapabilityAccess = true; - cameraButton().IsEnabled(true); - } - else - { - cameraCapabilityAccess = false; - cameraButton().IsEnabled(false); - } -} -``` ---- - -## Handle the access denied error - -The Windows camera capture APIs will return the error **E_ACCESSDENIED** when apps attempt to access the camera capture device if the user has disabled camera in the camera privacy Settings page. Apps should check for this error when initializing the capture device. If the initialization fails with this error, it is recommended that you direct the user to the camera privacy Settings page and potentially enable access for your app. The camera privacy Settings page can be launched using the URI `ms-settings:privacy-webcam`. - -The following example illustrates how to check for E_ACCESSDENIED when calling [MediaCapture.InitializeAsync](/uwp/api/windows.media.capture.mediacapture.initializeasync). - -### [C#](#tab/cs) - -```csharp -try -{ - await mediaCapture.InitializeAsync(mediaCaptureInitializationSettings); -} -catch (System.UnauthorizedAccessException ex) -{ - // E_ACCESSDENIED, 0x80070005 in hexadecimal, -2147024891 in decimal - if (ex.HResult == -2147024891) - { - StatusTextBlock.Text = "Access to the camera has been denied." + - "Click the Settings button to check the camera privacy settings"; - } - - return; -} -... -// Launch the camera privacy Settings page -private async void LaunchSettingsButton_Click(object sender, RoutedEventArgs e) -{ - bool result = await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings:privacy-webcam")); -} -``` - -### [C++](#tab/cpp) - -```cpp -try -{ - co_await mediaCapture.InitializeAsync(mediaCaptureInitializationSettings); -} -catch (winrt::hresult_error const& ex) -{ - winrt::hresult hr = ex.code(); - if (hr == 0x80070005) - { - StatusTextBlock().Text(L"Access to the camera has been denied. Click the Settings button to check the camera privacy settings."); - } - - co_return; -} -``` - ---- - -The following example illustrates handling the E_ACCESSDENIED error returned from [IMFActivate::ActivateObject](/windows/win32/api/mfobjects/nf-mfobjects-imfactivate-activateobject) when initializing an [IMFMediaSource](/windows/win32/api/mfidl/nn-mfidl-imfmediasource) for a capture device. - -```cpp -IMFMediaSource* pSource = NULL; -IMFAttributes* pAttributes = NULL; -IMFActivate** ppDevices = NULL; - -// Create an attribute store to specify the enumeration parameters. -HRESULT hr = MFCreateAttributes(&pAttributes, 1); -if (FAILED(hr)) -{ - goto done; -} - -// Source type: video capture devices -hr = pAttributes->SetGUID( - MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, - MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID -); -if (FAILED(hr)) -{ - goto done; -} - -// Enumerate devices. -UINT32 count; -hr = MFEnumDeviceSources(pAttributes, &ppDevices, &count); -if (FAILED(hr)) -{ - goto done; -} - -if (count == 0) -{ - hr = E_FAIL; - goto done; -} - -// Create the media source object. -hr = ppDevices[0]->ActivateObject(IID_PPV_ARGS(&pSource)); -if (FAILED(hr)) -{ - if (hr == E_ACCESSDENIED) - { - int response = MessageBox(hWnd, L"Access to the camera was denied. Open the camera privacy settings?", L"Error", MB_YESNO); - if (response == IDYES) - { - ShellExecute(NULL, L"open", L"ms-settings:privacy-webcam", L"", L".", SW_SHOWDEFAULT); - } - } - goto done; -} -``` - -## Implement fallback behavior - -Apps should implement the previous steps to alert the user detect and alert the user that camera access is restricted due to privacy settings and to direct the user to the camera privacy Settings page to allow them to update their settings. After these steps, the app should retry camera initialization to see if access has been granted. If the user declines to update their settings to allow your app to access to the camera, consider providing alternative functionality. For example, you could disable camera features, switch to a different mode, or display a placeholder image in place of the camera preview. diff --git a/hub/apps/develop/camera/camera-profiles.md b/hub/apps/develop/camera/camera-profiles.md deleted file mode 100644 index 1ea7dbb6a1..0000000000 --- a/hub/apps/develop/camera/camera-profiles.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -description: Learn how to use camera profiles to support specific resolutions, frame rates, simultaneous access to multiple cameras, and and HDR in a WinUI 3 app. -title: Discover and select camera capabilities with camera profiles -ms.date: 08/13/2024 -ms.topic: article -keywords: windows 10, windows 11, winui3, camera -ms.localizationpriority: medium -#customer intent: As a developer, I want to use camera profiles to select camera capabilities with MediaCapture in a Windows app using WinUI 3. ---- - - -# Discover and select camera capabilities with camera profiles in a WinUI 3 app - -This article shows how to use camera profiles to discover and manage the capabilities of different video capture devices. This includes tasks such as selecting profiles that support specific resolutions or frame rates, profiles that support simultaneous access to multiple cameras, and profiles that support HDR. - -## About camera profiles - -Cameras on different devices support different capabilities including the set of supported capture resolutions, frame rate for video captures, and whether HDR or variable frame rate captures are supported. A set of supported capabilities is defined in a [**MediaCaptureVideoProfileMediaDescription**](/uwp/api/Windows.Media.Capture.MediaCaptureVideoProfileMediaDescription) object. A camera profile, represented by a [**MediaCaptureVideoProfile**](/uwp/api/Windows.Media.Capture.MediaCaptureVideoProfile) object, has three collections of media descriptions; one for photo capture, one for video capture, and another for video preview. - -Before initializing your [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) object, you can query the capture devices on the current device to see what profiles are supported. When you select a supported profile, you know that the capture device supports all of the capabilities in the profile's media descriptions. This eliminates the need for a trial and error approach to determining which combinations of capabilities are supported on a particular device. - -## Find a camera that supports camera profiles - -To use camera profiles, you must first check for a camera device that supports the use of camera profiles. The example below shows how to use the [**DeviceInformation.FindAllAsync**](/uwp/api/windows.devices.enumeration.deviceinformation.findallasync) method to retrieve a list of all available video capture devices on either the front or back panel of the current device. It loops through all of the devices in the list, calling the static method, [**IsVideoProfileSupported**](/uwp/api/windows.media.capture.mediacapture.isvideoprofilesupported), for each device to see if it supports video profiles. - -If a device that supports camera profiles is found on the specified panel, the [**Id**](/uwp/api/windows.devices.enumeration.deviceinformation.id) value, containing the device's ID string, is returned. - -:::code language="xaml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetGetVideoProfileSupportedDeviceIdAsync"::: - -If the device ID returned from the **GetVideoProfileSupportedDeviceIdAsync** helper method is null or an empty string, there is no device on the specified panel that supports camera profiles. In this case, you should initialize your media capture device without using profiles. - -:::code language="xaml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetGetDeviceWithProfileSupport"::: - -## Select a profile based on supported resolution and frame rate - -To select a profile with particular capabilities, such as with the ability to achieve a particular resolution and frame rate, use the method shown previously in this article to get the ID of a capture device that supports using camera profiles. - -Create a new [**MediaCaptureInitializationSettings**](/uwp/api/Windows.Media.Capture.MediaCaptureInitializationSettings) object, passing in the selected device ID. Call the static method [**MediaCapture.FindAllVideoProfiles**](/uwp/api/windows.media.capture.mediacapture.findallvideoprofiles) to get a list of all camera profiles supported by the device. - -This example selects a profile that contains a [**SupportedRecordMediaDescription**](/uwp/api/windows.media.capture.mediacapturevideoprofile.supportedrecordmediadescription) object where the [**Width**](/uwp/api/windows.media.capture.mediacapturevideoprofilemediadescription.width), [**Height**](/uwp/api/windows.media.capture.mediacapturevideoprofilemediadescription.height), and [**FrameRate**](/uwp/api/windows.media.capture.mediacapturevideoprofilemediadescription.framerate) properties match the requested values. If a match is found, [**VideoProfile**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.videoprofile) and [**RecordMediaDescription**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.recordmediadescription) of the **MediaCaptureInitializationSettings** are set to the values returned from the query. If no match is found, the default profile is used. - -:::code language="xaml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetFindWVGA30FPSProfile"::: - -After you populate the **MediaCaptureInitializationSettings** with your desired camera profile, you simply call [**InitializeAsync**](/uwp/api/windows.media.capture.mediacapture.initializeasync) on your media capture object to configure it to the desired profile. - -:::code language="xaml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetInitCaptureWithProfile"::: - - -## Select devices with KnownVideoProfile - -You can use the [**MediaFrameSourceGroup**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup) class to get camera profiles with specific capabilities before initializing the **MediaCapture** object. Frame source groups allow device manufacturers to represent groups of sensors or capture capabilities as a single virtual device. This enables computational photography scenarios such as using depth and color cameras together, but can also be used to select camera profiles for simple capture scenarios. For more information on using **MediaFrameSourceGroup**, see [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md). - -The example below shows how to use **MediaFrameSourceGroup** to find a camera profile that supports that supports the desired scenario. Call [**MediaFrameSourceGroup.FindAllAsync**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.findallasync) to get a list of all media frame source groups available on the current device. Loop through each source group and call [**MediaCapture.FindKnownVideoProfiles**](/uwp/api/windows.media.capture.mediacapture.findknownvideoprofiles) to get a list of all of the video profiles for the current source group that support the specified [KnownCameraProfile](/uwp/api/windows.media.capture.knownvideoprofile), in this example the value **KnownVideoProfile.HighQualityPhoto** is used. Other values include support for HDR and variable photo sequences, for example. If a profile that meets the requested criteria is found, create a new **MediaCaptureInitializationSettings** object and set the **VideoProfile** to the select profile and the **VideoDeviceId** to the **Id** property of the current media frame source group. Use this **MediaCaptureInitializationSettings** object to initialize the **MediaCapture** object. - -:::code language="xaml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetKnownVideoProfile"::: - - -## Determine if a device supports simultaneous photo and video capture - -Many devices support capturing photos and video simultaneously. To determine if a capture device supports this, call [**MediaCapture.FindAllVideoProfiles**](/uwp/api/windows.media.capture.mediacapture.findallvideoprofiles) to get all of the camera profiles supported by the device. Use a link query to find a profile that has at least one entry for both [**SupportedPhotoMediaDescription**](/uwp/api/windows.media.capture.mediacapturevideoprofile.supportedphotomediadescription) and [**SupportedRecordMediaDescription**](/uwp/api/windows.media.capture.mediacapturevideoprofile.supportedrecordmediadescription) which means that the profile supports simultaneous capture. - -:::code language="xaml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetSimultaneousPhotoAndVideo"::: - -You can refine this query to look for profiles that support specific resolutions or other capabilities in addition to simultaneous video record. You can also use the [**MediaCapture.FindKnownVideoProfiles**](/uwp/api/windows.media.capture.mediacapture.findknownvideoprofiles) and specify the [**BalancedVideoAndPhoto**](/uwp/api/Windows.Media.Capture.KnownVideoProfile) value to retrieve profiles that support simultaneous capture, but querying all profiles will provide more complete results. - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) \ No newline at end of file diff --git a/hub/apps/develop/camera/camera-quickstart-winui3.md b/hub/apps/develop/camera/camera-quickstart-winui3.md deleted file mode 100644 index a5e5cbacce..0000000000 --- a/hub/apps/develop/camera/camera-quickstart-winui3.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Show the camera preview in a WinUI 3 app -description: Learn how to show the camera preview in a WinUI 3 app. -ms.topic: article -ms.date: 06/14/2024 -ms.author: drewbat -author: drewbatgit -ms.localizationpriority: medium -#customer intent: As a developer, I want to access the camera in a Windows app using WinUI 3. ---- - -# Show the camera preview in a WinUI 3 app - -In this quickstart, you will learn how to create a basic WinUI 3 camera app that displays the camera preview. In a WinUI 3 app, you use the [MediaPlayerElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.mediaplayerelement) control in the [Microsoft.UI.Xaml.Controls](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls) namespace to render the camera preview and the WinRT class [MediaCapture](/uwp/api/windows.media.capture.mediacapture) to access the device's camera preview stream. **MediaCapture** provides APIs for performing a wide range of camera-related tasks such as such as capturing photos and videos and configuring the camera's device driver. See the other articles in this section for details about other **MediaCapture** features. - -The code in this walkthrough is adapted from the [MediaCapture WinUI 3 sample on github](https://github.com/microsoft/Windows-Camera/tree/master/Samples/MediaCaptureWinUI3). - -> [!TIP] -> For the UWP version of this article, see [Display the camera preview](/windows/uwp/audio-video-camera/simple-camera-preview-access) in the UWP documentation. - -## Prerequisites - -- Your device must have developer mode enabled. For more information see [Enable your device for development](/windows/apps/get-started/enable-your-device-for-development). -- Visual Studio 2022 or later with the **WinUI application development** workload. - -## Create a new WinUI 3 app - -In Visual Studio, create a new project. In the **Create a new project** dialog, set the language filter to "C#" and the platform filter to "Windows", then select the "Blank App, Packaged (WinUI 3 in desktop)" project template. - - -## Create the UI - -The simple UI for this example includes a **MediaPlayerElement** control for displaying the camera preview, a [ComboBox](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.combobox) that allows you to select from the device's cameras, and buttons for initializing the **MediaCapture** class, starting and stopping the camera preview, and resetting the sample. We also include a [TextBlock](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textblock) for displaying status messages. - -In your project's MainWindow.xml file, replace the default **StackPanel** control with the following XAML. - -:::code language="xaml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetCameraWinUIXaml"::: - - -## Update the MainWindow class definition - -The rest of the code in this article will be added to the **MainWindow** class definition in your project's MainWindow.xaml.cs file. First, add a few class variables that will persist throughout the lifetime of the window. These variables include: - -- A [DeviceInformationCollection](/uwp/api/windows.devices.enumeration.deviceinformationcollection) that will store a [DeviceInformation](/uwp/api/windows.devices.enumeration.deviceinformation) object for each available camera. The **DeviceInformation** object conveys information such as the unique identifier and the friendly name for the camera. -- A **MediaCapture** object that handles interactions with the selected camera's driver and allows you to retrieve the camera's video stream. -- A [MediaFrameSource](/uwp/api/windows.media.capture.frames.mediaframesource) object that represents a source of media frames, such as a video stream. -- A boolean to track when the camera preview is running. Some camera settings can't be changed while the preview is running, so it's a good practice to track the state of the camera preview. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIClassVars"::: - - -## Populate the list of available cameras - -Next we'll create a helper method to detect the cameras that are present on the current device and populate the **ComboBox** in the UI with the camera names, allowing the user to select a camera to preview.The [DeviceInformation.FindAllAsync](/uwp/api/windows.devices.enumeration.deviceinformation.findallasync) allows you to query for many different kinds of devices. We use [MediaDevice.GetVideoCaptureSelector](/uwp/api/windows.media.devices.mediadevice.getvideocaptureselector) to retrieve the identifier that specifies that we only want to retrieve video capture devices. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIPopulateCameraList"::: - -Add a call to this helper method to the **MainWindow** class constructor so that the **ComboBox** gets populated when the window loads. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIConstructor"::: - - -## Initialize the MediaCapture object - -Initialize the **MediaCapture** object by calling [InitializeAsync](/uwp/api/windows.media.capture.mediacapture.initializeasync), passing in a [MediaCaptureInitializationSettings](/uwp/api/windows.media.capture.mediacaptureinitializationsettings) object containing the requested initialization parameters. There are a lot of optional initialization parameters that enable different scenarios. See the API reference page for the complete list. In this simple example we specify a few basic settings, including: - -- The [VideoDeviceId](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.videodeviceid) property specifies the unique identifier of the camera that the **MediaCapture** will attach to. We get the device ID from the **DeviceInformationCollection**, using the selected index of the **ComboBox**. -- The [SharingMode](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.sharingmode) property specifies whether the app is requesting shared, read-only access to the camera, which allows you to view and capture from the video stream, or exclusive control of the camera, which allows you to change the camera configuration. Multiple apps can read from a camera simultaneously, but only one app at a time can have exclusive control. -- The [StreamingCaptureMode](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.streamingcapturemode) property specifies whether we want to capture video, audio, or audio and video. -- The [MediaCaptureMemoryPreference](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.memorypreference) allows us to request to specifically use CPU memory for video frames. The value **Auto** lets the system use GPU memory if it's available. - -Before initializing the **MediaCapture** object we call [AppCapability.CheckAccess](/uwp/api/windows.security.authorization.appcapabilityaccess.appcapability.checkaccess) method to determine if the user has denied our app access to the camera in Windows Settings. - -> [!NOTE] -> Windows allows users to grant or deny access to the device's camera in the Windows Settings app, under **Privacy & Security -> Camera**. When initializing the capture device, apps should check whether they have access to the camera and handle the case where access is denied by the user. For more information, see [Handle the Windows camera privacy setting](/windows/uwp/audio-video-camera/camera-privacy-setting). - -The **InitializeAsync** call is made from inside a **try** block so that we can recover if initialization fails. Apps should handle initialization failure gracefully. In this simple example, we'll just display an error message on failure. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIInitMediaCapture"::: - -## Initialize the camera preview - -When the user clicks the start preview button, we will attempt to create a **MediaFrameSource** for a video stream from the camera device with which the **MediaCapture** object was initialized. The available frame sources are exposed by the [MediaCapture.FrameSources](/uwp/api/windows.media.capture.mediacapture.framesources) property. - - To find a frame source that is color video data, as opposed to a depth camera for example, we look for a frame source that has a [SourceKind](/uwp/api/windows.media.capture.frames.mediaframesourceinfo.sourcekind) of [Color](/uwp/api/windows.media.capture.frames.mediaframesourcekind). Some camera drivers provide a dedicated preview stream that is separate from the record stream. To get the preview video stream, we try to select a frame source that has a [MediaStreamType](/uwp/api/windows.media.capture.frames.mediaframesourceinfo.mediastreamtype) of [VideoPreview](/uwp/api/windows.media.capture.mediastreamtype). If no preview streams are found, we can get the record video stream by selecting a **MediaStreamType** of **VideoRecord**. If neither of these frame sources are available, then this capture device can't be used for video preview. - -Once we have selected a frame source, we create a new [MediaPlayer](/uwp/api/windows.media.playback.mediaplayer) object that will be rendered by the **MediaPlayerElement** in our UI. We set the [Source](/uwp/api/windows.media.playback.mediaplayer.source) property of the **MediaPlayer** to a new [MediaSource](/uwp/api/windows.media.core.mediasource) object we create from our selected **MediaFrameSource**. - -Call [Play](/uwp/api/windows.media.playback.mediaplayer.play) on the **MediaPlayer** object to begin rendering the video stream. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIStartPreview"::: - -Implement a handler for the [MediaFailed](/uwp/api/windows.media.playback.mediaplayer.mediafailed) event so that you can handle errors rendering the preview. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIMediaFailed"::: - -## Stop the camera preview - -To stop the camera preview, call [Pause](/uwp/api/windows.media.playback.mediaplayer.pause) on the **MediaPlayer** object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIStopPreview"::: - - -## Reset the app - -To make it easier to test out the sample app, add a method to reset the state of the app. Camera apps should always dispose of the camera and associated resources when the camera is no longer needed. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCameraWinUIReset"::: diff --git a/hub/apps/develop/camera/camera.md b/hub/apps/develop/camera/camera.md deleted file mode 100644 index e7b4f01118..0000000000 --- a/hub/apps/develop/camera/camera.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -description: This article lists the camera features that are available for WinUI 3 apps and links to the how-to articles that show how to use them. -title: Camera -ms.date: 10/24/2024 -ms.topic: article -keywords: windows 10, winui 3 -ms.localizationpriority: medium ---- - -# Camera - -This section provides guidance for creating WinUI 3 apps that use the camera or microphone to capture photos, video, or audio. - -## Basic MediaCapture tasks - -| Topic | Description | -|---------------------------|-----------------------------| -| [Capture photos and video in a desktop app with the Windows built-in camera UI](cameracaptureui.md) | Describes how to use the [CameraCaptureUI](/windows/windows-app-sdk/api/winrt/microsoft.windows.media.capture) class to capture photos or videos by using the camera UI built into Windows. This feature allows your app to get a user-captured photo or video with just a few lines of code. | -| [Show the camera preview in a WinUI 3 app](camera-quickstart-winui3.md) | Shows how to quickly display the camera preview stream within a XAML page in a WinUI 3 app. | -| [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) | Shows the simplest way to capture photos and video using the [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) class. The **MediaCapture** class exposes a robust set of APIs that provide low-level control over the capture pipeline and enable advanced capture scenarios, but this article is intended to help you add basic media capture to your app quickly and easily. | - -## Advanced MediaCapture tasks - -| Topic | Description | -|--------------------|---------------------------------------------------------| -| [Discover and select camera capabilities with camera profiles](camera-profiles.md) | Learn how to use camera profiles to discover and manage the capabilities of different video capture devices. This includes tasks such as selecting profiles that support specific resolutions or frame rates, profiles that support simultaneous access to multiple cameras, and profiles that support HDR. | -| [Set format, resolution, and frame rate for MediaCapture](set-media-encoding-properties.md) | Learn how to use the [**IMediaEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.IMediaEncodingProperties) interface to set the resolution and frame rate of the camera preview stream and captured photos and video. It also shows how to ensure that the aspect ratio of the preview stream matches that of the captured media. | -| [HDR and low-light photo capture](hdr-low-light-photo-capture.md) | Learn how to use the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) class to capture High Dynamic Range (HDR) and low-light photos. | -| [Manual camera controls for photo and video capture](capture-device-controls-for-photo-and-video-capture.md) | Learn how to use manual device controls to enable enhanced photo and video capture scenarios including optical image stabilization and smooth zoom. | -| [Manual camera controls for video capture](capture-device-controls-for-video-capture.md) | Learn how to use manual device controls to enable enhanced video capture scenarios including HDR video and exposure priority. | -| [Video stabilization effect for video capture](effects-for-video-capture.md) | Learn how to use the video stabilization effect. | -| [Scene analysis for MediaCapture](scene-analysis-for-media-capture.md) | Shows you how to use the [**SceneAnalysisEffect**](/uwp/api/Windows.Media.Core.SceneAnalysisEffect) and the [**FaceDetectionEffect**](/uwp/api/Windows.Media.Core.FaceDetectionEffect) to analyze the content of the media capture preview stream. | -| [Capture a photo sequence with VariablePhotoSequence](variable-photo-sequence.md) | Learn how to capture a variable photo sequence, which allows you to capture multiple frames of images in rapid succession and configure each frame to use different focus, flash, ISO, exposure, and exposure compensation settings. | -| [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md) | Learn how to use a [**MediaFrameReader**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReader) with [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) to get media frames from one or more available sources, including color, depth, and infrared cameras, audio devices, or even custom frame sources such as those that produce skeletal tracking frames. This feature is designed to be used by apps that perform real-time processing of media frames, such as augmented reality and depth-aware camera apps. | -| [Process audio frames with MediaFrameReader](process-media-frames-with-mediaframereader.md) | Learn how to use a [**MediaFrameReader**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReader) with [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) to get audio data from a media frame source. | -| [Detect and respond to audio level changes by the system](detect-audio-level-changes.md) | Learn how to detect and respond to audio level changes by the system. | -| [Launch the camera settings page](launch-camera-settings.md) | Learn how to launch the Windows Settings app directly to the camera settings page. | -| [Handle the Windows camera privacy setting](camera-privacy-setting.md) | Learn how apps should handle the Windows camera privacy setting. | -| [Connect to remote cameras](connect-to-remote-cameras.md) | Learn how to connect to remote cameras and get a **MediaFrameSourceGroup** to retrieve frames from each camera. | - -## WinUI 3 samples for camera - -* [MediaCapture WinUI 3 sample on github](https://github.com/microsoft/Windows-Camera/tree/master/Samples/MediaCaptureWinUI3). - -## UWP app samples for camera - -* [Camera face detection sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraFaceDetection) -* [Camera preview frame sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraGetPreviewFrame) -* [Camera HDR sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraAdvancedCapture) -* [Camera manual controls sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraManualControls) -* [Camera profile sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraProfile) -* [Camera resolution sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraResolution) -* [Camera starter kit](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraStarterKit) -* [Camera video stabilization sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraVideoStabilization) - -## Related topics - -* [Audio, video, and camera](../audio-video-camera.md) -  - -  \ No newline at end of file diff --git a/hub/apps/develop/camera/cameracaptureui.md b/hub/apps/develop/camera/cameracaptureui.md deleted file mode 100644 index 2ba37b9513..0000000000 --- a/hub/apps/develop/camera/cameracaptureui.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Capture photos and video in a desktop app with the Windows built-in camera UI -description: Learn how to capture photos and video using the camera UI built into Windows. -ms.topic: how-to -ms.date: 07/23/2024 -ms.author: drewbat -author: drewbatgit -ms.localizationpriority: medium -#customer intent: As a developer, I want to access the camera in a Windows app using WinUI 3. ---- - -# Capture photos and video in a desktop app with the Windows built-in camera UI - -This article describes how to use the [CameraCaptureUI](/windows/windows-app-sdk/api/winrt/microsoft.windows.media.capture) class to capture photos or videos by using the camera UI built into Windows. This feature allows your app to get a user-captured photo or video with just a few lines of code. - -If you want to provide your own camera UI, or if your scenario requires more robust, low-level control of the capture operation, then you should use the [MediaCapture](/uwp/api/windows.media.capture.mediacapture) class, and implement your own capture experience. For more information, see [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md). - -Note that the **CameraCaptureUI** class in the [Microsoft.Windows.Media.Capture](/windows/windows-app-sdk/api/winrt/microsoft.windows.media.capture) namespace is not supported for UWP apps. For information on using the UWP version of this feature, see [Capture photos and video in a UWP app with the Windows built-in camera UI](/windows/uwp/audio-video-camera/capture-photos-and-video-with-cameracaptureui) - -## Use the CameraCaptureUI class to capture photos - -Create a new instance of **CameraCaptureUI**, passing in the [AppWindow.Id](/windows/windows-app-sdk/api/winrt/microsoft.ui.windowing.appwindow.id) property of your app window. The [PhotoSettings](/windows/windows-app-sdk/api/winrt/microsoft.windows.media.capture.cameracaptureui.photosettings) property allows you to specify some constraints on the captured photo, including the file format and maximum resolution and whether UI allows the user to crop the photo after it's captured. The [VideoSettings](/windows/windows-app-sdk/api/winrt/microsoft.windows.media.capture.cameracaptureui.videosettings) property provides similar properties for video capture, such as the maximum resolution and duration and whether the UI allows the user to trim the video after it's captured. - -Call [CaptureFileAsync](/windows/windows-app-sdk/api/winrt/microsoft.windows.media.capture.cameracaptureui.capturefileasync) to launch the camera capture UI asynchronously. Use one of the values from the [CameraCaptureUIMode](/windows/windows-app-sdk/api/winrt/microsoft.windows.media.capture.cameracaptureuimode) to specify whether the UI should allow photo capture, video capture, or both. When **CaptureFileAsync** completes, it will return a [StorageFile](/uwp/api/windows.storage.storagefile) file object containing the captured photo or video. If the returned object is null it means that either the user cancelled the capture operation or an error occurred. - -The following example demonstrates launching the **CameraCaptureUI** for photo capture, specifying the image format as PNG and disabling cropping. In this example the captured photo is set as the source for an [Image](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.image) control. - -### [C#](#tab/csharp) - -```csharp -var cameraCaptureUI = new CameraCaptureUI(this.AppWindow.Id); -cameraCaptureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Png; -cameraCaptureUI.PhotoSettings.AllowCropping = false; - -// Capture a photo asynchronously -StorageFile photo = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Photo); - -if (photo != null) -{ - // Photo capture was successful - - // Show the captured photo in a XAML Image control - using (IRandomAccessStream fileStream = await photo.OpenAsync(Windows.Storage.FileAccessMode.Read)) - { - // Set the image source to the selected bitmap - BitmapImage bitmapImage = new BitmapImage(); - await bitmapImage.SetSourceAsync(fileStream); - iCapturedImage.Source = bitmapImage; - } -} else -{ - // Photo capture failed or was cancelled -} - -``` - -### [C++/WinRT](#tab/cpp) - -```cpp -// Get the WindowId for the window -Microsoft::UI::WindowId windowId = this->AppWindow().Id(); - -// Initialize CameraCaptureUI with a window handle -winrt::Microsoft::Windows::Media::Capture::CameraCaptureUI cameraUI(windowId); - -// Configure Photo Settings -cameraUI.PhotoSettings().Format(CameraCaptureUIPhotoFormat::Png); -cameraUI.PhotoSettings().AllowCropping(false); - -// Capture a photo asynchronously -auto photo = co_await cameraUI.CaptureFileAsync(CameraCaptureUIMode::Photo); - - -if (photo != nullptr) -{ - // Photo capture was successful - - // Show the captured photo in a XAML Image control - IRandomAccessStream fileStream = co_await photo.OpenAsync(Windows::Storage::FileAccessMode::Read); - BitmapImage bitmapImage = BitmapImage(); - co_await bitmapImage.SetSourceAsync(fileStream); - iCapturedImage().Source(bitmapImage); - -} -else -{ - // Photo capture failed or was cancelled -} -``` - ---- - -## Use the CameraCaptureUI class to capture videos - -The following example demonstrates launching the **CameraCaptureUI** for video capture, specifying the maximum video as standard definition and disabling trimming. In this example the captured photo is set as the source for an [MediaPlayerElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.mediaplayerelement) control. - -### [C#](#tab/csharp) - -```csharp -var cameraCaptureUI = new CameraCaptureUI(this.AppWindow.Id); -cameraCaptureUI.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.StandardDefinition; -cameraCaptureUI.VideoSettings.AllowTrimming = true; -StorageFile videoFile = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Video); - -if (videoFile != null) -{ - // Video capture was successful - - // Show the captured video in a MediaPlayerElement control - mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(videoFile); - mediaPlayerElement.MediaPlayer.Play(); -} -else -{ - // Video capture failed or was cancelled -} -``` - -### [C++/WinRT](#tab/cpp) - -```cpp -Microsoft::UI::WindowId windowId = this->AppWindow().Id(); - -winrt::Microsoft::Windows::Media::Capture::CameraCaptureUI cameraUI(windowId); - -cameraUI.VideoSettings().MaxResolution(CameraCaptureUIMaxVideoResolution::StandardDefinition); -cameraUI.VideoSettings().AllowTrimming(true); -StorageFile videoFile = co_await cameraUI.CaptureFileAsync(CameraCaptureUIMode::Video); - -if (videoFile != nullptr) -{ - // Video capture was successful - - // Show the captured video in a MediaPlayerElement control - auto source = winrt::Windows::Media::Core::MediaSource::CreateFromStorageFile(videoFile); - mediaPlayerElement().Source(MediaSource::CreateFromStorageFile(videoFile)); - -} -else -{ - // Photo capture failed or was cancelled -} -``` - ---- - -## Move and rename captured media files - -The **CameraCaptureUI** creates randomized names for captured media files, so you may want to rename and move captured files to keep them organized. The following example moves and renames a captured file. - - -### [C#](#tab/csharp) - -```csharp -StorageFile photo = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Photo); - -if (photo != null) -{ - // Move and rename captured photo - StorageFolder destinationFolder = - await ApplicationData.Current.LocalFolder.CreateFolderAsync("ProfilePhotoFolder", - CreationCollisionOption.OpenIfExists); - - await photo.CopyAsync(destinationFolder, "ProfilePhoto.jpg", NameCollisionOption.ReplaceExisting); - await photo.DeleteAsync(); -} -``` - -### [C++/WinRT](#tab/cpp) - -```cpp -auto photo = co_await cameraUI.CaptureFileAsync(CameraCaptureUIMode::Photo); - - -if (photo != nullptr) -{ - // Move and rename captured photo - StorageFolder destinationFolder = co_await ApplicationData::Current().LocalFolder() - .CreateFolderAsync(L"ProfilePhotoFolder", CreationCollisionOption::OpenIfExists); - - co_await photo.CopyAsync(destinationFolder, L"ProfilePhoto.jpg", NameCollisionOption::ReplaceExisting); - co_await photo.DeleteAsync(); -} -``` - ---- diff --git a/hub/apps/develop/camera/capture-device-controls-for-photo-and-video-capture.md b/hub/apps/develop/camera/capture-device-controls-for-photo-and-video-capture.md deleted file mode 100644 index ea5576ec6c..0000000000 --- a/hub/apps/develop/camera/capture-device-controls-for-photo-and-video-capture.md +++ /dev/null @@ -1,336 +0,0 @@ ---- -description: Learn how to use manual device controls to enable enhanced photo and video capture scenarios including optical image stabilization and smooth zoom. -title: Manual camera controls for photo and video capture -ms.date: 10/24/2024 -ms.topic: article -keywords: windows 10, winui 3 -ms.localizationpriority: medium ---- - -# Manual camera controls for photo and video capture - -This article shows you how to use manual device controls to enable enhanced photo and video capture scenarios including optical image stabilization and smooth zoom. - -The controls discussed in this article are all added to your app using the same pattern. First, check to see if the control is supported on the current device on which your app is running. If the control is supported, set the desired mode for the control. Typically, if a particular control is unsupported on the current device, you should disable or hide the UI element that allows the user to enable the feature. - -> [!NOTE] -> This article builds on concepts and code discussed in [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md), which describes the steps for implementing basic photo and video capture. We recommend that you familiarize yourself with the basic media capture pattern in that article before moving on to more advanced capture scenarios. The code in this article assumes that your app already has an instance of **MediaCapture** that has been properly initialized. - -## Exposure - -The [**ExposureControl**](/uwp/api/Windows.Media.Devices.ExposureControl) allows you to set the shutter speed used during photo or video capture. - -This example uses a [**Slider**](/uwp/api/Windows.UI.Xaml.Controls.Slider) control to adjust the current exposure value and a checkbox to toggle automatic exposure adjustment. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetExposureXAML"::: - -Check to see if the current capture device supports the **ExposureControl** by checking the [**Supported**](/uwp/api/windows.media.devices.exposurecontrol.supported) property. If the control is supported, you can show and enable the UI for this feature. Set the checked state of the checkbox to indicate if automatic exposure adjustment is currently active to the value of the [**Auto**](/uwp/api/windows.media.devices.exposurecontrol.auto) property. - -The exposure value must be within the range supported by the device and must be an increment of the supported step size. Get the supported values for the current device by checking the [**Min**](/uwp/api/windows.media.devices.exposurecontrol.min), [**Max**](/uwp/api/windows.media.devices.exposurecontrol.max), and [**Step**](/uwp/api/windows.media.devices.exposurecontrol.step) properties, which are used to set the corresponding properties of the slider control. - -Set the slider control's value to the current value of the **ExposureControl** after unregistering the [**ValueChanged**](/uwp/api/windows.ui.xaml.controls.primitives.rangebase.valuechanged) event handler so that the event is not triggered when the value is set. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetExposureControl"::: - -In the **ValueChanged** event handler, get the current value of the control and the set the exposure value by calling [**SetValueAsync**](/uwp/api/windows.media.devices.exposurecontrol.setvalueasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetExposureSlider"::: - -In the **CheckedChanged** event handler of the auto exposure checkbox, turn automatic exposure adjustment on or off by calling [**SetAutoAsync**](/uwp/api/windows.media.devices.exposurecontrol.setautoasync) and passing in a boolean value. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetExposureCheckBox"::: - -> [!IMPORTANT] -> Automatic exposure mode is only supported while the preview stream is running. Check to make sure that the preview stream is running before turning on automatic exposure. - -## Exposure compensation - -The [**ExposureCompensationControl**](/uwp/api/Windows.Media.Devices.ExposureCompensationControl) allows you to set the exposure compensation used during photo or video capture. - -This example uses a [**Slider**](/uwp/api/Windows.UI.Xaml.Controls.Slider) control to adjust the current exposure compensation value. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetEvXAML"::: - -Check to see if the current capture device supports the **ExposureCompensationControl** by checking the [Supported](/windows/uwp/audio-video-camera/supported-codecs) property. If the control is supported, you can show and enable the UI for this feature. - -The exposure compensation value must be within the range supported by the device and must be an increment of the supported step size. Get the supported values for the current device by checking the [**Min**](/uwp/api/windows.media.devices.exposurecompensationcontrol.min), [**Max**](/uwp/api/windows.media.devices.exposurecompensationcontrol.max), and [**Step**](/uwp/api/windows.media.devices.exposurecompensationcontrol.step) properties, which are used to set the corresponding properties of the slider control. - -Set slider control's value to the current value of the **ExposureCompensationControl** after unregistering the [**ValueChanged**](/uwp/api/windows.ui.xaml.controls.primitives.rangebase.valuechanged) event handler so that the event is not triggered when the value is set. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetEvControl"::: - -In the **ValueChanged** event handler, get the current value of the control and the set the exposure value by calling [**SetValueAsync**](/uwp/api/windows.media.devices.exposurecompensationcontrol.setvalueasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetEvValueChanged"::: - -## Flash - -The [**FlashControl**](/uwp/api/Windows.Media.Devices.FlashControl) allows you to enable or disable the flash or to enable automatic flash, where the system dynamically determines whether to use the flash. This control also allows you to enable automatic red eye reduction on devices that support it. These settings all apply to capturing photos. The [**TorchControl**](/uwp/api/Windows.Media.Devices.TorchControl) is a separate control for turning the torch on or off for video capture. - -This example uses a set of radio buttons to allow the user to switch between on, off, and auto flash settings. A checkbox is also provided to allow toggling of red eye reduction and the video torch. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetFlashXAML"::: - -Check to see if the current capture device supports the **FlashControl** by checking the [**Supported**](/uwp/api/windows.media.devices.focuscontrol.supported) property. If the control is supported, you can show and enable the UI for this feature. If the **FlashControl** is supported, automatic red eye reduction may or may not be supported, so check the [**RedEyeReductionSupported**](/uwp/api/windows.media.devices.flashcontrol.redeyereductionsupported) property before enabling the UI. Because the **TorchControl** is separate from the flash control, you must also check its [**Supported**](/uwp/api/windows.media.devices.torchcontrol.supported) property before using it. - -In the [**Checked**](/uwp/api/windows.ui.xaml.controls.primitives.togglebutton.checked) event handler for each of the flash radio buttons, enable or disable the appropriate corresponding flash setting. Note that to set the flash to always be used, you must set the [**Enabled**](/uwp/api/windows.media.devices.flashcontrol.enabled) property to true and the [**Auto**](/uwp/api/windows.media.devices.flashcontrol.auto) property to false. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetFlashControl"::: - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetFlashRadioButtons"::: - -In the handler for the red eye reduction checkbox, set the [**RedEyeReduction**](/uwp/api/windows.media.devices.flashcontrol.redeyereduction) property to the appropriate value. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetRedEye"::: - -Finally, in the handler for the video torch checkbox, set the [**Enabled**](/uwp/api/windows.media.devices.torchcontrol.enabled) property to the appropriate value. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetTorch"::: - -> [!NOTE] -> On some devices the torch will not emit light, even if [**TorchControl.Enabled**](/uwp/api/windows.media.devices.torchcontrol.enabled) is set to true, unless the device has a preview stream running and is actively capturing video. The recommended order of operations is to turn on the video preview, turn on the torch by setting **Enabled** to true, and then initiate video capture. On some devices the torch will light up after the preview is started. On other devices, the torch may not light up until video capture is started. - -## Focus - -Three different commonly used methods for adjusting the focus of the camera are supported by the [**FocusControl**](/uwp/api/Windows.Media.Devices.FocusControl) object, continuous autofocus, tap to focus, and manual focus. A camera app may support all three of these methods, but for readability, this article discusses each technique separately. This section also discusses how to enable the focus assist light. - -### Continuous autofocus - -Enabling continuous autofocus instructs the camera to adjust the focus dynamically to try to keep the subject of the photo or video in focus. This example uses a radio button to toggle continuous autofocus on and off. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetCAFXAML"::: - -Check to see if the current capture device supports the **FocusControl** by checking the [**Supported**](/uwp/api/windows.media.devices.flashcontrol.supported) property. Next, determine if continuous autofocus is supported by checking the [**SupportedFocusModes**](/uwp/api/windows.media.devices.focuscontrol.supportedfocusmodes) list to see if it contains the value [**FocusMode.Continuous**](/uwp/api/Windows.Media.Devices.FocusMode), and if so, show the continuous autofocus radio button. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetCAF"::: - -In the [**Checked**](/uwp/api/windows.ui.xaml.controls.primitives.togglebutton.checked) event handler for the continuous autofocus radio button, use the [**VideoDeviceController.FocusControl**](/uwp/api/windows.media.devices.videodevicecontroller.focuscontrol) property to get an instance of the control. Call [**UnlockAsync**](/uwp/api/windows.media.devices.focuscontrol.unlockasync) to unlock the control in case your app has previously called [**LockAsync**](/uwp/api/windows.media.devices.focuscontrol.lockasync) to enable one of the other focus modes. - -Create a new [**FocusSettings**](/uwp/api/Windows.Media.Devices.FocusSettings) object and set the [**Mode**](/uwp/api/windows.media.devices.focussettings.mode) property to **Continuous**. Set the [**AutoFocusRange**](/uwp/api/windows.media.devices.focussettings.autofocusrange) property to a value appropriate for your app scenario or selected by the user from your UI. Pass your **FocusSettings** object into the [**Configure**](/uwp/api/windows.media.devices.focuscontrol.configure) method, and then call [**FocusAsync**](/uwp/api/windows.media.devices.focuscontrol.focusasync) to initiate continuous autofocus. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetCafFocusRadioButton"::: - -> [!IMPORTANT] -> Autofocus mode is only supported while the preview stream is running. Check to make sure that the preview stream is running before turning on continuous autofocus. - -### Tap to focus - -The tap-to-focus technique uses the [**FocusControl**](/uwp/api/Windows.Media.Devices.FocusControl) and the [**RegionsOfInterestControl**](/uwp/api/Windows.Media.Devices.RegionsOfInterestControl) to specify a subregion of the capture frame where the capture device should focus. The region of focus is determined by the user tapping on the screen displaying the preview stream. - -This example uses a radio button to enable and disable tap-to-focus mode. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetTapFocusXAML"::: - -Check to see if the current capture device supports the **FocusControl** by checking the [**Supported**](/uwp/api/windows.media.devices.flashcontrol.supported) property. The **RegionsOfInterestControl** must be supported, and must support at least one region, in order to use this technique. Check the [**AutoFocusSupported**](/uwp/api/windows.media.devices.regionsofinterestcontrol.autofocussupported) and [**MaxRegions**](/uwp/api/windows.media.devices.regionsofinterestcontrol.maxregions) properties to determine whether to show or hide the radio button for tap-to-focus. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetTapFocus"::: - -In the [**Checked**](/uwp/api/windows.ui.xaml.controls.primitives.togglebutton.checked) event handler for the tap-to-focus radio button, use the [**VideoDeviceController.FocusControl**](/uwp/api/windows.media.devices.videodevicecontroller.focuscontrol) property to get an instance of the control. Call [**LockAsync**](/uwp/api/windows.media.devices.focuscontrol.lockasync) to lock the control in case your app has previously called [**UnlockAsync**](/uwp/api/windows.media.devices.focuscontrol.unlockasync) to enable continuous autofocus, and then wait for the user to tap the screen to change the focus. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetTapFocusRadioButton"::: - -This example focuses on a region when the user taps the screen, and then removes the focus from that region when the user taps again, like a toggle. Use a boolean variable to track the current toggled state. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetIsFocused"::: - -The next step is to listen for the event when the user taps the screen by handling the [**Tapped**](/uwp/api/windows.ui.xaml.uielement.tapped) event of the [**CaptureElement**](/uwp/api/Windows.UI.Xaml.Controls.CaptureElement) that is currently displaying the capture preview stream. If the camera isn't currently previewing, or if tap-to-focus mode is disabled, return from the handler without doing anything. - -If the tracking variable *\_isFocused* is toggled to false, and if the camera isn't currently in the process of focus (determined by the [**FocusState**](/uwp/api/windows.media.devices.focuscontrol.focusstate) property of the **FocusControl**), begin the tap-to-focus process. Get the position of the user's tap from the event args passed into the handler. This example also uses this opportunity to pick the size of the region that will be focused upon. In this case, the size is 1/4 of the smallest dimension of the capture element. Pass the tap position and the region size into the **TapToFocus** helper method that is defined in the next section. - -If the *\_isFocused* toggle is set to true, the user tap should clear the focus from the previous region. This is done in the **TapUnfocus** helper method shown below. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetTapFocusPreviewControl"::: - -In the **TapToFocus** helper method, first set the *\_isFocused* toggle to true so that the next screen tap will release the focus from the tapped region. - -The next task in this helper method is to determine the rectangle within the preview stream that will be assigned to the focus control. This requires two steps. The first step is to determine the rectangle that the preview stream takes up within the [**CaptureElement**](/uwp/api/Windows.UI.Xaml.Controls.CaptureElement) control. This depends on the dimensions of the preview stream and the orientation of the device. The helper method **GetPreviewStreamRectInControl**, shown at the end of this section, performs this task and returns the rectangle containing the preview stream. - -The next task in **TapToFocus** is to convert the tap location and desired focus rectangle size, which were determined within the **CaptureElement.Tapped** event handler, into coordinates within capture stream. The **ConvertUiTapToPreviewRect** helper method, shown later in this section, performs this conversion and returns the rectangle, in capture stream coordinates, where the focus will be requested. - -Now that the target rectangle has been obtained, create a new [**RegionOfInterest**](/uwp/api/Windows.Media.Devices.RegionOfInterest) object, setting the [**Bounds**](/uwp/api/windows.media.devices.regionofinterest.bounds) property to the target rectangle obtained in the previous steps. - -Get the capture device's [**FocusControl**](/uwp/api/Windows.Media.Devices.FocusControl). Create a new [**FocusSettings**](/uwp/api/Windows.Media.Devices.FocusSettings) object and set the [**Mode**](/uwp/api/windows.media.devices.focuscontrol.mode) and [**AutoFocusRange**](/uwp/api/windows.media.devices.focussettings.autofocusrange) to your desired values, after checking to make sure that they are supported by the **FocusControl**. Call [**Configure**](/uwp/api/windows.media.devices.focuscontrol.configure) on the **FocusControl** to make your settings active and signal the device to begin focusing on the specified region. - -Next, get the capture device's [**RegionsOfInterestControl**](/uwp/api/Windows.Media.Devices.RegionsOfInterestControl) and call [**SetRegionsAsync**](/uwp/api/windows.media.devices.regionsofinterestcontrol.setregionsasync) to set the active region. Multiple regions of interest can be set on devices that support it, but this example only sets a single region. - -Finally, call [**FocusAsync**](/uwp/api/windows.media.devices.focuscontrol.focusasync) on the **FocusControl** to initiate focusing. - -> [!IMPORTANT] -> When implementing tap to focus, the order of operations is important. You should call these APIs in the following order: -> -> 1. [**FocusControl.Configure**](/uwp/api/windows.media.devices.focuscontrol.configure) -> 2. [**RegionsOfInterestControl.SetRegionsAsync**](/uwp/api/windows.media.devices.regionsofinterestcontrol.setregionsasync) -> 3. [**FocusControl.FocusAsync**](/uwp/api/windows.media.devices.focuscontrol.focusasync) - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetTapToFocus"::: - -In the **TapUnfocus** helper method, obtain the **RegionsOfInterestControl** and call [**ClearRegionsAsync**](/uwp/api/windows.media.devices.regionsofinterestcontrol.clearregionsasync) to clear the region that was registered with the control within the **TapToFocus** helper method. Then, get the **FocusControl** and call [**FocusAsync**](/uwp/api/windows.media.devices.focuscontrol.focusasync) to cause the device to refocus without a region of interest. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetTapUnfocus"::: - -The **GetPreviewStreamRectInControl** helper method uses the resolution of the preview stream and the orientation of the device to determine the rectangle within the preview element that contains the preview stream, trimming off any letterboxed padding that the control may provide to maintain the stream's aspect ratio. This method uses class member variables defined in the basic media capture example code found in [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetGetPreviewStreamRectInControl"::: - -The **ConvertUiTapToPreviewRect** helper method takes as arguments the location of the tap event, the desired size of the focus region, and the rectangle containing the preview stream obtained from the **GetPreviewStreamRectInControl** helper method. This method uses these values and the device's current orientation to calculate the rectangle within the preview stream that contains the desired region. Once again, this method uses class member variables defined in the basic media capture example code found in [Capture Photos and Video with MediaCapture](basic-photo-capture.md). - - - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetConvertUiTapToPreviewRect"::: - -### Manual focus - -The manual focus technique uses a **Slider** control to set the current focus depth of the capture device. A radio button is used to toggle manual focus on and off. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetManualFocusXAML"::: - -Check to see if the current capture device supports the **FocusControl** by checking the [**Supported**](/uwp/api/windows.media.devices.focuscontrol.supported) property. If the control is supported, you can show and enable the UI for this feature. - -The focus value must be within the range supported by the device and must be an increment of the supported step size. Get the supported values for the current device by checking the [**Min**](/uwp/api/windows.media.devices.focuscontrol.min), [**Max**](/uwp/api/windows.media.devices.focuscontrol.max), and [**Step**](/uwp/api/windows.media.devices.focuscontrol.step) properties, which are used to set the corresponding properties of the slider control. - -Set the slider control's value to the current value of the **FocusControl** after unregistering the [**ValueChanged**](/uwp/api/windows.ui.xaml.controls.primitives.rangebase.valuechanged) event handler so that the event is not triggered when the value is set. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetFocus"::: - -In the **Checked** event handler for the manual focus radio button, get the **FocusControl** object and call [**LockAsync**](/uwp/api/windows.media.devices.focuscontrol.lockasync) in case your app had previously unlocked the focus with a call to [**UnlockAsync**](/uwp/api/windows.media.devices.focuscontrol.unlockasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetManualFocusChecked"::: - -In the **ValueChanged** event handler of the manual focus slider, get the current value of the control and the set the focus value by calling [**SetValueAsync**](/uwp/api/windows.media.devices.focuscontrol.setvalueasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetFocusSlider"::: - -### Enable the focus light - -On devices that support it, you can enable a focus assist light to help the device focus. This example uses a checkbox to enable or disable the focus assist light. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetFocusLightXAML"::: - -Check to see if the current capture device supports the **FlashControl** by checking the [**Supported**](/uwp/api/windows.media.devices.flashcontrol.supported) property. Also check the [**AssistantLightSupported**](/uwp/api/windows.media.devices.flashcontrol.assistantlightsupported) to make sure the assist light is also supported. If these are both supported, you can show and enable the UI for this feature. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetFocusLight"::: - -In the **CheckedChanged** event handler, get the capture devices [**FlashControl**](/uwp/api/Windows.Media.Devices.FlashControl) object. Set the [**AssistantLightEnabled**](/uwp/api/windows.media.devices.flashcontrol.assistantlightenabled) property to enable or disable the focus light. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetFocusLightCheckBox"::: - -## ISO speed - -The [**IsoSpeedControl**](/uwp/api/Windows.Media.Devices.IsoSpeedControl) allows you to set the ISO speed used during photo or video capture. - -This example uses a [**Slider**](/uwp/api/Windows.UI.Xaml.Controls.Slider) control to adjust the current exposure compensation value and a checkbox to toggle automatic ISO speed adjustment. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetIsoXAML"::: - -Check to see if the current capture device supports the **IsoSpeedControl** by checking the [**Supported**](/uwp/api/windows.media.devices.isospeedcontrol.supported) property. If the control is supported, you can show and enable the UI for this feature. Set the checked state of the checkbox to indicate if automatic ISO speed adjustment is currently active to the value of the [**Auto**](/uwp/api/windows.media.devices.isospeedcontrol.auto) property. - -The ISO speed value must be within the range supported by the device and must be an increment of the supported step size. Get the supported values for the current device by checking the [**Min**](/uwp/api/windows.media.devices.isospeedcontrol.min), [**Max**](/uwp/api/windows.media.devices.isospeedcontrol.max), and [**Step**](/uwp/api/windows.media.devices.isospeedcontrol.step) properties, which are used to set the corresponding properties of the slider control. - -Set the slider control's value to the current value of the **IsoSpeedControl** after unregistering the [**ValueChanged**](/uwp/api/windows.ui.xaml.controls.primitives.rangebase.valuechanged) event handler so that the event is not triggered when the value is set. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetIsoControl"::: - -In the **ValueChanged** event handler, get the current value of the control and the set the ISO speed value by calling [**SetValueAsync**](/uwp/api/windows.media.devices.isospeedcontrol.setvalueasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetIsoSlider"::: - -In the **CheckedChanged** event handler of the auto ISO speed checkbox, turn on automatic ISO speed adjustment by calling [**SetAutoAsync**](/uwp/api/windows.media.devices.isospeedcontrol.setautoasync). Turn automatic ISO speed adjustment off by calling [**SetValueAsync**](/uwp/api/windows.media.devices.isospeedcontrol.setvalueasync) and passing in the current value of the slider control. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetIsoCheckBox"::: - -## Optical image stabilization - -Optical image stabilization (OIS) stabilizes a captured video stream by mechanically manipulating the hardware capture device, which can provide a superior result than digital stabilization. On devices that don't support OIS, you can use the VideoStabilizationEffect to perform digital stabilization on your captured video. For more information, see [Effects for video capture](effects-for-video-capture.md). - -Determine if OIS is supported on the current device by checking the [**OpticalImageStabilizationControl.Supported**](/uwp/api/windows.media.devices.opticalimagestabilizationcontrol.supported) property. - -The OIS control supports three modes: on, off, and automatic, which means that the device dynamically determines if OIS would improve the media capture and, if so, enables OIS. To determine if a particular mode is supported on a device, check to see if the [**OpticalImageStabilizationControl.SupportedModes**](/uwp/api/windows.media.devices.opticalimagestabilizationcontrol.supportedmodes) collection contains the desired mode. - -Enable or disable OIS by setting the [**OpticalImageStabilizationControl.Mode**](/uwp/api/Windows.Media.Devices.OpticalImageStabilizationMode) to the desired mode. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetSetOpticalImageStabilizationMode"::: - -## Powerline frequency - -Some camera devices support anti-flicker processing that depends on knowing the AC frequency of the powerlines in the current environment. Some devices support automatic determination of the powerline frequency, while others require that the frequency be set manually. The following code example shows how to determine powerline frequency support on the device and, if needed, how to set the frequency manually. - -First, call the **VideoDeviceController** method [**TryGetPowerlineFrequency**](/uwp/api/windows.media.devices.videodevicecontroller.trygetpowerlinefrequency), passing in an output parameter of type [**PowerlineFrequency**](/uwp/api/Windows.Media.Capture.PowerlineFrequency); if this call fails, the powerline frequency control is not supported on the current device. If the feature is supported, you can determine if automatic mode is available on the device by trying to set auto mode. Do this by calling [**TrySetPowerlineFrequency**](/uwp/api/windows.media.devices.videodevicecontroller.trysetpowerlinefrequency) and passing in the value **Auto**. If the call succeeds, that means that your auto powerline frequency is supported. If the powerline frequency controller is supported on the device but automatic frequency detection is not, you can still manually set the frequency by using **TrySetPowerlineFrequency**. In this example, **MyCustomFrequencyLookup** is a custom method that you implement to determine the correct frequency for the device's current location. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetPowerlineFrequency"::: - -## White balance - -The [**WhiteBalanceControl**](/uwp/api/windows.media.devices.videodevicecontroller.whitebalancecontrol) allows you to set the white balance used during photo or video capture. - -This example uses a [**ComboBox**](/uwp/api/Windows.UI.Xaml.Controls.ComboBox) control to select from built-in color temperature presets and a [**Slider**](/uwp/api/Windows.UI.Xaml.Controls.Slider) control for manual white balance adjustment. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetWhiteBalanceXAML"::: - -Check to see if the current capture device supports the **WhiteBalanceControl** by checking the [**Supported**](/uwp/api/windows.media.devices.whitebalancecontrol.supported) property. If the control is supported, you can show and enable the UI for this feature. Set the items of the combo box to the values of the [**ColorTemperaturePreset**](/uwp/api/Windows.Media.Devices.ColorTemperaturePreset) enumeration. And set the selected item to the current value of the [**Preset**](/uwp/api/windows.media.devices.whitebalancecontrol.preset) property. - -For manual control, the white balance value must be within the range supported by the device and must be an increment of the supported step size. Get the supported values for the current device by checking the [**Min**](/uwp/api/windows.media.devices.whitebalancecontrol.min), [**Max**](/uwp/api/windows.media.devices.whitebalancecontrol.max), and [**Step**](/uwp/api/windows.media.devices.whitebalancecontrol.step) properties, which are used to set the corresponding properties of the slider control. Before enabling manual control, check to make sure that the range between the minimum and maximum supported values is greater than the step size. If it is not, manual control is not supported on the current device. - -Set the slider control's value to the current value of the **WhiteBalanceControl** after unregistering the [**ValueChanged**](/uwp/api/windows.ui.xaml.controls.primitives.rangebase.valuechanged) event handler so that the event is not triggered when the value is set. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetWhiteBalance"::: - -In the [**SelectionChanged**](/uwp/api/windows.ui.xaml.controls.primitives.selector.selectionchanged) event handler of the color temperature preset combo box, get the currently selected preset and set the value of the control by calling [**SetPresetAsync**](/uwp/api/windows.media.devices.whitebalancecontrol.setpresetasync). If the selected preset value is not **Manual**, disable the manual white balance slider. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetWhiteBalanceComboBox"::: - -In the **ValueChanged** event handler, get the current value of the control and the set the white balance value by calling [**SetValueAsync**](/uwp/api/windows.media.devices.exposurecontrol.setvalueasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetWhiteBalanceSlider"::: - -> [!IMPORTANT] -> Adjusting the white balance is only supported while the preview stream is running. Check to make sure that the preview stream is running before setting the white balance value or preset. - -> [!IMPORTANT] -> The **ColorTemperaturePreset.Auto** preset value instructs the system to automatically adjust the white balance level. For some scenarios, such as capturing a photo sequence where the white balance levels should be the same for each frame, you may want to lock the control to the current automatic value. To do this, call [**SetPresetAsync**](/uwp/api/windows.media.devices.whitebalancecontrol.setpresetasync) and specify the **Manual** preset and do not set a value on the control using [**SetValueAsync**](/uwp/api/windows.media.devices.whitebalancecontrol.setvalueasync). This will cause the device to lock the current value. Do not attempt to read the current control value and then pass the returned value into **SetValueAsync** because this value is not guaranteed to be correct. - -## Zoom - -The [**ZoomControl**](/uwp/api/Windows.Media.Devices.ZoomControl) allows you to set the zoom level used during photo or video capture. - -This example uses a [**Slider**](/uwp/api/Windows.UI.Xaml.Controls.Slider) control to adjust the current zoom level. The following section shows how to adjust zoom based on a pinch gesture on the screen. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetZoomXAML"::: - -Check to see if the current capture device supports the **ZoomControl** by checking the [**Supported**](/uwp/api/windows.media.devices.zoomcontrol.supported) property. If the control is supported, you can show and enable the UI for this feature. - -The zoom level value must be within the range supported by the device and must be an increment of the supported step size. Get the supported values for the current device by checking the [**Min**](/uwp/api/windows.media.devices.zoomcontrol.min), [**Max**](/uwp/api/windows.media.devices.zoomcontrol.max), and [**Step**](/uwp/api/windows.media.devices.zoomcontrol.step) properties, which are used to set the corresponding properties of the slider control. - -Set the slider control's value to the current value of the **ZoomControl** after unregistering the [**ValueChanged**](/uwp/api/windows.ui.xaml.controls.primitives.rangebase.valuechanged) event handler so that the event is not triggered when the value is set. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetZoomControl"::: - -In the **ValueChanged** event handler, create a new instance of the [**ZoomSettings**](/uwp/api/Windows.Media.Devices.ZoomSettings) class, setting the [**Value**](/uwp/api/windows.media.devices.zoomsettings.value) property to the current value of the zoom slider control. If the [**SupportedModes**](/uwp/api/windows.media.devices.zoomcontrol.supportedmodes) property of the **ZoomControl** contains [**ZoomTransitionMode.Smooth**](/uwp/api/Windows.Media.Devices.ZoomTransitionMode), it means the device supports smooth transitions between zoom levels. Since this modes provides a better user experience, you will typically want to use this value for the [**Mode**](/uwp/api/windows.media.devices.zoomsettings.mode) property of the **ZoomSettings** object. - -Finally, change the current zoom settings by passing your **ZoomSettings** object into the [**Configure**](/uwp/api/windows.media.devices.zoomcontrol.configure) method of the **ZoomControl** object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetZoomSlider"::: - -### Smooth zoom using pinch gesture - -As discussed in the previous section, on devices that support it, smooth zoom mode allows the capture device to smoothly transition between digital zoom levels, allowing the user to dynamically adjust the zoom level during the capture operation without discrete and jarring transitions. This section describes how to adjust the zoom level in response to a pinch gesture. - -First, determine if the digital zoom control is supported on the current device by checking the [**ZoomControl.Supported**](/uwp/api/windows.media.devices.zoomcontrol.supported) property. Next, determine if smooth zoom mode is available by checking the [**ZoomControl.SupportedModes**](/uwp/api/windows.media.devices.zoomcontrol.supportedmodes) to see if it contains the value [**ZoomTransitionMode.Smooth**](/uwp/api/Windows.Media.Devices.ZoomTransitionMode). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetIsSmoothZoomSupported"::: - -On a multi-touch enabled device, a typical scenario is to adjust the zoom factor based on a two-finger pinch gesture. Set the [**ManipulationMode**](/uwp/api/windows.ui.xaml.uielement.manipulationmode) property of the [**CaptureElement**](/uwp/api/Windows.UI.Xaml.Controls.CaptureElement) control to [**ManipulationModes.Scale**](/uwp/api/Windows.UI.Xaml.Input.ManipulationModes) to enable the pinch gesture. Then, register for the [**ManipulationDelta**](/uwp/api/windows.ui.xaml.uielement.manipulationdelta) event which is raised when the pinch gesture changes size. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetRegisterPinchGestureHandler"::: - -In the handler for the **ManipulationDelta** event, update the zoom factor based on the change in the user's pinch gesture. The [**ManipulationDelta.Scale**](/uwp/api/Windows.UI.Input.ManipulationDelta) value represents the change in scale of the pinch gesture such that a small increase in the size of the pinch is a number slightly larger than 1.0 and a small decrease in the pinch size is a number slightly smaller than 1.0. In this example, the current value of the zoom control is multiplied by the scale delta. - -Before setting the zoom factor, you must make sure that the value is not less than the minimum value supported by the device as indicated by the [**ZoomControl.Min**](/uwp/api/windows.media.devices.zoomcontrol.min) property. Also, make sure that the value is less than or equal to the [**ZoomControl.Max**](/uwp/api/windows.media.devices.zoomcontrol.max) value. Finally, you must make sure that the zoom factor is a multiple of the zoom step size supported by the device as indicated by the [**Step**](/uwp/api/windows.media.devices.zoomcontrol.step) property. If your zoom factor does not meet these requirements, an exception will be thrown when you attempt to set the zoom level on the capture device. - -Set the zoom level on the capture device by creating a new [**ZoomSettings**](/uwp/api/Windows.Media.Devices.ZoomSettings) object. Set the [**Mode**](/uwp/api/windows.media.devices.zoomsettings.mode) property to [**ZoomTransitionMode.Smooth**](/uwp/api/Windows.Media.Devices.ZoomTransitionMode) and then set the [**Value**](/uwp/api/windows.media.devices.zoomsettings.value) property to your desired zoom factor. Finally, call [**ZoomControl.Configure**](/uwp/api/windows.media.devices.zoomcontrol.configure) to set the new zoom value on the device. The device will smoothly transition to the new zoom value. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetManipulationDelta"::: - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) diff --git a/hub/apps/develop/camera/capture-device-controls-for-video-capture.md b/hub/apps/develop/camera/capture-device-controls-for-video-capture.md deleted file mode 100644 index 08ad23930b..0000000000 --- a/hub/apps/develop/camera/capture-device-controls-for-video-capture.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -description: Learn how to use manual device controls to enable enhanced video capture scenarios including HDR video and exposure priority in a WinUI 3 app. -title: Manual camera controls for video capture -ms.date: 10/24/2024 -ms.topic: article -keywords: windows 10, winui 3 -ms.localizationpriority: medium ---- - -# Manual camera controls for video capture - -This article shows you how to use manual device controls to enable enhanced video capture scenarios, including HDR video and exposure priority. - -The video device controls discussed in this article are all added to your app by using the same pattern. First, check to see if the control is supported on the current device on which your app is running. If the control is supported, set the desired mode for the control. Typically, if a particular control is unsupported on the current device, you should disable or hide the UI element that allows the user to enable the feature. - -> [!NOTE] -> This article builds on concepts and code discussed in [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md), which describes the steps for implementing basic photo and video capture. We recommend that you familiarize yourself with the basic media capture pattern in that article before moving on to more advanced capture scenarios. The code in this article assumes that your app already has an instance of **MediaCapture** that has been properly initialized. - -## HDR video - -The high dynamic range (HDR) video feature applies HDR processing to the video stream of the capture device. Determine if HDR video is supported by selecting the [**HdrVideoControl.Supported**](/uwp/api/windows.media.devices.hdrvideocontrol.supported) property. - -The HDR video control supports three modes: on, off, and automatic, which means that the device dynamically determines if HDR video processing would improve the media capture and, if so, enables HDR video. To determine if a particular mode is supported on the current device, check to see if the [**HdrVideoControl.SupportedModes**](/uwp/api/windows.media.devices.hdrvideocontrol.supportedmodes) collection contains the desired mode. - -Enable or disable HDR video processing by setting the [**HdrVideoControl.Mode**](/uwp/api/windows.media.devices.hdrvideocontrol.mode) to the desired mode. This control requires that the stream is at a stopped state before the mode is set, see [KSPROPERTY_CAMERACONTROL_EXTENDED_VIDEOHDR](/windows-hardware/drivers/stream/ksproperty-cameracontrol-extended-videohdr). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetSetHdrVideoMode"::: - -## Exposure priority - -The [**ExposurePriorityVideoControl**](/uwp/api/Windows.Media.Devices.ExposurePriorityVideoControl), when enabled, evaluates the video frames from the capture device to determine if the video is capturing a low-light scene. If so, the control lowers the frame rate of the captured video in order to increase the exposure time for each frame and improve the visual quality of the captured video. - -Determine if the exposure priority control is supported on the current device by checking the [**ExposurePriorityVideoControl.Supported**](/uwp/api/windows.media.devices.exposurepriorityvideocontrol.supported) property. - -Enable or disable the exposure priority control by setting the [**ExposurePriorityVideoControl.Enabled**](/uwp/api/windows.media.devices.exposurepriorityvideocontrol.enabled) to the desired mode. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetEnableExposurePriority"::: - -## Temporal denoising - -Starting with Windows 10, version 1803, you can enable temporal denoising for video on devices that support it. This feature fuses the image data from multiple adjacent frames in real time to produce video frames that have less visual noise. - -The [**VideoTemporalDenoisingControl**](/uwp/api/windows.media.devices.videotemporaldenoisingcontrol) allows your app to determine if temporal denoising is supported on the current device, and if so, which denoising modes are supported. The available denoising modes are [**Off**](/uwp/api/windows.media.devices.videotemporaldenoisingmode), [**On**](/uwp/api/windows.media.devices.videotemporaldenoisingmode), and [**Auto**](/uwp/api/windows.media.devices.videotemporaldenoisingmode). A device may not support all modes, but every device must support either **Auto** or **On** and **Off**. - -The following example uses a simple UI to provide radio buttons allowing the user to switch between denoising modes. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetDenoiseXAML"::: - -In the following method, the [**VideoTemporalDenoisingControl.Supported**](/uwp/api/windows.media.devices.videotemporaldenoisingcontrol.supported) property is checked to see if temporal denoising is supported at all on the current device. If so, then we check to make sure that **Off** and **Auto** or **On** is supported, in which case we make our radio buttons visible. Next, the **Auto** and **On** buttons are made visible if those methods are supported. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetUpdateDenoiseCapabilities"::: - -In the **Checked** event handler for the radio buttons, the name of the button is checked and the corresponding mode is set by setting the [**VideoTemporalDenoisingControl.Mode**](/uwp/api/windows.media.devices.videotemporaldenoisingcontrol.mode) property. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetDenoiseButtonChecked"::: - -### Disabling temporal denoising while processing frames - -Video that has been processed using temporal denoising can be more pleasing to the human eye. However, because temporal denoising can impact image consistency and decrease the amount of details in the frame, apps that perform image processing on the frames, such as registration or optical character recognition, may want to programmatically disable denoising when image processing is enabled. - -The following example determines which denoising modes are supported and stores this information in some class variables. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetDenoiseFrameReaderVars"::: - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetDenoiseCapabilitiesForFrameProcessing"::: - -When the app enables frame processing, it sets the denoising mode to **Off** if that mode is supported so that the frame processing can use raw frames that have not been denoised. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetEnableFrameProcessing"::: - -When the app disables frame processing, it sets the denoising mode to **On** or **Auto**, depending on which mode is supported. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.ManualControls.xaml.cs" id="SnippetDisableFrameProcessing"::: - -For more information on obtaining video frames for image processing, see [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md). - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) -* [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md) -* [**VideoTemporalDenoisingControl**](/uwp/api/windows.media.devices.videotemporaldenoisingcontrol) -  diff --git a/hub/apps/develop/camera/connect-to-remote-cameras.md b/hub/apps/develop/camera/connect-to-remote-cameras.md deleted file mode 100644 index 94340d965f..0000000000 --- a/hub/apps/develop/camera/connect-to-remote-cameras.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -ms.assetid: -description: Learn how to connect to remote cameras and get a MediaFrameSourceGroup to retrieve frames from each camera. -title: Connect to remote cameras -ms.date: 10/10/2024 -ms.topic: article -ms.custom: 19H1 -keywords: windows 10, winui 3 -ms.localizationpriority: medium ---- - -# Connect to remote cameras - -This article shows you how to connect to one or more remote cameras and get a [**MediaFrameSourceGroup**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceGroup) object that allows you to read frames from each camera. For more information on reading frames from a media source, see [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md). For more information on pairing with devices, see [Pair devices](/windows/uwp/devices-sensors/pair-devices). - -> [!NOTE] -> The features discussed in this article are available starting with Windows 10, version 1903. - -## Create a DeviceWatcher class to watch for available remote cameras - -The [**DeviceWatcher**](/uwp/api/windows.devices.enumeration.devicewatcher) class monitors the devices available to your app and notifies your app when devices are added or removed. Get an instance of **DeviceWatcher** by calling [**DeviceInformation.CreateWatcher**](/uwp/api/windows.devices.enumeration.deviceinformation.createwatcher#Windows_Devices_Enumeration_DeviceInformation_CreateWatcher_System_String_), passing in an Advanced Query Syntax (AQS) string that identifies the type of devices you want to monitor. The AQS string specifying network camera devices is the following: - -```syntax -@"System.Devices.InterfaceClassGuid:=""{B8238652-B500-41EB-B4F3-4234F7F5AE99}"" AND System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True" -``` - -> [!NOTE] -> The helper method [**MediaFrameSourceGroup.GetDeviceSelector**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.getdeviceselector) returns an AQS string that will monitor locally-connected and remote network cameras. To monitor only network cameras, you should use the AQS string shown above. - -When you start the returned **DeviceWatcher** by calling the [**Start**](/uwp/api/windows.devices.enumeration.devicewatcher.start) method, it will raise the [**Added**](/uwp/api/windows.devices.enumeration.devicewatcher.added) event for every network camera that is currently available. Until you stop the watcher by calling [**Stop**](/uwp/api/windows.devices.enumeration.devicewatcher.stop), the **Added** event will be raised when new network camera devices become available and the [**Removed**](/uwp/api/windows.devices.enumeration.devicewatcher.removed) event will be raised when a camera device becomes unavailable. - -The event args passed into the **Added** and **Removed** event handlers are a [**DeviceInformation**](/uwp/api/Windows.Devices.Enumeration.DeviceInformation) or a [**DeviceInformationUpdate**](/uwp/api/windows.devices.enumeration.deviceinformationupdate) object, respectively. Each of these objects has an **Id** property that is the identifier for the network camera for which the event was fired. Pass this ID into the [**MediaFrameSourceGroup.FromIdAsync**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.fromidasync) method to get a [**MediaFrameSourceGroup**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.fromidasync) object that you can use to retrieve frames from the camera. - -## Remote camera pairing helper class - -The following example shows a helper class that uses a **DeviceWatcher** to create and update an **ObservableCollection** of **MediaFrameSourceGroup** objects to support data binding to the list of cameras. Typical apps would wrap the **MediaFrameSourceGroup** in a custom model class. Note that the helper class maintains a reference to the app's [**DispatcherQueue**](/windows/windows-app-sdk/api/winrt/microsoft.ui.dispatching.dispatcherqueue) and updates the collection of cameras on the UI thread. - -Also, this example handles the [**DeviceWatcher.Updated**](/uwp/api/windows.devices.enumeration.devicewatcher.updated) event in addition to the **Added** and **Removed** events. In the **Updated** handler, the associated remote camera device is removed from and then added back to the collection. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/RemoteCameraPairingHelper.cs" id="SnippetRemoteCameraPairingHelper"::: - -:::code language="cppwinrt" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/cpp/CameraWinUI/RemoteCameraPairingHelper.cpp" id="SnippetRemoteCameraPairingHelper"::: - - - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) -* [Camera frames sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraFrames) -* [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md) diff --git a/hub/apps/develop/camera/detect-audio-level-changes.md b/hub/apps/develop/camera/detect-audio-level-changes.md deleted file mode 100644 index 34c5dec7d9..0000000000 --- a/hub/apps/develop/camera/detect-audio-level-changes.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: "Detect and respond to audio level changes by the system" -description: Learn how to detect and respond to audio level changes by the system. -ms.topic: article -ms.date: 08/07/2024 -ms.author: drewbat -author: drewbatgit -ms.localizationpriority: medium -#customer intent: As a developer, I want to detect and respond to audio level changes by the system in a Windows app using WinUI 3. ---- - -# Detect and respond to audio level changes by the system - -Learn how to detect and respond to audio level changes by the system. Starting with Windows 10, version 1803, your app can detect when the system lowers or mutes the audio level of your app's audio capture and audio render streams. For example, the system may mute your app's streams when it goes into the background. - -To learn about capturing audio using the [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) class, see [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md). For information about audio playback using [MediaPlayer](/uwp/api/windows.media.playback.mediaplayer), see TBD. - - -The [**AudioStateMonitor**](/uwp/api/windows.media.audio.audiostatemonitor) class allows you to register to receive an event when the system modifies the volume of an audio capture or render stream. Get an instance of **AudioStateMonitor** for monitoring audio capture streams by calling [**CreateForCaptureMonitoring**](/uwp/api/windows.media.audio.audiostatemonitor.createforcapturemonitoring#Windows_Media_Audio_AudioStateMonitor_CreateForCaptureMonitoring). Get an instance for monitoring audio render streams by calling [**CreateForRenderMonitoring**](/uwp/api/windows.media.audio.audiostatemonitor.createforrendermonitoring). Register a handler for the [**SoundLevelChanged**](/uwp/api/windows.media.audio.audiostatemonitor.soundlevelchanged) event of each monitor to be notified when the audio for the corresponding stream category is changed by the system. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetAudioStateVars"::: - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetRegisterAudioStateMonitor"::: - -In the **SoundLevelChanged** handler for the capture stream, you can check the [**SoundLevel**](/uwp/api/windows.media.audio.audiostatemonitor.soundlevel) property of the **AudioStateMonitor** sender to determine the new sound level. Note that a capture stream should never be lowered, or "ducked", by the system. It should only ever be muted or switched back to full volume. If the audio stream is muted, you can stop a capture in progress. If the audio stream is restored to full volume, you can start capturing again. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCaptureSoundLevelChanged"::: - -The following code example illustrates an implementation of the **SoundLevelChanged** handler for audio rendering. Depending on your app scenario, and the type of content you are playing, you may want to pause audio playback when the sound level is ducked. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetRenderSoundLevelChanged"::: - -## Related topics - -[Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) - diff --git a/hub/apps/develop/camera/effects-for-video-capture.md b/hub/apps/develop/camera/effects-for-video-capture.md deleted file mode 100644 index b10806d4d1..0000000000 --- a/hub/apps/develop/camera/effects-for-video-capture.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -description: Learn how to apply effects to the camera preview and recording video streams and shows you how to use the video stabilization effect. -title: Effects for video capture -ms.date: 09/10/2024 -ms.topic: article -keywords: windows 10, windows 11, winui3, camera -ms.localizationpriority: medium ---- - -# Effects for video capture - -This topic shows you how to apply effects to the camera preview and recording video streams and shows you how to use the video stabilization effect. - -> [!NOTE] -> This article builds on concepts and code discussed in [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md), which describes the steps for implementing basic photo and video capture. We recommend that you familiarize yourself with the basic media capture pattern in that article before moving on to more advanced capture scenarios. The code in this article assumes that your app already has an instance of **MediaCapture** that has been properly initialized. - -## Adding and removing effects from the camera video stream - -To capture or preview video from the device's camera, use the [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) class as described in [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md). After you have initialized the **MediaCapture** object, you can add one or more video effects to the preview or capture stream by calling [**AddVideoEffectAsync**](/uwp/api/windows.media.capture.mediacapture.addvideoeffectasync), passing in an [**IVideoEffectDefinition**](/uwp/api/Windows.Media.Effects.IVideoEffectDefinition) object representing the effect to be added, and a member of the [**MediaStreamType**](/uwp/api/Windows.Media.Capture.MediaStreamType) enumeration indicating whether the effect should be added to the camera's preview stream or the record stream. - -> [!NOTE] -> On some devices, the preview stream and the capture stream are the same, which means that if you specify **MediaStreamType.VideoPreview** or **MediaStreamType.VideoRecord** when you call **AddVideoEffectAsync**, the effect will be applied to both preview and record streams. You can determine whether the preview and record streams are the same on the current device by checking the [**VideoDeviceCharacteristic**](/uwp/api/windows.media.capture.mediacapturesettings.videodevicecharacteristic) property of the [**MediaCaptureSettings**](/uwp/api/windows.media.capture.mediacapture.mediacapturesettings) for the **MediaCapture** object. If the value of this property is **VideoDeviceCharacteristic.AllStreamsIdentical** or **VideoDeviceCharacteristic.PreviewRecordStreamsIdentical**, then the streams are the same and any effect you apply to one will affect the other. - -The following example adds an effect to both the camera preview and record streams. This example illustrates checking to see if the record and preview streams are the same. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetBasicAddEffect"::: - -Note that **AddVideoEffectAsync** returns an object that implements [**IMediaExtension**](/uwp/api/Windows.Media.IMediaExtension) that represents the added video effect. Some effects allow you to change the effect settings by passing a [**PropertySet**](/uwp/api/Windows.Foundation.Collections.PropertySet) into the [**SetProperties**](/uwp/api/windows.media.imediaextension.setproperties) method. - -Starting with Windows 10, version 1607, you can also use the object returned by **AddVideoEffectAsync** to remove the effect from the video pipeline by passing it into [**RemoveEffectAsync**](/uwp/api/windows.media.capture.mediacapture.removeeffectasync). **RemoveEffectAsync** automatically determines whether the effect object parameter was added to the preview or record stream, so you don't need to specify the stream type when making the call. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetRemoveOneEffect"::: - -You can also remove all effects from the preview or capture stream by calling [**ClearEffectsAsync**](/uwp/api/windows.media.capture.mediacapture.cleareffectsasync) and specifying the stream for which all effects should be removed. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetClearAllEffects"::: - -## Video stabilization effect - -The video stabilization effect manipulates the frames of a video stream to minimize shaking caused by holding the capture device in your hand. Because this technique causes the pixels to be shifted right, left, up, and down, and because the effect can't know what the content just outside the video frame is, the stabilized video is cropped slightly from the original video. A utility function is provided to allow you to adjust your video encoding settings to optimally manage the cropping performed by the effect. - -On devices that support it, Optical Image Stabilization (OIS) stabilizes video by mechanically manipulating the capture device and, therefore, does not need to crop the edges of the video frames. For more information, see [Capture device controls for video capture](capture-device-controls-for-video-capture.md). - -### Set up your app to use video stabilization - -Declare a member variable to store the [**VideoStabilizationEffect**](/uwp/api/Windows.Media.Core.VideoStabilizationEffect) object. As part of the effect implementation, you will modify the encoding properties that you use to encode the captured video. Declare two variables to store a backup copy of the initial input and output encoding properties so that you can restore them later when the effect is disabled. Finally, declare a member variable of type [**MediaEncodingProfile**](/uwp/api/Windows.Media.MediaProperties.MediaEncodingProfile) because this object will be accessed from multiple locations within your code. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetDeclareVideoStabilizationEffect"::: - -For this scenario, you should assign the media encoding profile object to a member variable so that you can access it later. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetEncodingProfileMember"::: - -### Initialize the video stabilization effect - -After your **MediaCapture** object has been initialized, create a new instance of the [**VideoStabilizationEffectDefinition**](/uwp/api/Windows.Media.Core.VideoStabilizationEffectDefinition) object. Call [**MediaCapture.AddVideoEffectAsync**](/uwp/api/windows.media.capture.mediacapture.addvideoeffectasync) to add the effect to the video pipeline and retrieve an instance of the [**VideoStabilizationEffect**](/uwp/api/Windows.Media.Core.VideoStabilizationEffect) class. Specify [**MediaStreamType.VideoRecord**](/uwp/api/Windows.Media.Capture.MediaStreamType) to indicate that the effect should be applied to the video record stream. - -Register an event handler for the [**EnabledChanged**](/uwp/api/windows.media.core.videostabilizationeffect.enabledchanged) event and call the helper method **SetUpVideoStabilizationRecommendationAsync**, both of which are discussed later in this article. Finally, set the [**Enabled**](/uwp/api/windows.media.core.videostabilizationeffect.enabled) property of the effect to true to enable the effect. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetCreateVideoStabilizationEffect"::: - -### Use recommended encoding properties - -As discussed earlier in this article, the technique that the video stabilization effect uses necessarily causes the stabilized video to be cropped slightly from the source video. Define the following helper function in your code in order to adjust the video encoding properties to optimally handle this limitation of the effect. This step is not required in order to use the video stabilization effect, but if you don't perform this step, the resulting video will be upscaled slightly and therefore have slightly lower visual fidelity. - -Call [**GetRecommendedStreamConfiguration**](/uwp/api/windows.media.core.videostabilizationeffect.getrecommendedstreamconfiguration) on your video stabilization effect instance, passing in the [**VideoDeviceController**](/uwp/api/Windows.Media.Devices.VideoDeviceController) object, which informs the effect about your current input stream encoding properties, and your **MediaEncodingProfile** which lets the effect know your current output encoding properties. This method returns a [**VideoStreamConfiguration**](/uwp/api/Windows.Media.Capture.VideoStreamConfiguration) object containing new recommended input and output stream encoding properties. - -The recommended input encoding properties are, if it is supported by the device, a higher resolution that the initial settings you provided so that there is minimal loss in resolution after the effect's cropping is applied. - -Call [**VideoDeviceController.SetMediaStreamPropertiesAsync**](/uwp/api/windows.media.devices.videodevicecontroller.setmediastreampropertiesasync) to set the new encoding properties. Before setting the new properties, use the member variable to store the initial encoding properties so that you can change the settings back when you disable the effect. - -If the video stabilization effect must crop the output video, the recommended output encoding properties will be the size of the cropped video. This means that the output resolution will match the cropped video size. If you do not use the recommended output properties, the video will be scaled up to match the initial output size, which will result in a loss of visual fidelity. - -Set the [**Video**](/uwp/api/windows.media.mediaproperties.mediaencodingprofile.video) property of the **MediaEncodingProfile** object. Before setting the new properties, use the member variable to store the initial encoding properties so that you can change the settings back when you disable the effect. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetSetUpVideoStabilizationRecommendationAsync"::: - -### Handle the video stabilization effect being disabled - -The system may automatically disable the video stabilization effect if the pixel throughput is too high for the effect to handle or if it detects that the effect is running slowly. If this occurs, the EnabledChanged event is raised. The **VideoStabilizationEffect** instance in the *sender* parameter indicates the new state of the effect, enabled or disabled. The [**VideoStabilizationEffectEnabledChangedEventArgs**](/uwp/api/Windows.Media.Core.VideoStabilizationEffectEnabledChangedEventArgs) has a [**VideoStabilizationEffectEnabledChangedReason**](/uwp/api/Windows.Media.Core.VideoStabilizationEffectEnabledChangedReason) value indicating why the effect was enabled or disabled. Note that this event is also raised if you programmatically enable or disable the effect, in which case the reason will be **Programmatic**. - -Typically, you would use this event to adjust your app's UI to indicate the current status of video stabilization. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetVideoStabilizationEnabledChanged"::: - -### Clean up the video stabilization effect - -To clean up the video stabilization effect, call [**RemoveEffectAsync**](/uwp/api/windows.media.capture.mediacapture.removeeffectasync) to remove the effect from the video pipeline. If the member variables containing the initial encoding properties are not null, use them to restore the encoding properties. Finally, remove the **EnabledChanged** event handler and set the effect to null. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetCleanUpVisualStabilizationEffect"::: - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) -  - -  diff --git a/hub/apps/develop/camera/hdr-low-light-photo-capture.md b/hub/apps/develop/camera/hdr-low-light-photo-capture.md deleted file mode 100644 index f5183fad1e..0000000000 --- a/hub/apps/develop/camera/hdr-low-light-photo-capture.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -ms.assetid: 0186EA01-8446-45BA-A109-C5EB4B80F368 -description: Learn how to use the AdvancedPhotoCapture class to capture high dynamic range (HDR) and low-light photos in a WinUI 3 app. -title: High dynamic range (HDR) and low-light photo capture -ms.date: 08/22/2024 -ms.topic: article -keywords: windows 10, windows 11, winui3, camera -ms.localizationpriority: medium ---- -# High dynamic range (HDR) and low-light photo capture - -This article shows you how to use the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) class to capture high dynamic range (HDR) photos. This API also allows you to obtain a reference frame from the HDR capture before the processing of the final image is complete. - -Other articles related to HDR capture include: - -- You can use the [**SceneAnalysisEffect**](/uwp/api/Windows.Media.Core.SceneAnalysisEffect) to allow the system to evaluate the content of the media capture preview stream to determine if HDR processing would improve the capture result. For more information, see [Scene analysis for MediaCapture](scene-analysis-for-media-capture.md). - -- Use the [**HdrVideoControl**](/uwp/api/Windows.Media.Devices.HdrVideoControl) to capture video using the Windows built-in HDR processing algorithm. For more information, see [Capture device controls for video capture](capture-device-controls-for-video-capture.md). - -- You can use the [**VariablePhotoSequenceCapture**](/uwp/api/Windows.Media.Capture.Core.VariablePhotoSequenceCapture) to capture a sequence of photos, each with different capture settings, and implement your own HDR or other processing algorithm. For more information, see [Variable photo sequence](variable-photo-sequence.md). - -> [!NOTE] -> Starting with Windows 10, version 1709, recording video and using **AdvancedPhotoCapture** concurrently is supported. This is not supported in previous versions. This change means that you can have a prepared **[LowLagMediaRecording](/uwp/api/windows.media.capture.lowlagmediarecording)** and **[AdvancedPhotoCapture](/uwp/api/windows.media.capture.advancedphotocapture)** at the same time. You can start or stop video recording between calls to **[MediaCapture.PrepareAdvancedPhotoCaptureAsync](/uwp/api/windows.media.capture.mediacapture.prepareadvancedphotocaptureasync)** and **[AdvancedPhotoCapture.FinishAsync](/uwp/api/windows.media.capture.advancedphotocapture.FinishAsync)**. You can also call **[AdvancedPhotoCapture.CaptureAsync](/uwp/api/windows.media.capture.advancedphotocapture.CaptureAsync)** while video is recording. However, some **AdvancedPhotoCapture** scenarios, like capturing an HDR photo while recording video would cause some video frames to be altered by the HDR capture, resulting in a negative user experience. For this reason, the list of modes returned by the **[AdvancedPhotoControl.SupportedModes](/uwp/api/windows.media.devices.advancedphotocontrol.SupportedModes)** will be different while video is recording. You should check this value immediately after starting or stopping video recording to ensure that the desired mode is supported in the current video recording state. - -> [!NOTE] -> Starting with Windows 10, version 1709, when the **AdvancedPhotoCapture** is set to HDR mode, the setting of the [**FlashControl.Enabled**](/uwp/api/windows.media.devices.flashcontrol.enabled) property is ignored and the flash is never fired. For other capture modes, if the **FlashControl.Enabled**, it will override the **AdvancedPhotoCapture** settings and cause a normal photo to be captured with flash. If [**Auto**](/uwp/api/windows.media.devices.flashcontrol.auto) is set to true, the **AdvancedPhotoCapture** may or may not use flash, depending on the camera driver's default behavior for the conditions in the current scene. On previous releases, the **AdvancedPhotoCapture** flash setting always overrides the **FlashControl.Enabled** setting. - -There is a full sample demonstrating the use of the **AdvancedPhotoCapture** class that you can use to see the API used in context or as a starting point for your own app. For more information see, [Camera Advanced Capture sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraAdvancedCapture). - -## HDR photo capture - -### Determine if HDR photo capture is supported on the current device - -The HDR capture technique described in this article is performed using the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) object. Not all devices support HDR capture with **AdvancedPhotoCapture**. Determine if the device on which your app is currently running supports the technique by getting the **MediaCapture** object's [**VideoDeviceController**](/uwp/api/Windows.Media.Devices.VideoDeviceController) and then getting the [**AdvancedPhotoControl**](/uwp/api/Windows.Media.Devices.AdvancedPhotoControl) property. Check the video device controller's [**SupportedModes**](/uwp/api/windows.media.devices.advancedphotocontrol.supportedmodes) collection to see if it includes [**AdvancedPhotoMode.Hdr**](/uwp/api/Windows.Media.Devices.AdvancedPhotoMode). If it does, HDR capture using **AdvancedPhotoCapture** is supported. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetHdrSupported"::: - -### Configure and prepare the AdvancedPhotoCapture object - -Because you will need to access the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) instance from multiple places within your code, you should declare a member variable to hold the object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetDeclareAdvancedCapture"::: - -In your app, after you have initialized the **MediaCapture** object, create an [**AdvancedPhotoCaptureSettings**](/uwp/api/Windows.Media.Devices.AdvancedPhotoCaptureSettings) object and set the mode to [**AdvancedPhotoMode.Hdr**](/uwp/api/Windows.Media.Devices.AdvancedPhotoMode). Call the [**AdvancedPhotoControl**](/uwp/api/Windows.Media.Devices.AdvancedPhotoControl) object's [**Configure**](/uwp/api/windows.media.devices.advancedphotocontrol.configure) method, passing in the **AdvancedPhotoCaptureSettings** object you created. - -Call the **MediaCapture** object's [**PrepareAdvancedPhotoCaptureAsync**](/uwp/api/windows.media.capture.mediacapture.prepareadvancedphotocaptureasync), passing in an [**ImageEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.ImageEncodingProperties) object specifying the type of encoding the capture should use. The **ImageEncodingProperties** class provides static methods for creating the image encodings that are supported by **MediaCapture**. - -**PrepareAdvancedPhotoCaptureAsync** returns the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) object you will use to initiate photo capture. You can use this object to register handlers for the [**OptionalReferencePhotoCaptured**](/uwp/api/windows.media.capture.advancedphotocapture.optionalreferencephotocaptured) and [**AllPhotosCaptured**](/uwp/api/windows.media.capture.advancedphotocapture.allphotoscaptured) which are discussed later in this article. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCreateAdvancedCaptureAsync"::: - -### Capture an HDR photo - -Capture an HDR photo by calling the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) object's [**CaptureAsync**](/uwp/api/windows.media.capture.advancedphotocapture.captureasync) method. This method returns an [**AdvancedCapturedPhoto**](/uwp/api/Windows.Media.Capture.AdvancedCapturedPhoto) object that provides the captured photo in its [**Frame**](/uwp/api/windows.media.capture.advancedcapturedphoto.frame) property. Next, the photo is saved to disk. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCaptureHdrPhotoAsync"::: - - -### Get optional reference frame - -The HDR process captures multiple frames and then composites them into a single image after all of the frames have been captured. You can get access to a frame after it is captured but before the entire HDR process is complete by handling the [**OptionalReferencePhotoCaptured**](/uwp/api/windows.media.capture.advancedphotocapture.optionalreferencephotocaptured) event. You don't need to do this if you are only interested in the final HDR photo result. - -> [!IMPORTANT] -> [**OptionalReferencePhotoCaptured**](/uwp/api/windows.media.capture.advancedphotocapture.optionalreferencephotocaptured) is not raised on devices that support hardware HDR and therefore do not generate reference frames. Your app should handle the case where this event is not raised. - -Because the reference frame arrives out of context of the call to **CaptureAsync**, a mechanism is provided to pass context information to the **OptionalReferencePhotoCaptured** handler. First you should call an object that will contain your context information. The name and contents of this object is up to you. This example defines an object that has members to track the file name and camera orientation of the capture. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetAdvancedCaptureContext"::: - - -Create a new instance of your context object, populate its members, and then pass it into the overload of [**CaptureAsync**](/uwp/api/windows.media.capture.advancedphotocapture.captureasync) that accepts an object as a parameter. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCaptureWithContext"::: - -In the [**OptionalReferencePhotoCaptured**](/uwp/api/windows.media.capture.advancedphotocapture.optionalreferencephotocaptured) event handler, cast the [**Context**](/uwp/api/windows.media.capture.optionalreferencephotocapturedeventargs.context) property of the [**OptionalReferencePhotoCapturedEventArgs**](/uwp/api/Windows.Media.Capture.OptionalReferencePhotoCapturedEventArgs) object to your context object class. This example modifies the file name to distinguish the reference frame image from the final HDR image and then saves the image to disk. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetOptionalReferencePhotoCaptured"::: - -### Receive a notification when all frames have been captured - -The HDR photo capture has two steps. First, multiple frames are captured, and then the frames are processed into the final HDR image. You can't initiate another capture while the source HDR frames are still being captured, but you can initiate a capture after all of the frames have been captured but before the HDR post-processing is complete. The [**AllPhotosCaptured**](/uwp/api/windows.media.capture.advancedphotocapture.allphotoscaptured) event is raised when the HDR captures are complete, letting you know that you can initiate another capture. A typical scenario is to disable your UI's capture button when HDR capture begins and then reenable it when **AllPhotosCaptured** is raised. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetAllPhotosCaptured"::: - -### Clean up the AdvancedPhotoCapture object - -When your app is done capturing, before disposing of the **MediaCapture** object, you should shut down the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) object by calling [**FinishAsync**](/uwp/api/windows.media.capture.advancedphotocapture.finishasync) and setting your member variable to null. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCleanUpAdvancedPhotoCapture"::: - -## Low-light photo capture - -Starting with Windows 10, version 1607, **AdvancedPhotoCapture** can be used to capture photos using a built-in algorithm that enhances the quality of photos captured in low-light settings. When you use the low-light feature of the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) class, the system will evaluate the current scene and, if needed, apply an algorithm to compensate for low-light conditions. If the system determines that the algorithm is not needed, a regular capture is performed instead. - -Before using low-light photo capture, determine if the device on which your app is currently running supports the technique by getting the **MediaCapture** object's [**VideoDeviceController**](/uwp/api/Windows.Media.Devices.VideoDeviceController) and then getting the [**AdvancedPhotoControl**](/uwp/api/Windows.Media.Devices.AdvancedPhotoControl) property. Check the video device controller's [**SupportedModes**](/uwp/api/windows.media.devices.advancedphotocontrol.supportedmodes) collection to see if it includes [**AdvancedPhotoMode.LowLight**](/uwp/api/Windows.Media.Devices.AdvancedPhotoMode). If it does, low-light capture using **AdvancedPhotoCapture** is supported. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetLowLightSupported"::: - -In your app, after you have initialized the **MediaCapture** object, create an [**AdvancedPhotoCaptureSettings**](/uwp/api/Windows.Media.Devices.AdvancedPhotoCaptureSettings) object and set the mode to [**AdvancedPhotoMode.LowLight**](/uwp/api/Windows.Media.Devices.AdvancedPhotoMode). Call the [**AdvancedPhotoControl**](/uwp/api/Windows.Media.Devices.AdvancedPhotoControl) object's [**Configure**](/uwp/api/windows.media.devices.advancedphotocontrol.configure) method, passing in the **AdvancedPhotoCaptureSettings** object you created. - -Call the **MediaCapture** object's [**PrepareAdvancedPhotoCaptureAsync**](/uwp/api/windows.media.capture.mediacapture.prepareadvancedphotocaptureasync), passing in an [**ImageEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.ImageEncodingProperties) object specifying the type of encoding the capture should use. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCreateAdvancedCaptureLowLightAsync"::: - -To capture a photo, call [**CaptureAsync**](/uwp/api/windows.media.capture.advancedphotocapture.captureasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCaptureLowLight"::: - -You can capture multiple low-light photos without reconfiguring the **AdvancedPhotoCapture** object, but when you are done capturing, you should call [**FinishAsync**](/uwp/api/windows.media.capture.advancedphotocapture.finishasync) to clean up the object and associated resources. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCleanUpAdvancedPhotoCapture"::: - -## Working with AdvancedCapturedPhoto objects - -[**AdvancedPhotoCapture.CaptureAsync**](/uwp/api/windows.media.capture.advancedphotocapture.captureasync) returns an [**AdvancedCapturedPhoto**](/uwp/api/Windows.Media.Capture.AdvancedCapturedPhoto) object representing the captured photo. This object exposes the [**Frame**](/uwp/api/windows.media.capture.advancedcapturedphoto.frame) property which returns a [**CapturedFrame**](/uwp/api/Windows.Media.Capture.CapturedFrame) object representing the image. The [**OptionalReferencePhotoCaptured**](/uwp/api/windows.media.capture.advancedphotocapture.optionalreferencephotocaptured) event also provides a **CapturedFrame** object in its event args. After you get an object of this type, there are a number of things you can do with it, including creating a [**SoftwareBitmap**](/uwp/api/Windows.Graphics.Imaging.SoftwareBitmap) or saving the image to a file. - -## Get a SoftwareBitmap from a CapturedFrame - -Get a **SoftwareBitmap** from a **CapturedFrame** object by simply accessing the [**SoftwareBitmap**](/uwp/api/windows.media.capture.capturedframe.softwarebitmap) property of the object. However, most encoding formats do not support **SoftwareBitmap** with **AdvancedPhotoCapture**, so you should check and make sure the property is not null before using it. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetSoftwareBitmapFromCapturedFrame"::: - -In the current release, the only encoding format that supports **SoftwareBitmap** for **AdvancedPhotoCapture** is uncompressed NV12. So, if you want to use this feature, you must specify that encoding when you call [**PrepareAdvancedPhotoCaptureAsync**](/uwp/api/windows.media.capture.mediacapture.prepareadvancedphotocaptureasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetUncompressedNv12"::: - -Of course, you can always save the image to a file and then load the file into a **SoftwareBitmap** in a separate step. For more information about working with **SoftwareBitmap**, see [**Create, edit, and save bitmap images**](/windows/uwp/audio-video-camera/imaging). - - diff --git a/hub/apps/develop/camera/launch-camera-settings.md b/hub/apps/develop/camera/launch-camera-settings.md deleted file mode 100644 index 8c84fb916b..0000000000 --- a/hub/apps/develop/camera/launch-camera-settings.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -description: Learn how to launch the Windows Settings app directly to the camera settings page. -title: Launch the camera settings page -ms.date: 11/26/2024 -ms.topic: article -keywords: windows 10, winui 3 -dev_langs: -- csharp -ms.localizationpriority: medium ---- - - -# Launch the camera settings page - -Windows defines a set of URIs that allow apps to launch the Windows Settings app and display a particular settings page. This article explains how to launch the Windows Settings app directly to the camera settings page and, optionally, navigate directly to the settings for a particular camera on the device. For more information, see [Launch the Windows Settings app](/windows/uwp/launch-resume/launch-settings-app). - -## The camera settings URL - -Starting with Windows 11, Build 22000, the URI `ms-settings:camera` launches the Windows Settings app and navigates to the camera settings page. Note that in previous versions of Windows, this same URI would launch the default camera application. In addition to the general camera settings page, you can append the query string parameter `cameraId` set to the symbolic link name, in escaped URI format, to launch directly to the settings page for the associated camera. - -In the following example, the [DeviceInformation](/uwp/api/Windows.Devices.Enumeration.DeviceInformation) class is used to retrieve the symbolic link name for the first video capture device on the current machine, if one exists. Next, [LaunchUriAsync](/uwp/api/windows.system.launcher.launchuriasync) is called to launch the Windows Settings app. The `ms-settings:camera` Uri specifies that the camera settings page should be shown. The optional query string parameter `cameraId` is set to the symbolic link name for the camera, escaped with a call to [Url.EscapeDataString](/dotnet/api/system.uri.escapedatastring), to specify that the settings for the associated camera should be shown. - - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetLaunchCameraSettings"::: - - -## Related topics - -* [Launch the Windows Settings app](/windows/uwp/launch-resume/launch-settings-app) \ No newline at end of file diff --git a/hub/apps/develop/camera/process-audio-frames-with-mediaframereader.md b/hub/apps/develop/camera/process-audio-frames-with-mediaframereader.md deleted file mode 100644 index 2bb2e4dcec..0000000000 --- a/hub/apps/develop/camera/process-audio-frames-with-mediaframereader.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -ms.assetid: D6A785C6-DF28-47E6-BDC1-7A7129EC40A0 -description: This article shows you how to use a MediaFrameReader with MediaCapture to get AudioFrames containing audio data from a capture source. -title: Process audio frames with MediaFrameReader -ms.date: 04/18/2018 -ms.topic: article -keywords: windows 10, uwp -ms.localizationpriority: medium ---- -# Process audio frames with MediaFrameReader - -This article shows you how to use a [**MediaFrameReader**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReader) with [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) to get audio data from a media frame source. To learn about using a **MediaFrameReader** to get image data, such as from a color, infrared, or depth camera, see [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md). That article provides a general overview of the frame reader usage pattern and discusses some additional features of the **MediaFrameReader** class, such as using **MediaFrameSourceGroup** to retrieve frames from multiple sources at the same time. - -> [!NOTE] -> The features discussed in this article are only available starting with Windows 10, version 1803. - -## Setting up your project -The process for acquiring audio frames is largely the same as acquiring other types of media frames. As with any app that uses **MediaCapture**, you must declare that your app uses the *webcam* capability before attempting to access any camera device. If your app will capture from an audio device, you should also declare the *microphone* device capability. - -## Select frame sources and frame source groups - -The first step in capturing audio frames is to initialize a [**MediaFrameSource**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSource) representing the source of the audio data, such as a microphone or other audio capture device. To do this, you must create a new instance of the [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) object. For this example, the only initialization setting for the **MediaCapture** is setting the [**StreamingCaptureMode**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.streamingcapturemode) to indicate that we want to stream audio from the capture device. - -After calling [**MediaCapture.InitializeAsync**](/uwp/api/windows.media.capture.mediacapture.initializeasync), you can get the list of accessible media frame sources with the [**FrameSources**](/uwp/api/windows.media.capture.mediacapture.framesources) property. This example selects all frame sources where the [**MediaFrameSourceInfo**](/uwp/api/windows.media.capture.frames.mediaframesourceinfo) describing the frame source has a [**MediaStreamType**](/uwp/api/windows.media.capture.frames.mediaframesourceinfo.mediastreamtype) of **Audio**, indicating that the media source produces audio data. - -If the query returns one or more frame sources, you can check the [**CurrentFormat**](/uwp/api/windows.media.capture.frames.mediaframesource.currentformat) property to see if the source supports the audio format you desire - in this example, float audio data. Check the [**AudioEncodingProperties**](/uwp/api/windows.media.capture.frames.mediaframeformat.audioencodingproperties) to make sure the audio encoding you desire is supported by the source. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetInitAudioFrameSource"::: - -## Create and Start the MediaFrameReader - -Get a new instance of **MediaFrameReader** by calling [**MediaCapture.CreateFrameReaderAsync**](/uwp/api/windows.media.capture.mediacapture.createframereaderasync#Windows_Media_Capture_MediaCapture_CreateFrameReaderAsync_Windows_Media_Capture_Frames_MediaFrameSource_), passing the **MediaFrameSource** object you selected in the previous step. By default, audio frames are obtained in buffered mode, making it less likely that frames will be dropped, although this can still occur if you are not processing audio frames fast enough and fill up the system's alloted memory buffer. - -Register a handler for the [**MediaFrameReader.FrameArrived**](/uwp/api/windows.media.capture.frames.mediaframereader.framearrived) event, which is raised by the system when a new frame of audio data is available. Call [**StartAsync**](/uwp/api/windows.media.capture.frames.mediaframereader.startasync) to begin the acquisition of audio frames. If the frame reader fails to start, the status value returned from the call will have a value other than [**Success**](/uwp/api/windows.media.capture.frames.mediaframereaderstartstatus). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetCreateAudioFrameReader"::: - -In the **FrameArrived** event handler, call [**TryAcquireLatestFrame**](/uwp/api/windows.media.capture.frames.mediaframereader.tryacquirelatestframe) on the **MediaFrameReader** object passed as the sender to the handler to attempt to retrieve a reference to the latest media frame. Note that this object can be null, so you should always check before using the object. The typs of media frame wrapped in the **MediaFrameReference** returned from **TryAcquireLatestFrame** depends on what type of frame source or sources you configured the frame reader to acquire. Since the frame reader in this example was set up to acquire audio frames, it gets the underlying frame using the [**AudioMediaFrame**](/uwp/api/windows.media.capture.frames.mediaframereference.audiomediaframe) property. - -This **ProcessAudioFrame** helper method in the example below shows how to get an [**AudioFrame**](/uwp/api/windows.media.audioframe) which provides information such as the timestamp of the frame and whether it is discontinuous from the **AudioMediaFrame** object. To read or process the audio sample data, you will need to get the [**AudioBuffer**](/uwp/api/windows.media.audiobuffer) object from the **AudioMediaFrame** object, create an [**IMemoryBufferReference**](/uwp/api/windows.foundation.imemorybufferreference), and then call the COM method **IMemoryBufferByteAccess::GetBuffer** to retrieve the data. See the note below the code listing for more information on accessing native buffers. - -The format of the data depends on the frame source. In this example, when selecting a media frame source, we explicitly made certain that the selected frame source used two channels of float data. The rest of the example code shows how to determine the duration and sample count for the audio data in the frame. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetProcessAudioFrame"::: - -> [!NOTE] -> In order to do operate on the audio data, you must access a native memory buffer. To do this, you must use the **IMemoryBufferByteAccess** COM interface by including the code listing below. Operations on the native buffer must be performed in a method that uses the **unsafe** keyword. You also need to check the box to allow unsafe code in the **Build** tab of the **Project -> Properties** dialog. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetIMemoryBufferByteAccess"::: - -## Additional information on using MediaFrameReader with audio data - -You can retrieve the [**AudioDeviceController**](/uwp/api/Windows.Media.Devices.AudioDeviceController) associated with the audio frame source by accessing the [**MediaFrameSource.Controller**](/uwp/api/windows.media.capture.frames.mediaframesource.controller) property. This object can be used to get or set the stream properties of the capture device or to control the capture level. The following example mutes the audio device so that frames continue to be acquired by the frame reader, but all samples have value of 0. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetAudioDeviceControllerMute"::: - -You can use an [**AudioFrame**](/uwp/api/windows.media.audioframe) object to pass audio data captured by a media frame source into an [**AudioGraph**](/uwp/api/windows.media.audio.audiograph). Pass the frame into the [**AddFrame**](/uwp/api/windows.media.audio.audioframeinputnode.addframe) method of an [**AudioFrameInputNode**](/uwp/api/windows.media.audio.audioframeinputnode). For more information on using audio graphs to capture, process, and mix audio signals, see [Audio graphs](/windows/uwp/audio-video-camera/audio-graphs). - -## Related topics - -* [Process media frames with MediaFrameReader](process-media-frames-with-mediaframereader.md) -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) -* [Camera frames sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraFrames) -* [Audio graphs](/windows/uwp/audio-video-camera/audio-graphs) -  diff --git a/hub/apps/develop/camera/process-media-frames-with-mediaframereader.md b/hub/apps/develop/camera/process-media-frames-with-mediaframereader.md deleted file mode 100644 index 6c23c660f3..0000000000 --- a/hub/apps/develop/camera/process-media-frames-with-mediaframereader.md +++ /dev/null @@ -1,243 +0,0 @@ ---- -description: Learn how to use a MediaFrameReader with MediaCapture to get media frames from one or more available sources, including color, depth, and infrared cameras, audio devices, or even custom frame sources such as those that produce skeletal tracking frames. -title: Process media frames with MediaFrameReader -ms.date: 01/08/2025 -ms.topic: article -keywords: windows 10, windows 11, winui3, camera -ms.localizationpriority: medium ---- - -# Process media frames with MediaFrameReader - -This article shows you how to use a [**MediaFrameReader**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReader) with [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) to get media frames from one or more available sources, including color, depth, and infrared cameras, audio devices, or even custom frame sources such as those that produce skeletal tracking frames. This feature is designed to be used by apps that perform real-time processing of media frames, such as augmented reality and depth-aware camera apps. - -If you are interested in simply capturing video or photos, such as a typical photography app, then you probably want to use one of the other capture techniques supported by [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture). For a list of available media capture techniques and articles showing how to use them, see [**Camera**](camera.md). - -> [!NOTE] -> The features discussed in this article are only available starting with Windows 10, version 1607. - -> [!NOTE] -> There is a Universal Windows app sample that demonstrates using **MediaFrameReader** to display frames from different frame sources, including color, depth, and infrared cameras. For more information, see [Camera frames sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraFrames). - -> [!NOTE] -> A new set of APIs for using **MediaFrameReader** with audio data were introduced in Windows 10, version 1803. For more information, see [Process audio frames with MediaFrameReader](process-audio-frames-with-mediaframereader.md). - - -## Select frame sources and frame source groups - -Many apps that process media frames need to get frames from multiple sources at once, such as a device's color and depth cameras. The [**MediaFrameSourceGroup**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceGroup) object represents a set of media frame sources that can be used simultaneously. Call the static method [**MediaFrameSourceGroup.FindAllAsync**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.findallasync) to get a list of all of the groups of frame sources supported by the current device. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetFindAllAsync"::: - -You can also create a [**DeviceWatcher**](/uwp/api/Windows.Devices.Enumeration.DeviceWatcher) using [**DeviceInformation.CreateWatcher**](/uwp/api/windows.devices.enumeration.deviceinformation.createwatcher) and the value returned from [**MediaFrameSourceGroup.GetDeviceSelector**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.getdeviceselector) to receive notifications when the available frame source groups on the device changes, such as when an external camera is plugged in. For more information see [**Enumerate devices**](/windows/uwp/devices-sensors/enumerate-devices). - -A [**MediaFrameSourceGroup**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceGroup) has a collection of [**MediaFrameSourceInfo**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceInfo) objects that describe the frame sources included in the group. After retrieving the frame source groups available on the device, you can select the group that exposes the frame sources you are interested in. - -The following example shows the simplest way to select a frame source group. This code simply loops over all of the available groups and then loops over each item in the [**SourceInfos**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.sourceinfos) collection. Each **MediaFrameSourceInfo** is checked to see if it supports the features we are seeking. In this case, the [**MediaStreamType**](/uwp/api/windows.media.capture.frames.mediaframesourceinfo.mediastreamtype) property is checked for the value [**VideoPreview**](/uwp/api/Windows.Media.Capture.MediaStreamType), meaning the device provides a video preview stream, and the [**SourceKind**](/uwp/api/windows.media.capture.frames.mediaframesourceinfo.sourcekind) property is checked for the value [**Color**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceKind), indicating that the source provides color frames. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetSimpleSelect"::: - -This method of identifying the desired frame source group and frame sources works for simple cases, but if you want to select frame sources based on more complex criteria, it can quickly become cumbersome. Another method is to use Linq syntax and anonymous objects to make the selection. The following example uses the **Select** extension method to transform the **MediaFrameSourceGroup** objects in the *frameSourceGroups* list into an anonymous object with two fields: *sourceGroup*, representing the group itself, and *colorSourceInfo*, which represents the color frame source in the group. The *colorSourceInfo* field is set to the result of **FirstOrDefault**, which selects the first object for which the provided predicate resolves to true. In this case, the predicate is true if the stream type is **VideoPreview**, the source kind is **Color**, and if the camera is on the front panel of the device. - -From the list of anonymous objects returned from the query described above, the **Where** extension method is used to select only those objects where the *colorSourceInfo* field is not null. Finally, **FirstOrDefault** is called to select the first item in the list. - -Now you can use the fields of the selected object to get references to the selected **MediaFrameSourceGroup** and the **MediaFrameSourceInfo** object representing the color camera. These will be used later to initialize the **MediaCapture** object and create a **MediaFrameReader** for the selected source. Finally, you should test to see if the source group is null, meaning the current device doesn't have your requested capture sources. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetSelectColor"::: - -The following example uses a similar technique as described above to select a source group that contains color, depth, and infrared cameras. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetColorInfraredDepth"::: - -> [!NOTE] -> Starting with Windows 10, version 1803, you can use the [**MediaCaptureVideoProfile**](/uwp/api/Windows.Media.Capture.MediaCaptureVideoProfile) class to select a media frame source with a set of desired capabilities. For more information, see the section **Use video profiles to select a frame source** later in this article. - - -## Initialize the MediaCapture object to use the selected frame source group - -The next step is to initialize the **MediaCapture** object to use the frame source group you selected in the previous step. Create an instance of the **MediaCapture** object by calling the constructor. Next, create a [**MediaCaptureInitializationSettings**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings) object that will be used to initialize the **MediaCapture** object. In this example, the following settings are used: - -* [**SourceGroup**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.sourcegroup) - This tells the system which source group you will be using to get frames. Remember that the source group defines a set of media frame sources that can be used simultaneously. -* [**SharingMode**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.sharingmode) - This tells the system whether you need exclusive control over the capture source devices. If you set this to [**ExclusiveControl**](/uwp/api/Windows.Media.Capture.MediaCaptureSharingMode), it means that you can change the settings of the capture device, such as the format of the frames it produces, but this means that if another app already has exclusive control, your app will fail when it tries to initialize the media capture device. If you set this to [**SharedReadOnly**](/uwp/api/Windows.Media.Capture.MediaCaptureSharingMode), you can receive frames from the frame sources even if they are in use by another app, but you can't change the settings for the devices. -* [**MemoryPreference**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.memorypreference) - If you specify [**CPU**](/uwp/api/Windows.Media.Capture.MediaCaptureMemoryPreference), the system will use CPU memory which guarantees that when frames arrive, they will be available as [**SoftwareBitmap**](/uwp/api/Windows.Graphics.Imaging.SoftwareBitmap) objects. If you specify [**Auto**](/uwp/api/Windows.Media.Capture.MediaCaptureMemoryPreference), the system will dynamically choose the optimal memory location to store frames. If the system chooses to use GPU memory, the media frames will arrive as an [**IDirect3DSurface**](/uwp/api/Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface) object and not as a **SoftwareBitmap**. -* [**StreamingCaptureMode**](/uwp/api/windows.media.capture.mediacaptureinitializationsettings.streamingcapturemode) - Set this to [**Video**](/uwp/api/Windows.Media.Capture.StreamingCaptureMode) to indicate that audio doesn't need to be streamed. - -Call [**InitializeAsync**](/uwp/api/windows.media.capture.mediacapture.initializeasync) to initialize the **MediaCapture** with your desired settings. Be sure to call this within a *try* block in case initialization fails. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetInitMediaCaptureFrameReader"::: - -## Set the preferred format for the frame source - -To set the preferred format for a frame source, you need to get a [**MediaFrameSource**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSource) object representing the source. You get this object by accessing the [**Frames**](/previous-versions/windows/apps/phone/jj207578(v=win.10)) dictionary of the initialized **MediaCapture** object, specifying the identifier of the frame source you want to use. This is why we saved the [**MediaFrameSourceInfo**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceInfo) object when we were selecting a frame source group. - -The [**MediaFrameSource.SupportedFormats**](/uwp/api/windows.media.capture.frames.mediaframesource.supportedformats) property contains a list of [**MediaFrameFormat**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameFormat) objects describing the supported formats for the frame source. In this example, a format is selected that has a width of 1080 pixels and can supply frames in 32-bit RGB format. The **FirstOrDefault** extension method selects the first entry in the list. If the selected format is null, then the requested format is not supported by the frame source. If the format is supported, you can request that the source use this format by calling [**SetFormatAsync**](/uwp/api/windows.media.capture.frames.mediaframesource.setformatasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetGetPreferredFormat"::: - -## Create a frame reader for the frame source - -To receive frames for a media frame source, use a [**MediaFrameReader**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReader). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetDeclareMediaFrameReader"::: - -Instantiate the frame reader by calling [**CreateFrameReaderAsync**](/uwp/api/windows.media.capture.mediacapture.createframereaderasync) on your initialized **MediaCapture** object. The first argument to this method is the frame source from which you want to receive frames. You can create a separate frame reader for each frame source you want to use. The second argument tells the system the output format in which you want frames to arrive. This can save you from having to do your own conversions to frames as they arrive. Note that if you specify a format that is not supported by the frame source, an exception will be thrown, so be sure that this value is in the [**SupportedFormats**](/uwp/api/windows.media.capture.frames.mediaframesource.supportedformats) collection. - -After creating the frame reader, register a handler for the [**FrameArrived**](/uwp/api/windows.media.capture.frames.mediaframereader.framearrived) event which is raised whenever a new frame is available from the source. - -Tell the system to start reading frames from the source by calling [**StartAsync**](/uwp/api/windows.media.capture.frames.mediaframereader.startasync). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetCreateFrameReader"::: - -## Handle the frame arrived event - -The [**MediaFrameReader.FrameArrived**](/uwp/api/windows.media.capture.frames.mediaframereader.framearrived) event is raised whenever a new frame is available. You can choose to process every frame that arrives or only use frames when you need them. Because the frame reader raises the event on its own thread, you may need to implement some synchronization logic to make sure that you aren't attempting to access the same data from multiple threads. This section shows you how to synchronize drawing color frames to an image control in a XAML page. This scenario addresses the additional synchronization constraint that requires all updates to XAML controls be performed on the UI thread. - -The first step in displaying frames in XAML is to create an Image control. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetImageElementXAML"::: - -In your code behind page, declare a class member variable of type **SoftwareBitmap** which will be used as a back buffer that all incoming images will be copied to. Note that the image data itself isn't copied, just the object references. Also, declare a boolean to track whether our UI operation is currently running. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetDeclareBackBuffer"::: - -Because the frames will arrive as **SoftwareBitmap** objects, you need to create a [**SoftwareBitmapSource**](/uwp/api/Windows.UI.Xaml.Media.Imaging.SoftwareBitmapSource) object which allows you to use a **SoftwareBitmap** as the source for a XAML **Control**. You should set the image source somewhere in your code before you start the frame reader. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetImageElementSource"::: - -Now it's time to implement the **FrameArrived** event handler. When the handler is called, the *sender* parameter contains a reference to the **MediaFrameReader** object which raised the event. Call [**TryAcquireLatestFrame**](/uwp/api/windows.media.capture.frames.mediaframereader.tryacquirelatestframe) on this object to attempt to get the latest frame. As the name implies, **TryAcquireLatestFrame** may not succeed in returning a frame. So, when you access the VideoMediaFrame and then SoftwareBitmap properties, be sure to test for null. In this example the null conditional operator ? is used to access the **SoftwareBitmap** and then the retrieved object is checked for null. - -The **Image** control can only display images in BRGA8 format with either pre-multiplied or no alpha. If the arriving frame is not in that format, the static method [**Convert**](/uwp/api/windows.graphics.imaging.softwarebitmap.convert) is used to convert the software bitmap to the correct format. - -Next, the [**Interlocked.Exchange**](/dotnet/api/system.threading.interlocked.exchange#System_Threading_Interlocked_Exchange__1___0____0_) method is used to swap the reference of to arriving bitmap with the backbuffer bitmap. This method swaps these references in an atomic operation that is thread-safe. After swapping, the old backbuffer image, now in the *softwareBitmap* variable is disposed of to clean up its resources. - -Next, the [**CoreDispatcher**](/uwp/api/Windows.UI.Core.CoreDispatcher) associated with the **Image** element is used to create a task that will run on the UI thread by calling [**RunAsync**](/uwp/api/windows.ui.core.coredispatcher.runasync). Because the asynchronous tasks will be performed within the task, the lambda expression passed to **RunAsync** is declared with the *async* keyword. - -Within the task, the *_taskRunning* variable is checked to make sure that only one instance of the task is running at a time. If the task isn't already running, *_taskRunning* is set to true to prevent the task from running again. In a *while* loop, **Interlocked.Exchange** is called to copy from the backbuffer into a temporary **SoftwareBitmap** until the backbuffer image is null. For each time the temporary bitmap is populated, the **Source** property of the **Image** is cast to a **SoftwareBitmapSource**, and then [**SetBitmapAsync**](/uwp/api/windows.ui.xaml.media.imaging.softwarebitmapsource.setbitmapasync) is called to set the source of the image. - -Finally, the *_taskRunning* variable is set back to false so that the task can be run again the next time the handler is called. - -> [!NOTE] -> If you access the [**SoftwareBitmap**](/uwp/api/windows.media.capture.frames.videomediaframe.softwarebitmap) or [**Direct3DSurface**](/uwp/api/windows.media.capture.frames.videomediaframe.direct3dsurface) objects provided by the [**VideoMediaFrame**](/uwp/api/windows.media.capture.frames.mediaframereference.videomediaframe) property of a [**MediaFrameReference**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReference), the system creates a strong reference to these objects, which means that they will not be disposed when you call [**Dispose**](/uwp/api/windows.media.capture.frames.mediaframereference.close) on the containing **MediaFrameReference**. You must explicitly call the **Dispose** method of the **SoftwareBitmap** or **Direct3DSurface** directly for the objects to be immediately disposed. Otherwise, the garbage collector will eventually free the memory for these objects, but you can't know when this will occur, and if the number of allocated bitmaps or surfaces exceeds the maximum amount allowed by the system, the flow of new frames will stop. You can copy retrieved frames, using the [**SoftwareBitmap.Copy**](/uwp/api/windows.graphics.imaging.softwarebitmap.copy) method for example, and then release the original frames to overcome this limitation. Also, if you create the **MediaFrameReader** using the overload [CreateFrameReaderAsync(Windows.Media.Capture.Frames.MediaFrameSource inputSource, System.String outputSubtype, Windows.Graphics.Imaging.BitmapSize outputSize)](/uwp/api/windows.media.capture.mediacapture.createframereaderasync#Windows_Media_Capture_MediaCapture_CreateFrameReaderAsync_Windows_Media_Capture_Frames_MediaFrameSource_System_String_Windows_Graphics_Imaging_BitmapSize_) or [CreateFrameReaderAsync(Windows.Media.Capture.Frames.MediaFrameSource inputSource, System.String outputSubtype)](/uwp/api/windows.media.capture.mediacapture.createframereaderasync#Windows_Media_Capture_MediaCapture_CreateFrameReaderAsync_Windows_Media_Capture_Frames_MediaFrameSource_System_String_), the frames returned are copies of the original frame data and so they do not cause frame acquisition to halt when they are retained. - - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetFrameArrived"::: - -## Cleanup resources - -When you are done reading frames, be sure to stop the media frame reader by calling [**StopAsync**](/uwp/api/windows.media.capture.frames.mediaframereader.stopasync), unregistering the **FrameArrived** handler, and disposing of the **MediaCapture** object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetCleanupFrameReader"::: - -For more information about cleaning up media capture objects when your application is suspended, see [**Show the camera preview in a WinUI 3 app**](camera-quickstart-winui3.md). - -## The FrameRenderer helper class - -This section provides the full code listing for a provides a helper class that makes it easy to display the frames from color, infrared, and depth sources in your app. Typically, you will want to do something more with depth and infrared data than just display it to the screen, but this helper class is a helpful tool for demonstrating the frame reader feature and for debugging your own frame reader implementation. The code in this section is adapted from the [Camera frames sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraFrames). - -The **FrameRenderer** helper class implements the following methods. - -* **FrameRenderer** constructor - The constructor initializes the helper class to use the XAML [**Image**](/uwp/api/Windows.UI.Xaml.Controls.Image) element you pass in for displaying media frames. -* **ProcessFrame** - This method displays a media frame, represented by a [**MediaFrameReference**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReference), in the **Image** element you passed into the constructor. You should typically call this method from your [**FrameArrived**](/uwp/api/windows.media.capture.frames.mediaframereader.framearrived) event handler, passing in the frame returned by [**TryAcquireLatestFrame**](/uwp/api/windows.media.capture.frames.mediaframereader.tryacquirelatestframe). -* **ConvertToDisplayableImage** - This methods checks the format of the media frame and, if necessary, converts it to a displayable format. For color images, this means making sure that the color format is BGRA8 and that the bitmap alpha mode is premultiplied. For depth or infrared frames, each scanline is processed to convert the depth or infrared values to a psuedocolor gradient, using the **PsuedoColorHelper** class that is also included in the sample and listed below. - -> [!NOTE] -> In order to do pixel manipulation on **SoftwareBitmap** images, you must access a native memory buffer. To do this, you must use the IMemoryBufferByteAccess COM interface included in the code listing below and you must update your project properties to allow compilation of unsafe code. For more information, see [Create, edit, and save bitmap images](/windows/uwp/audio-video-camera/imaging). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/FrameRenderer.cs" id="SnippetIMemoryBufferByteAccess"::: - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI//FrameRenderer.cs" id="SnippetFrameRenderer"::: - -## Use MultiSourceMediaFrameReader to get time-correlated frames from multiple sources - -Starting with Windows 10, version 1607, you can use [**MultiSourceMediaFrameReader**](/uwp/api/windows.media.capture.frames.multisourcemediaframereader) to receive time-correlated frames from multiple sources. This API makes it easier to do processing that requires frames from multiple sources that were taken in close temporal proximity, such as using the [**DepthCorrelatedCoordinateMapper**](/uwp/api/windows.media.devices.core.depthcorrelatedcoordinatemapper) class. One limitation of using this new method is that frame-arrived events are only raised at the rate of the slowest capture source. Extra frames from faster sources will be dropped. Also, because the system expects frames to arrive from different sources at different rates, it does not automatically recognize if a source has stopped generating frames altogether. The example code in this section shows how to use an event to create your own timeout logic that gets invoked if correlated frames don't arrive within an app-defined time limit. - -The steps for using [**MultiSourceMediaFrameReader**](/uwp/api/windows.media.capture.frames.multisourcemediaframereader) are similar to the steps for using [**MediaFrameReader**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameReader) described previously in this article. This example will use a color source and a depth source. Declare some string variables to store the media frame source IDs that will be used to select frames from each source. Next, declare a [**ManualResetEventSlim**](/dotnet/api/system.threading.manualreseteventslim), a [**CancellationTokenSource**](/dotnet/api/system.threading.cancellationtokensource), and an [**EventHandler**](/dotnet/api/system.eventhandler) that will be used to implement timeout logic for the example. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetMultiFrameDeclarations"::: - -Using the techniques described previously in this article, query for a [**MediaFrameSourceGroup**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceGroup) that includes the color and depth sources required for this example scenario. After selecting the desired frame source group, get the [**MediaFrameSourceInfo**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSourceInfo) for each frame source. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetSelectColorAndDepth"::: - -Create and initialize a **MediaCapture** object, passing the selected frame source group in the initialization settings. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetMultiFrameInitMediaCapture"::: - -After initializing the **MediaCapture** object, retrieve [**MediaFrameSource**](/uwp/api/Windows.Media.Capture.Frames.MediaFrameSource) objects for the color and depth cameras. Store the ID for each source so that you can select the arriving frame for the corresponding source. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetGetColorAndDepthSource"::: - -Create and initialize the **MultiSourceMediaFrameReader** by calling [**CreateMultiSourceFrameReaderAsync**](/uwp/api/windows.media.capture.mediacapture.createmultisourceframereaderasync) and passing an array of frame sources that the reader will use. Register an event handler for the [**FrameArrived**](/uwp/api/windows.media.capture.frames.multisourcemediaframereader.FrameArrived) event. This example creates an instance the **FrameRenderer** helper class, described previously in this article, to render frames to an **Image** control. Start the frame reader by calling [**StartAsync**](/uwp/api/windows.media.capture.frames.multisourcemediaframereader.StartAsync). - -Register an event handler for the **CorellationFailed** event declared earlier in the example. We will signal this event if one of the media frame sources being used stops producing frames. Finally, call [**Task.Run**](/dotnet/api/system.threading.tasks.task.run#System_Threading_Tasks_Task_Run_System_Action_) to call the timeout helper method, **NotifyAboutCorrelationFailure**, on a separate thread. The implementation of this method is shown later in this article. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetInitMultiFrameReader"::: - -The **FrameArrived** event is raised whenever a new frame is available from all of the media frame sources that are managed by the **MultiSourceMediaFrameReader**. This means that the event will be raised on the cadence of the slowest media source. If one source produces multiple frames in the time that a slower source produces one frame, the extra frames from the fast source will be dropped. - -Get the [**MultiSourceMediaFrameReference**](/uwp/api/windows.media.capture.frames.multisourcemediaframereference) associated with the event by calling [**TryAcquireLatestFrame**](/uwp/api/windows.media.capture.frames.multisourcemediaframereader.TryAcquireLatestFrame). Get the **MediaFrameReference** associated with each media frame source by calling [**TryGetFrameReferenceBySourceId**](/uwp/api/windows.media.capture.frames.multisourcemediaframereference.trygetframereferencebysourceid), passing in the ID strings stored when the frame reader was initialized. - -Call the [**Set**](/dotnet/api/system.threading.manualreseteventslim.set#System_Threading_ManualResetEventSlim_Set) method of the **ManualResetEventSlim** object to signal that frames have arrived. We will check this event in the **NotifyCorrelationFailure** method that is running in a separate thread. - -Finally, perform any processing on the time-correlated media frames. This example simply displays the frame from the depth source. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetMultiFrameArrived"::: - -The **NotifyCorrelationFailure** helper method was run on a separate thread after the frame reader was started. In this method, check to see if the frame received event has been signaled. Remember, in the **FrameArrived** handler, we set this event whenever a set of correlated frames arrive. If the event hasn't been signaled for some app-defined period of time - 5 seconds is a reasonable value - and the task wasn't cancelled using the **CancellationToken**, then it's likely that one of the media frame sources has stopped reading frames. In this case you typically want to shut down the frame reader, so raise the app-defined **CorrelationFailed** event. In the handler for this event you can stop the frame reader and clean up it's associated resources as shown previously in this article. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetNotifyCorrelationFailure"::: - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetCorrelationFailure"::: - -## Use buffered frame acquisition mode to preserve the sequence of acquired frames - -Starting with Windows 10, version 1709, you can set the **[AcquisitionMode](/uwp/api/windows.media.capture.frames.mediaframereader.AcquisitionMode)** property of a **MediaFrameReader** or **MultiSourceMediaFrameReader** to **Buffered** to preserve the sequence of frames passed into your app from the frame source. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetSetBufferedFrameAcquisitionMode"::: - -In the default acquisition mode, **Realtime**, if multiple frames are acquired from the source while your app is still handling the **FrameArrived** event for a previous frame, the system will send your app the most recently acquired frame and drop additional frames waiting in the buffer. This provides your app with the most recent available frame at all times. This is typically the most useful mode for realtime computer vision applications. - -In **Buffered** acquisition mode, the system will keep all frames in the buffer and provide them to your app through the **FrameArrived** event in the order received. Note that in this mode, when system's buffer for frames is filled, the system will stop acquiring new frames until your app completes the **FrameArrived** event for previous frames, freeing up more space in the buffer. - -## Use MediaSource to display frames in a MediaPlayerElement - -Starting with Windows, version 1709, you can display frames acquired from a **MediaFrameReader** directly in a **[MediaPlayerElement](/uwp/api/windows.ui.xaml.controls.mediaplayerelement)** control in your XAML page. This is achieved by using the **[MediaSource.CreateFromMediaFrameSource](/uwp/api/windows.media.core.mediasource.createfrommediaframesource)** to create **[MediaSource](/uwp/api/windows.media.core.mediasource)** object that can be used directly by a **[MediaPlayer](/uwp/api/windows.media.playback.mediaplayer)** associated with a **MediaPlayerElement**. For detailed information on working with **MediaPlayer** and **MediaPlayerElement**, see [Play audio and video with MediaPlayer](/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer). - -The following code examples show you a simple implementation that displays the frames from a front-facing and back-facing camera simultaneously in a XAML page. - -First, add two **MediaPlayerElement** controls to your XAML page. - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetMediaPlayerElement1XAML"::: - -:::code language="xml" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml" id="SnippetMediaPlayerElement2XAML"::: - -Next, using the techniques shown in previous sections in this article, select a **MediaFrameSourceGroup** that contains **MediaFrameSourceInfo** objects for color cameras on the front panel and back panel. Note that the **MediaPlayer** does not automatically convert frames from non-color formats, such as a depth or infrared data, into color data. Using other sensor types may produce unexpected results. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetMediaSourceSelectGroup"::: - -Initialize the **MediaCapture** object to use the selected **MediaFrameSourceGroup**. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetMediaSourceInitMediaCapture"::: - -Finally, call **[MediaSource.CreateFromMediaFrameSource](/uwp/api/windows.media.core.mediasource.createfrommediaframesource)** to create a **MediaSource** for each frame source by using the **[Id](/uwp/api/windows.media.capture.frames.mediaframesourceinfo.Id)** property of the associated **MediaFrameSourceInfo** object to select one of the frame sources in the **MediaCapture** object's **[FrameSources](/uwp/api/windows.media.capture.mediacapture.FrameSources)** collection. Initialize a new **MediaPlayer** object and assign it to a **MediaPlayerElement** by calling **[SetMediaPlayer](/uwp/api/windows.ui.xaml.controls.mediaplayerelement.MediaPlayer)**. Then set the **[Source](/uwp/api/windows.media.playback.mediaplayer.Source)** property to the newly created **MediaSource** object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetMediaSourceMediaPlayer"::: - -## Use video profiles to select a frame source - -A camera profile, represented by a [**MediaCaptureVideoProfile**](/uwp/api/Windows.Media.Capture.MediaCaptureVideoProfile) object, represents a set of capabilities that a particular capture device provides, such as frame rates, resolutions, or advanced features like HDR capture. A capture device may support multiple profiles, allowing you to select the one that is optimized for your capture scenario. Starting with Windows 10, version 1803, you can use **MediaCaptureVideoProfile** to select a media frame source with particular capabilities before initializing the **MediaCapture** object. The following example code looks for a video profile that supports HDR with Wide Color Gamut (WCG) and returns a **MediaCaptureInitializationSettings** object that can be used to initialize the **MediaCapture** to use the selected device and profile. - -First, call [**MediaFrameSourceGroup.FindAllAsync**](/uwp/api/windows.media.capture.frames.mediaframesourcegroup.findallasync) to get a list of all media frame source groups available on the current device. Loop through each source group and call [**MediaCapture.FindKnownVideoProfiles**](/uwp/api/windows.media.capture.mediacapture.findknownvideoprofiles) to get a list of all of the video profiles for the current source group that support the specified profile, in this case HDR with WCG photo. If a profile that meets the criteria is found, create a new **MediaCaptureInitializationSettings** object and set the **VideoProfile** to the select profile and the **VideoDeviceId** to the **Id** property of the current media frame source group. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.FrameReader.xaml.cs" id="SnippetGetSettingsWithProfile"::: - -For more information on using camera profiles, see [Camera profiles](camera-profiles.md). - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) -* [Camera frames sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraFrames) -  - -  diff --git a/hub/apps/develop/camera/scene-analysis-for-media-capture.md b/hub/apps/develop/camera/scene-analysis-for-media-capture.md deleted file mode 100644 index 479c54551d..0000000000 --- a/hub/apps/develop/camera/scene-analysis-for-media-capture.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -description: Learn how to use the SceneAnalysisEffect and the FaceDetectionEffect to analyze the content of the MediaCapture preview stream in a WinUI 3 app. -title: Effects for analyzing camera frames -ms.date: 02/08/2017 -ms.topic: article -keywords: windows 10, windows 11, winui3, camera -ms.localizationpriority: medium ---- -# Scene analysis for MediaCapture - -This article describes how to use the [**SceneAnalysisEffect**](/uwp/api/Windows.Media.Core.SceneAnalysisEffect) and the [**FaceDetectionEffect**](/uwp/api/Windows.Media.Core.FaceDetectionEffect) to analyze the content of the media capture preview stream. - -## Scene analysis effect - -The [**SceneAnalysisEffect**](/uwp/api/Windows.Media.Core.SceneAnalysisEffect) analyzes the video frames in the media capture preview stream and recommends processing options to improve the capture result. Currently, the effect supports detecting whether the capture would be improved by using High Dynamic Range (HDR) processing. - -If the effect recommends using HDR, you can do this in the following ways: - -- Use the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) class to capture photos using the Windows built-in HDR processing algorithm. For more information, see [High dynamic range (HDR) and low-light photo capture](hdr-low-light-photo-capture.md). - -- Use the [**HdrVideoControl**](/uwp/api/Windows.Media.Devices.HdrVideoControl) to capture video using the Windows built-in HDR processing algorithm. For more information, see [Capture device controls for video capture](capture-device-controls-for-video-capture.md). - -- Use the [**VariablePhotoSequenceControl**](/uwp/api/Windows.Media.Devices.Core.VariablePhotoSequenceController) to capture a sequence of frames that you can then composite using a custom HDR implementation. For more information, see [Variable photo sequence](variable-photo-sequence.md). - - -### Initialize the scene analysis effect and add it to the preview stream - -Video effects are implemented using two APIs, an effect definition, which provides settings that the capture device needs to initialize the effect, and an effect instance, which can be used to control the effect. Since you may want to access the effect instance from multiple places within your code, you should typically declare a member variable to hold the object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetDeclareSceneAnalysisEffect"::: - -In your app, after you have initialized the **MediaCapture** object, create a new instance of [**SceneAnalysisEffectDefinition**](/uwp/api/Windows.Media.Core.SceneAnalysisEffectDefinition). - -Register the effect with the capture device by calling [**AddVideoEffectAsync**](/uwp/api/windows.media.capture.mediacapture.addvideoeffectasync) on your **MediaCapture** object, providing the **SceneAnalysisEffectDefinition** and specifying [**MediaStreamType.VideoPreview**](/uwp/api/Windows.Media.Capture.MediaStreamType) to indicate that the effect should be applied to the video preview stream, as opposed to the capture stream. **AddVideoEffectAsync** returns an instance of the added effect. Because this method can be used with multiple effect types, you must cast the returned instance to a [**SceneAnalysisEffect**](/uwp/api/Windows.Media.Core.SceneAnalysisEffect) object. - -To receive the results of the scene analysis, you must register a handler for the [**SceneAnalyzed**](/uwp/api/windows.media.core.sceneanalysiseffect.sceneanalyzed) event. - -Currently, the scene analysis effect only includes the high dynamic range analyzer. Enable HDR analysis by setting the effect's [**HighDynamicRangeControl.Enabled**](/uwp/api/windows.media.core.highdynamicrangecontrol.enabled) to true. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs"::: - -### Implement the SceneAnalyzed event handler - -The results of the scene analysis are returned in the **SceneAnalyzed** event handler. The [**SceneAnalyzedEventArgs**](/uwp/api/Windows.Media.Core.SceneAnalyzedEventArgs) object passed into the handler has a [**SceneAnalysisEffectFrame**](/uwp/api/Windows.Media.Core.SceneAnalysisEffectFrame) object which has a [**HighDynamicRangeOutput**](/uwp/api/Windows.Media.Core.HighDynamicRangeOutput) object. The [**Certainty**](/uwp/api/windows.media.core.highdynamicrangeoutput.certainty) property of the high dynamic range output provides a value between 0 and 1.0 where 0 indicates that HDR processing would not help improve the capture result and 1.0 indicates that HDR processing would help. You can decide the threshold point at which you want to use HDR or show the results to the user and let the user decide. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetSceneAnalyzed"::: - -The [**HighDynamicRangeOutput**](/uwp/api/Windows.Media.Core.HighDynamicRangeOutput) object passed into the handler also has a [**FrameControllers**](/uwp/api/windows.media.core.highdynamicrangeoutput.framecontrollers) property which contains suggested frame controllers for capturing a variable photo sequence for HDR processing. For more information, see [Variable photo sequence](variable-photo-sequence.md). - -### Clean up the scene analysis effect - -When your app is done capturing, before disposing of the **MediaCapture** object, you should disable the scene analysis effect by setting the effect's [**HighDynamicRangeAnalyzer.Enabled**](/uwp/api/windows.media.core.highdynamicrangecontrol.enabled) property to false and unregister your [**SceneAnalyzed**](/uwp/api/windows.media.core.sceneanalysiseffect.sceneanalyzed) event handler. Call [**MediaCapture.ClearEffectsAsync**](/uwp/api/windows.media.capture.mediacapture.cleareffectsasync), specifying the video preview stream since that was the stream to which the effect was added. Finally, set your member variable to null. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetCleanUpSceneAnalysisEffectAsync"::: - -## Face detection effect - -The [**FaceDetectionEffect**](/uwp/api/Windows.Media.Core.FaceDetectionEffect) identifies the location of faces within the media capture preview stream. The effect allows you to receive a notification whenever a face is detected in the preview stream and provides the bounding box for each detected face within the preview frame. On supported devices, the face detection effect also provides enhanced exposure and focus on the most important face in the scene. - -### Initialize the face detection effect and add it to the preview stream - -Video effects are implemented using two APIs, an effect definition, which provides settings that the capture device needs to initialize the effect, and an effect instance, which can be used to control the effect. Since you may want to access the effect instance from multiple places within your code, you should typically declare a member variable to hold the object. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetDeclareFaceDetectionEffect"::: - -In your app, after you have initialized the **MediaCapture** object, create a new instance of [**FaceDetectionEffectDefinition**](/uwp/api/Windows.Media.Core.FaceDetectionEffectDefinition). Set the [**DetectionMode**](/uwp/api/windows.media.core.facedetectioneffectdefinition.detectionmode) property to prioritize faster face detection or more accurate face detection. Set [**SynchronousDetectionEnabled**](/uwp/api/windows.media.core.facedetectioneffectdefinition.synchronousdetectionenabled) to specify that incoming frames are not delayed waiting for face detection to complete as this can result in a choppy preview experience. - -Register the effect with the capture device by calling [**AddVideoEffectAsync**](/uwp/api/windows.media.capture.mediacapture.addvideoeffectasync) on your **MediaCapture** object, providing the **FaceDetectionEffectDefinition** and specifying [**MediaStreamType.VideoPreview**](/uwp/api/Windows.Media.Capture.MediaStreamType) to indicate that the effect should be applied to the video preview stream, as opposed to the capture stream. **AddVideoEffectAsync** returns an instance of the added effect. Because this method can be used with multiple effect types, you must cast the returned instance to a [**FaceDetectionEffect**](/uwp/api/Windows.Media.Core.FaceDetectionEffect) object. - -Enable or disable the effect by setting the [**FaceDetectionEffect.Enabled**](/uwp/api/windows.media.core.facedetectioneffect.enabled) property. Adjust how often the effect analyzes frames by setting the [**FaceDetectionEffect.DesiredDetectionInterval**](/uwp/api/windows.media.core.facedetectioneffect.desireddetectioninterval) property. Both of these properties can be adjusted while media capture is ongoing. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetCreateFaceDetectionEffectAsync"::: - -### Receive notifications when faces are detected - -If you want to perform some action when faces are detected, such as drawing a box around detected faces in the video preview, you can register for the [**FaceDetected**](/uwp/api/windows.media.core.facedetectioneffect.facedetected) event. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetRegisterFaceDetectionHandler"::: - -In the handler for the event, you can get a list of all faces detected in a frame by accessing the [**FaceDetectionEffectFrame.DetectedFaces**](/uwp/api/windows.media.core.facedetectioneffectframe.detectedfaces) property of the [**FaceDetectedEventArgs**](/uwp/api/Windows.Media.Core.FaceDetectedEventArgs). The [**FaceBox**](/uwp/api/windows.media.faceanalysis.detectedface.facebox) property is a [**BitmapBounds**](/uwp/api/Windows.Graphics.Imaging.BitmapBounds) structure that describes the rectangle containing the detected face in units relative to the preview stream dimensions. To view sample code that transforms the preview stream coordinates into screen coordinates, see the [face detection UWP sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CameraFaceDetection). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetFaceDetected"::: - -### Clean up the face detection effect - -When your app is done capturing, before disposing of the **MediaCapture** object, you should disable the face detection effect with [**FaceDetectionEffect.Enabled**](/uwp/api/windows.media.core.facedetectioneffect.enabled) and unregister your [**FaceDetected**](/uwp/api/windows.media.core.facedetectioneffect.facedetected) event handler if you previously registered one. Call [**MediaCapture.ClearEffectsAsync**](/uwp/api/windows.media.capture.mediacapture.cleareffectsasync), specifying the video preview stream since that was the stream to which the effect was added. Finally, set your member variable to null. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetCleanUpFaceDetectionEffectAsync"::: - -### Check for focus and exposure support for detected faces - -Not all devices have a capture device that can adjust its focus and exposure based on detected faces. Because face detection consumes device resources, you may only want to enable face detection on devices that can use the feature to enhance capture. To see if face-based capture optimization is available, get the [**VideoDeviceController**](/uwp/api/Windows.Media.Devices.VideoDeviceController) for your initialized [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) and then get the video device controller's [**RegionsOfInterestControl**](/uwp/api/Windows.Media.Devices.RegionsOfInterestControl). Check to see if the [**MaxRegions**](/uwp/api/windows.media.devices.regionsofinterestcontrol.maxregions) supports at least one region. Then check to see if either [**AutoExposureSupported**](/uwp/api/windows.media.devices.regionsofinterestcontrol.autoexposuresupported) or [**AutoFocusSupported**](/uwp/api/windows.media.devices.regionsofinterestcontrol.autofocussupported) are true. If these conditions are met, then the device can take advantage of face detection to enhance capture. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.VideoEffects.xaml.cs" id="SnippetAreFaceFocusAndExposureSupported"::: - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) -  - -  diff --git a/hub/apps/develop/camera/set-media-encoding-properties.md b/hub/apps/develop/camera/set-media-encoding-properties.md deleted file mode 100644 index cd782ed386..0000000000 --- a/hub/apps/develop/camera/set-media-encoding-properties.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -description: Learn how to use the IMediaEncodingProperties interface to set the resolution and frame rate of the camera preview stream and captured photos and video in a WinUI 3 app. -title: Set format, resolution, and frame rate for MediaCapture -ms.date: 02/08/2017 -ms.topic: article -keywords: windows 10, windows 11, winui3, camera -ms.localizationpriority: medium ---- -# Set format, resolution, and frame rate for MediaCapture in a WinUI 3 app - -This article shows you how to use the [**IMediaEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.IMediaEncodingProperties) interface to set the resolution and frame rate of the camera preview stream and captured photos and video. It also shows how to ensure that the aspect ratio of the preview stream matches that of the captured media. - -Camera profiles offer a simpler, higher level mechanism for discovering and setting the stream properties of the camera, but they are not supported for all devices. For more information, see [Camera profiles](camera-profiles.md). - -## Determine if the preview and capture streams are independent - -On some devices, the same hardware pin is used for both preview and capture streams. On these devices, setting the encoding properties such as the format, resolution and frame rate on one will affect both. On devices that use different hardware pins for capture and preview, the properties can be set for each stream independently. Use the following code to determine if the preview and capture streams are independent. This example sets a boolean global variable that can be used to switch the app's behavior if the streams are shared or independent. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCheckIfStreamsAreIdentical"::: - -## A media encoding properties helper class - -Creating a simple helper class to wrap the functionality of the [**IMediaEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.IMediaEncodingProperties) interface makes it easier to select a set of encoding properties that meet particular criteria. This helper class is particularly useful due to the following behavior of the encoding properties feature: - -> [!NOTE] -> The [**VideoDeviceController.GetAvailableMediaStreamProperties**](/uwp/api/windows.media.devices.videodevicecontroller.getavailablemediastreamproperties) method takes a member of the [**MediaStreamType**](/uwp/api/Windows.Media.Capture.MediaStreamType) enumeration, such as **VideoRecord** or **Photo**, and returns a list of either [**ImageEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.ImageEncodingProperties) or [**VideoEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.VideoEncodingProperties) objects that convey the stream encoding settings, such as the resolution of the captured photo or video. The results of calling **GetAvailableMediaStreamProperties** may include **ImageEncodingProperties** or **VideoEncodingProperties** regardless of what **MediaStreamType** value is specified. For this reason, you should always check the type of each returned value and cast it to the appropriate type before attempting to access any of the property values. - -The helper class defined below handles the type checking and casting for [**ImageEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.ImageEncodingProperties) or [**VideoEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.VideoEncodingProperties) so that your app code doesn't need to distinguish between the two types. In addition to this, the helper class exposes properties for the aspect ratio of the properties, the frame rate (for video encoding properties only), and a friendly name that makes it easier to display the encoding properties in your UI. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/StreamPropertiesHelper.cs" id="SnippetStreamPropertiesHelper"::: - -## Get a list of available stream properties - -Get a list of the available stream properties for a capture device by getting the [**VideoDeviceController**](/uwp/api/Windows.Media.Devices.VideoDeviceController) for your app's [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture) object and then calling [**GetAvailableMediaStreamProperties**](/uwp/api/windows.media.devices.videodevicecontroller.getavailablemediastreamproperties) and passing in one of the [**MediaStreamType**](/uwp/api/Windows.Media.Capture.MediaStreamType) values, **VideoPreview**, **VideoRecord**, or **Photo**. In this example, a list of **StreamPropertiesHelper** objects, defined previously in this article, is created for each of the [**IMediaEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.IMediaEncodingProperties) values returned from **GetAvailableMediaStreamProperties**. This example orders the returned properties based first on resolution and then on frame rate. - -If your app has specific resolution or frame rate requirements, you can select a set of media encoding properties programmatically. A typical camera app will instead expose the list of available properties in the UI and allow the user to select their desired settings. A **ComboBoxItem** is created for each item in the list of **StreamPropertiesHelper** objects in the list. The content is set to the friendly name returned by the helper class and the tag is set to the helper class itself so it can be used later to retrieve the associated encoding properties. Each **ComboBoxItem** is then added to a **ComboBox** defined in the UI. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetGetStreamProperties"::: - -## Set the desired stream properties - -Tell the video device controller to use your desired encoding properties by calling [**SetMediaStreamPropertiesAsync**](/uwp/api/windows.media.devices.videodevicecontroller.setmediastreampropertiesasync), passing in the **MediaStreamType** value indicating whether the photo, video, or preview properties should be set. This example uses the **ComboBox** populated in the example from the previous section, where the media stream properties are retrieved from the tag property from the selected item. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetSetStreamProperties"::: - -Note that your app must have exclusive control of the capture device in order to change the media stream properties. - -## Match the aspect ratio of the preview and capture streams - -A typical camera app will provide UI for the user to select the video or photo capture resolution but will programmatically set the preview resolution. There are a few different strategies for selecting the best preview stream resolution for your app: - -- Select the highest available preview resolution, letting the UI framework perform any necessary scaling of the preview. - -- Select the preview resolution closest to the capture resolution so that the preview displays the closest representation to the final captured media. - -- Select the preview resolution closest to the size of the [**CaptureElement**](/uwp/api/Windows.UI.Xaml.Controls.CaptureElement) so that no more pixels than necessary are going through the preview stream pipeline. - -> [!NOTE] -> It is possible, on some devices, to set a different aspect ratio for the camera's preview stream and capture stream. Frame cropping caused by this mismatch can result in content being present in the captured media that was not visible in the preview which can result in a negative user experience. It is strongly recommended that you use the same aspect ratio, within a small tolerance window, for the preview and capture streams. It is fine to have entirely different resolutions enabled for capture and preview as long as the aspect ratio match closely. - - -To ensure that the photo or video capture streams match the aspect ratio of the preview stream, this example calls [**VideoDeviceController.GetMediaStreamProperties**](/uwp/api/windows.media.devices.videodevicecontroller.getmediastreamproperties) and passes in the **VideoPreview** enum value to request the current stream properties for the preview stream. Next a small aspect ratio tolerance window is defined so that we can include aspect ratios that are not exactly the same as the preview stream, as long as they are close. Next, the **StreamPropertiesHelper** objects where the aspect ratio is within the defined tolerance range of the preview stream are selected. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetMatchPreviewAspectRatio"::: - -SnippetMatchPreviewAspectRatio \ No newline at end of file diff --git a/hub/apps/develop/camera/variable-photo-sequence.md b/hub/apps/develop/camera/variable-photo-sequence.md deleted file mode 100644 index fe213a3c7b..0000000000 --- a/hub/apps/develop/camera/variable-photo-sequence.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -description: Learn how to capture a variable photo sequence, which allows you to capture multiple frames of images in rapid succession and configure each frame to use different focus, flash, ISO, exposure, and exposure compensation settings. -title: Variable photo sequence -ms.date: 09/13/2024 -ms.topic: article -keywords: windows 10, windows 11, winui3, camera -ms.localizationpriority: medium ---- -# Variable photo sequence - -This article shows you how to capture a variable photo sequence, which allows you to capture multiple frames of images in rapid succession and configure each frame to use different focus, flash, ISO, exposure, and exposure compensation settings. This feature enables scenarios like creating High Dynamic Range (HDR) images. - -If you want to capture HDR images but don't want to implement your own processing algorithm, you can use the [**AdvancedPhotoCapture**](/uwp/api/Windows.Media.Capture.AdvancedPhotoCapture) API to use the HDR capabilities built-in to Windows. For more information, see [High dynamic range (HDR) and low-light photo capture](hdr-low-light-photo-capture.md). - -> [!NOTE] -> This article builds on concepts and code discussed in [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md), which describes the steps for implementing basic photo and video capture. It is recommended that you familiarize yourself with the basic media capture pattern in that article before moving on to more advanced capture scenarios. The code in this article assumes that your app already has an instance of MediaCapture that has been properly initialized. - -## Set up your app to use variable photo sequence capture - -Declare a member variable to store the [**VariablePhotoSequenceCapture**](/uwp/api/Windows.Media.Capture.Core.VariablePhotoSequenceCapture) object, which is used to initiate the photo sequence capture. Declare an array of [**SoftwareBitmap**](/uwp/api/Windows.Graphics.Imaging.SoftwareBitmap) objects to store each captured image in the sequence. Also, declare an array to store the [**CapturedFrameControlValues**](/uwp/api/Windows.Media.Capture.CapturedFrameControlValues) object for each frame. This can be used by your image processing algorithm to determine what settings were used to capture each frame. Finally, declare an index that will be used to track which image in the sequence is currently being captured. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetVPSMemberVariables"::: - -## Prepare the variable photo sequence capture - -After you have initialized your [**MediaCapture**](/uwp/api/Windows.Media.Capture.MediaCapture), make sure that variable photo sequences are supported on the current device by getting an instance of the [**VariablePhotoSequenceController**](/uwp/api/Windows.Media.Devices.Core.VariablePhotoSequenceController) from the media capture's [**VideoDeviceController**](/uwp/api/Windows.Media.Devices.VideoDeviceController) and checking the [**Supported**](/uwp/api/windows.media.devices.core.variablephotosequencecontroller.supported) property. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetIsVPSSupported"::: - -Get a [**FrameControlCapabilities**](/uwp/api/Windows.Media.Devices.Core.FrameControlCapabilities) object from the variable photo sequence controller. This object has a property for every setting that can be configured per frame of a photo sequence. These include: - -- [**Exposure**](/uwp/api/windows.media.devices.core.framecontrolcapabilities.exposure) -- [**ExposureCompensation**](/uwp/api/windows.media.devices.core.framecontrolcapabilities.exposurecompensation) -- [**Flash**](/uwp/api/windows.media.devices.core.framecontrolcapabilities.flash) -- [**Focus**](/uwp/api/windows.media.devices.core.framecontrolcapabilities.focus) -- [**IsoSpeed**](/uwp/api/windows.media.devices.core.framecontrolcapabilities.isospeed) -- [**PhotoConfirmation**](/uwp/api/windows.media.devices.core.framecontrolcapabilities.photoconfirmationsupported) - -This example will set a different exposure compensation value for each frame. To verify that exposure compensation is supported for photo sequences on the current device, check the [**Supported**](/uwp/api/windows.media.devices.exposurecompensationcontrol.supported) property of the [**FrameExposureCompensationCapabilities**](/uwp/api/Windows.Media.Devices.Core.FrameExposureCompensationCapabilities) object accessed through the **ExposureCompensation** property. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetIsExposureCompensationSupported"::: - -Create a new [**FrameController**](/uwp/api/Windows.Media.Devices.Core.FrameController) object for each frame you want to capture. This example captures three frames. Set the values for the controls you want to vary for each frame. Then, clear the [**DesiredFrameControllers**](/uwp/api/windows.media.devices.core.variablephotosequencecontroller.desiredframecontrollers) collection of the **VariablePhotoSequenceController** and add each frame controller to the collection. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetInitFrameControllers"::: - -Create an [**ImageEncodingProperties**](/uwp/api/Windows.Media.MediaProperties.ImageEncodingProperties) object to set the encoding you want to use for the captured images. Call the static method [**MediaCapture.PrepareVariablePhotoSequenceCaptureAsync**](/uwp/api/windows.media.capture.mediacapture.preparevariablephotosequencecaptureasync), passing in the encoding properties. This method returns a [**VariablePhotoSequenceCapture**](/uwp/api/Windows.Media.Capture.Core.VariablePhotoSequenceCapture) object. Finally, register event handlers for the [**PhotoCaptured**](/uwp/api/windows.media.capture.core.variablephotosequencecapture.photocaptured) and [**Stopped**](/uwp/api/windows.media.capture.core.variablephotosequencecapture.stopped) events. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetPrepareVPS"::: - -## Start the variable photo sequence capture - -To start the capture of the variable photo sequence, call [**VariablePhotoSequenceCapture.StartAsync**](/uwp/api/windows.media.capture.core.variablephotosequencecapture.startasync). Be sure to initialize the arrays for storing the captured images and frame control values and set the current index to 0. Set your app's recording state variable and update your UI to disable starting another capture while this capture is in progress. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetStartVPSCapture"::: - -## Receive the captured frames - -The [**PhotoCaptured**](/uwp/api/windows.media.capture.core.variablephotosequencecapture.photocaptured) event is raised for each captured frame. Save the frame control values and captured image for the frame and then increment the current frame index. This example shows how to get a [**SoftwareBitmap**](/uwp/api/Windows.Graphics.Imaging.SoftwareBitmap) representation of each frame. For more information on using **SoftwareBitmap**, see [Imaging](/windows/uwp/audio-video-camera/imaging). - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetOnPhotoCaptured"::: - -## Handle the completion of the variable photo sequence capture - -The [**Stopped**](/uwp/api/windows.media.capture.core.variablephotosequencecapture.stopped) event is raised when all of the frames in the sequence have been captured. Update the recording state of your app and update your UI to allow the user to initiate new captures. At this point, you can pass the captured images and frame control values to your image processing code. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetOnStopped"::: - -## Update frame controllers - -If you want to perform another variable photo sequence capture with different per frame settings, you don't need to completely reinitialize the **VariablePhotoSequenceCapture**. You can either clear the [**DesiredFrameControllers**](/uwp/api/windows.media.devices.core.variablephotosequencecontroller.desiredframecontrollers) collection and add new frame controllers or you can modify the existing frame controller values. The following example checks the [**FrameFlashCapabilities**](/uwp/api/Windows.Media.Devices.Core.FrameFlashCapabilities) object to verify that the current device supports flash and flash power for variable photo sequence frames. If so, each frame is updated to enable the flash at 100% power. The exposure compensation values that were previously set for each frame are still active. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetUpdateFrameControllers"::: - -## Clean up the variable photo sequence capture - -When you are done capturing variable photo sequences or your app is suspending, clean up the variable photo sequence object by calling [**FinishAsync**](/uwp/api/windows.media.capture.core.variablephotosequencecapture.finishasync). Unregister the object's event handlers and set it to null. - -:::code language="csharp" source="~/../snippets-windows/winappsdk/audio-video-camera/camera-winui/CS/CameraWinUI/MainWindow.xaml.cs" id="SnippetCleanUpVPS"::: - -## Related topics - -* [Camera](camera.md) -* [Basic photo, video, and audio capture with MediaCapture](basic-photo-capture.md) -  - -  diff --git a/hub/apps/develop/communication.md b/hub/apps/develop/communication.md deleted file mode 100644 index a968d99f53..0000000000 --- a/hub/apps/develop/communication.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Communication -description: This article provides an index of development features that are related to communication scenarios in Windows apps. -ms.topic: article -ms.date: 10/13/2021 -keywords: ---- - -# Communication - -This article provides an index of development features that are related to scenarios involving communication in Windows apps. - -> [!NOTE] -> The [Windows App SDK](../windows-app-sdk/index.md) currently does not provide APIs related to communication scenarios. - -## Windows OS features - -Windows 10 and later OS releases provide a wide variety of APIs related to communication scenarios for apps. These features are available via a combination of WinRT and Win32 (C++ and COM) APIs provided by the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk). - -#### WinRT APIs - -The following articles provide information about features available via WinRT APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [App-to-app communication](/windows/uwp/app-to-app/) | Learn how to share data between apps, including how to use the Share contract, copy and paste, drag and drop, and app services. | -| [Interprocess communication](/windows/uwp/communication/interprocess-communication) | Learn about ways to perform interprocess communication (IPC) between UWP apps, packaged desktop apps, and unpackaged desktop apps. | -| [Networking and web services](/windows/uwp/networking/) | Learn about networking and web services technologies that are available to apps. | -| [Sharing named objects](/windows/uwp/communication/sharing-named-objects) | Learn how to share named objects between UWP apps, packaged desktop apps, and unpackaged desktop apps. | - -#### Win32 (C++ and COM) APIs - -The following articles provide information about features available via Win32 (C++ and COM) APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [Networking and Internet](/windows/win32/networking) | Learn about APIs, components, and services that support your app's use of networking and the Internet. | -| [Remote Procedure Call](/windows/win32/rpc/rpc-start-page) | Learn about using Remote Procedure Call (RPC) to create distributed client/server programs. | -| [Windows Sockets 2 (Winsock)](/windows/win32/winsock/windows-sockets-start-page-2) | Learn how to use Windows Sockets 2 (Winsock) to create advanced Internet, intranet, and other network-capable apps. | - -## .NET features - -The .NET SDK also provides APIs related to communication scenarios for WPF and Windows Forms apps. - -| Article | Description | -|---------|-------------| -| [Network programming in the .NET Framework](/dotnet/framework/network-programming/) | Learn about building network-enabled apps using .NET. | -| [Networking in Windows Forms](/dotnet/framework/winforms/advanced/networking-in-windows-forms-applications) | Learn about additional networking scenarios for Windows Forms apps. | diff --git a/hub/apps/develop/data-access/cosmos-db-data-access.md b/hub/apps/develop/data-access/cosmos-db-data-access.md deleted file mode 100644 index 924c223be3..0000000000 --- a/hub/apps/develop/data-access/cosmos-db-data-access.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Use a Cosmos DB database from a Windows app -description: Learn how to connect your Windows app to a Cosmos DB database and test the connection programmatically. -ms.date: 08/01/2024 -ms.topic: how-to -keywords: windows, windows app sdk, Cosmos DB, azure, cloud, nosql, database, wpf, uwp, winforms, windows forms, winui -ms.localizationpriority: medium -#customer intent: As a Windows developer, I want to learn how to connect my Windows app to a Cosmos DB database so that I can store and retrieve data in the cloud. ---- - -# Use a Cosmos DB database from a Windows app - -This article contains the steps required to enable working with a Cosmos DB database from a Windows app. It also contains a small code snippet showing how you can interact with the database in code. - -## Set up your solution - -This example can be used with any WPF, Windows Forms, WinUI 3, and UWP project to connect your Windows app to a Cosmos DB database. Follow these steps to install the package and try out example code for some basic tasks. - -1. Open the **Package Manager Console** (View -> Other Windows -> Package Manager Console). Use the command `Install-Package Microsoft.Azure.Cosmos` to install the NuGet package for the **Azure Cosmos DB for NoSQL client library for .NET**. This will allow you to programmatically access Cosmos DB databases. -1. Build your project and make sure that the build was successful with no errors. - -Next, you'll need to create a Cosmos DB instance in Azure. You can do this by following the steps in [Create a NoSQL database account in Azure Cosmos DB](/azure/cosmos-db/create-cosmosdb-resources-portal). - -## Work with Cosmos DB using sample code - -The following sample code gets a container from a Cosmos DB instance in Azure, then adds a new item to that container. Then it uses Cosmos DB's NoSQL query API to retrieve the item from the container and output the response status. Note that the endpoint, auth key, and database name will need to be customized based on the Cosmos DB instance you created in the previous section. - -> [!NOTE] -> For a complete example, including information about required Cosmos DB setup and configuration, see [Develop a .NET console application with Azure Cosmos DB for NoSQL](/azure/cosmos-db/nosql/tutorial-dotnet-console-app). - -```csharp -using Microsoft.Azure.Cosmos; - -... - -public async Task CosmosSample(string endpoint, string authKey) -{ - // CONNECT - var client = new CosmosClient( - accountEndpoint: endpoint, - authKeyOrResourceToken: authKey - ); - Database database = client.GetDatabase("sample_customers"); - ContainerProperties properties = new( - id: "customers", - partitionKeyPath: "/location" - ); - Container container = await database.CreateContainerIfNotExistsAsync(properties); - - // WRITE DATA - string customerId = "1234"; - string state = "WA"; - var customer = new - { - id = customerId, - name = "John Doe", - location = state - }; - var createResponse = await container.CreateItemAsync(customer); - Console.WriteLine($"[Status code: {createResponse.StatusCode}]\t{customerId}"); - - // READ DATA - string sql = "SELECT * FROM customers c WHERE c.id = @id"; - var query = new QueryDefinition( - query: sql - ).WithParameter("@id", customerId); - using var feed = container.GetItemQueryIterator(queryDefinition: query); - var queryResponse = await feed.ReadNextAsync(); - Console.WriteLine($"[Status code: {queryResponse.StatusCode}]\t{customerId}"); -} -``` - -## Related content - -- [Azure Cosmos DB for NoSQL client library for .NET](/azure/cosmos-db/nosql/quickstart-dotnet) -- [Use a MySQL database in a Windows app](mysql-database.md) diff --git a/hub/apps/develop/data-access/images/computer-management.png b/hub/apps/develop/data-access/images/computer-management.png deleted file mode 100644 index d3e05b0c1c..0000000000 Binary files a/hub/apps/develop/data-access/images/computer-management.png and /dev/null differ diff --git a/hub/apps/develop/data-access/images/enterprise-authentication.png b/hub/apps/develop/data-access/images/enterprise-authentication.png deleted file mode 100644 index 71ee1bfec9..0000000000 Binary files a/hub/apps/develop/data-access/images/enterprise-authentication.png and /dev/null differ diff --git a/hub/apps/develop/data-access/images/manage-nuget-2.png b/hub/apps/develop/data-access/images/manage-nuget-2.png deleted file mode 100644 index ece2eadbc7..0000000000 Binary files a/hub/apps/develop/data-access/images/manage-nuget-2.png and /dev/null differ diff --git a/hub/apps/develop/data-access/images/products-northwind.png b/hub/apps/develop/data-access/images/products-northwind.png deleted file mode 100644 index 152dcbeae3..0000000000 Binary files a/hub/apps/develop/data-access/images/products-northwind.png and /dev/null differ diff --git a/hub/apps/develop/data-access/images/sql-browser-service.png b/hub/apps/develop/data-access/images/sql-browser-service.png deleted file mode 100644 index a2f9c3f17e..0000000000 Binary files a/hub/apps/develop/data-access/images/sql-browser-service.png and /dev/null differ diff --git a/hub/apps/develop/data-access/images/sqlite-nuget-package.png b/hub/apps/develop/data-access/images/sqlite-nuget-package.png deleted file mode 100644 index 2db17b8de6..0000000000 Binary files a/hub/apps/develop/data-access/images/sqlite-nuget-package.png and /dev/null differ diff --git a/hub/apps/develop/data-access/index.md b/hub/apps/develop/data-access/index.md deleted file mode 100644 index 389ebbd94a..0000000000 --- a/hub/apps/develop/data-access/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -ms.assetid: dc686801-edd0-44b1-afb9-20486fd9c34e -title: Data access in Windows apps -description: Learn how to store data on the device in a private database and use object relational mapping in Windows apps. -ms.date: 08/01/2024 -ms.topic: concept-article -keywords: windows 10, windows 11, windows app sdk, data, database, relational, tables, sqlite, cosmosdb, mysql -ms.localizationpriority: medium -#customer intent: As a Windows app developer, I want to learn how to store data on the device in a private database and use object relational mapping in Windows apps so that I can create apps that store and retrieve data. ---- - -# Data access in Windows apps? - -You can store data on the user's device by using a SQLite database. You can also connect your Windows app directly to a SQL Server, Cosmos DB, MySQL, or MongoDB database without having to use an external service layer. - -## Topics in this section - -In this section, you'll learn how to store and retrieve data in a Windows app by using different back-end databases. Each topic provides a guide to help you get started. - -| Topic | Description | -|-------|------------| -| [Use a SQLite database on Windows](sqlite-data-access.md) | Shows you how to use SQLite to store and retrieve data in a light-weight database on the user's device. SQLite is a server-less, embedded database engine. | -| [Use a SQL Server database in a Windows app](sql-server-database.md) | Shows you how to connect directly to a SQL Server database and then store and retrieve data by using classes in the [System.Data.SqlClient](/dotnet/api/system.data.sqlclient) namespace. No service layer required. | -| [Use a Cosmos DB database in a Windows app](cosmos-db-data-access.md) | Shows you how to work with a [Cosmos DB](/azure/cosmos-db/introduction) database and test the connection programmatically. Cosmos DB is a cloud-based document database. | -| [Use a MySQL database in a Windows app](mysql-database.md) | Shows you how to connect to a MySQL database and interact with the database in a Windows application. MySQL is an open source, cross-platform relational database. | -| [Use a MongoDB database in a Windows app](mongodb-database.md) | Shows you how to work with a MongoDB database and test the connection programmatically. MongoDB is a cross-platform document database. | - -## Related content - -- [Customer Orders Database sample](https://github.com/Microsoft/Windows-appsample-customers-orders-database) -- [UWP data access](/windows/uwp/data-access/) -- [.NET data documentation](/ef/dotnet-data/) diff --git a/hub/apps/develop/data-access/mongodb-database.md b/hub/apps/develop/data-access/mongodb-database.md deleted file mode 100644 index 74933b72ae..0000000000 --- a/hub/apps/develop/data-access/mongodb-database.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Use a MongoDB database in a Windows app -description: Learn how to connect your Windows app directly to a MongoDB database and test the connection programmatically. -ms.date: 08/01/2024 -ms.topic: how-to -keywords: windows, windows app sdk, mongodb, nosql, database, uwp, wpf, winforms, windows forms, winui -ms.localizationpriority: medium -#customer intent: As a Windows developer, I want to learn how to connect my Windows app directly to a MongoDB database so that I can store and retrieve data. ---- - -# Use a MongoDB database in a Windows app - -This article contains the steps required to enable working with a MongoDB database from a Windows app. It also contains a small code snippet showing how you can interact with the database in code. - -## Set up your solution - -This example can be used with any WPF, Windows Forms, WinUI 3, and UWP project to connect your Windows app to MongoDB. Follow these steps to install the package and try out the example code to read data from an existing MongoDB database. - -1. Open the **Package Manager Console** (View -> Other Windows -> Package Manager Console). -1. Use the command `Install-Package MongoDB.Driver` to install the NuGet package for the official driver for MongoDB. - -This will allow you to programmatically access MongoDB databases. - -## Test your connection using sample code - -The following sample code gets a collection from a remote MongoDB client, then adds a new document to that collection. Then it uses MongoDB APIs to retrieve the new size of the collection as well as the inserted document, and prints them out. - -``` csharp -var client = new MongoClient("mongodb://10.xxx.xx.xxx:27017"); -IMongoDatabase database = client.GetDatabase("foo"); -IMongoCollection collection = database.GetCollection("bar"); -var document = new BsonDocument -{ - { "name","MongoDB"}, - { "type","Database"}, - { "count",1}, - { "info",new BsonDocument { { "x", 203 }, { "y", 102 } }} -}; -collection.InsertOne(document); -long count = collection.CountDocuments(document); -Console.WriteLine(count); -IFindFluent document1 = collection.Find(document); -Console.WriteLine(document1.ToString()); -``` - -Note that the IP address and database name will need to be customized. The port, 27017, is the default MongoDB port number. In a production application, connection information such as server address and database name should be stored in app configuration rather than hard-coded (see [**Adding Azure App Configuration by using Visual Studio Connected Services**](/visualstudio/azure/vs-azure-tools-connected-services-app-configuration)). - -## Related content - -- [Use a SQL Server database in a Windows app](sql-server-database.md) -- [Use a MySQL database in a Windows app](mysql-database.md) diff --git a/hub/apps/develop/data-access/mysql-database.md b/hub/apps/develop/data-access/mysql-database.md deleted file mode 100644 index 37ef31368d..0000000000 --- a/hub/apps/develop/data-access/mysql-database.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Use a MySQL database in a Windows app -description: Learn how to connect to a MySQL database from your Windows app, and test your connection using sample code. -ms.date: 01/23/2025 -ms.custom: copilot-scenario-highlight -ms.topic: how-to -keywords: windows, windows app sdk, MySQL, database, uwp, wpf, winforms, windows forms, winui -ms.localizationpriority: medium -#customer intent: As a Windows developer, I want to learn how to connect to a MySQL database from my Windows app so that I can store and retrieve data. ---- - -# Use a MySQL database in a Windows app - -This article contains the steps required to enable working with a MySQL database from a Windows app. It also contains a small code snippet showing how you can interact with the database in code. - -> [!TIP] -> You can use AI assistance to [create a MySQL connection string with GitHub Copilot](#building-a-connection-string-with-github-copilot). - -## Set up your solution - -This example can be used with any WPF, Windows Forms, WinUI 3, and UWP project to connect your Windows app to a MySQL database. Follow these steps to install the package and try out the example code to read data from an existing MySQL database. - -1. Open the **Package Manager Console** (View -> Other Windows -> Package Manager Console). -1. Use the command `Install-Package MySql.Data` to install the NuGet package for the MySQL core class library. - -This will allow you to programmatically access MySQL databases. - -> [!NOTE] -> [MySQL Connector/NET](https://dev.mysql.com/downloads/connector/net/) version 6.4.4 or later is required to use the `MySql.Data` package with Windows authentication. - -## Test your connection using sample code - -The following is an example of connecting to and reading from a remote MySQL database. Note that the server address and database name will need to be customized. - -``` csharp -const string M_str_sqlcon = "Server=myServerAddress;Database=myDataBase;IntegratedSecurity=yes;Uid=auth_windows;"; -using (var mySqlCn = new MySqlConnection(M_str_sqlcon)) -{ - using (var mySqlCmd = new MySqlCommand("select * from table1", mySqlCn)) - { - mySqlCn.Open(); - using (MySqlDataReader mySqlReader = mySqlCmd.ExecuteReader(CommandBehavior.CloseConnection)) - { - while (mySqlReader.Read()) - { - Debug.WriteLine($"{mySqlReader.GetString(0)}:{mySqlReader.GetString(1)}"); - } - } - } -} -``` - -> [!IMPORTANT] -> In production applications, connection information should be stored securely in app configuration (see [**Adding Azure App Configuration by using Visual Studio Connected Services**](/visualstudio/azure/vs-azure-tools-connected-services-app-configuration)). Connection strings and other secrets should not be hard-coded. - -## Building a connection string with GitHub Copilot - -You can use GitHub Copilot to build the connection string for your MySQL database. You can customize the prompt to create a connection string per your requirements. - -The following text shows an example prompt for Copilot Chat that generates a connection string similar to the one shown in the previous code snippet: - -```copilot-prompt -Show me how to create a MySQL connection string to a server named myServerAddress and a database called myDatabase. Use Windows authentication. -``` - -GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). - -Learn more about [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) and [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview). - -## Related content - -- [Use a SQL Server database in a Windows app](sql-server-database.md) -- [Data access in Windows apps](index.md) diff --git a/hub/apps/develop/data-access/sql-server-database.md b/hub/apps/develop/data-access/sql-server-database.md deleted file mode 100644 index b72ad6a106..0000000000 --- a/hub/apps/develop/data-access/sql-server-database.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: Use a SQL Server database in a Windows app -description: Learn how to connect a Windows App SDK app directly to a SQL Server database, and store and retrieve data by using System.Data.SqlClient. -ms.date: 10/15/2024 -ms.topic: how-to -keywords: windows 10, windows 11, Windows App SDK, SQL Server, database -ms.localizationpriority: medium -#customer intent: As a Windows developer, I want to learn how to connect my Windows App SDK app directly to a SQL Server database so that I can store and retrieve data. ---- - -# Use a SQL Server database in a Windows app - -Your app can connect directly to a SQL Server database and then store and retrieve data by using classes in the [System.Data.SqlClient](/dotnet/api/system.data.sqlclient) namespace. - -## Getting started - -In this guide, we'll show you one way to do that in your Windows App SDK apps. If you install the [Northwind](/dotnet/framework/data/adonet/sql/linq/downloading-sample-databases) sample database onto your SQL Server instance, and then use these snippets, you'll end up with a basic UI that shows products from the Northwind sample database. - -![Northwind products](images/products-northwind.png) - -> [!TIP] -> You can also get scripts to create the **Northwind** and **pubs** sample databases from the [SQL Server Samples GitHub repository](https://github.com/microsoft/sql-server-samples/blob/master/samples/databases/northwind-pubs/readme.md). - -The snippets that appear in this guide are based on this [UWP sample app](https://github.com/StefanWickDev/IgniteDemos/tree/master/NorthwindDemo). - -## First, set up your solution - -To connect your app directly to a SQL Server database, your app can target any minimum version of Windows supported by Windows App SDK. You can find that information in the properties page of your project. - -1. Open the **Package.appxmanifest** file of your Windows App SDK project in the manifest designer. -1. In the **Capabilities** tab, select the **Enterprise Authentication** checkbox if you are using Windows Authentication for authenticating your SQL Server. - -![Enterprise Authentication Capability](images/enterprise-authentication.png) - -> [!IMPORTANT] -> You will also need to select **Internet (Client & Server)**, **Internet (Client)**, and **Private Networks (Client & Server)**, regardless of whether or not you're using Windows Authentication. - -## Add and retrieve data in a SQL Server database - -In this section, we'll do these things: - -:one: Add a connection string. - -:two: Create a class to hold product data. - -:three: Retrieve products from the SQL Server database. - -:four: Add a basic user interface. - -:five: Populate the UI with Products. - -> [!NOTE] -> This section illustrates one way to organize your data access code. It's meant only to provide an example of how you can use [System.Data.SqlClient](/dotnet/api/system.data.sqlclient) to store and retrieve data from a SQL Server database. You can organize your code in any way that makes the most sense to your application's design. - -### Add a connection string - -In the **App.xaml.cs** file, add a property to the `App` class, that gives other classes in your solution access to the connection string. - -Our connection string points to the Northwind database in a SQL Server Express instance. The connection string in this snippet assumes you kept the default instance name `SQLEXPRESS` when installing SQL Server Express. You can make changes to the connection string to match your SQL Server instance, database, and authentication method. - -```csharp -sealed partial class App : Application -{ - // Connection string for using Windows Authentication. - private string connectionString = - @"Data Source=.\SQLEXPRESS;Initial Catalog=NORTHWIND;Integrated Security=SSPI"; - - public string ConnectionString { get => connectionString; set => connectionString = value; } - - ... -} -``` - -> [!IMPORTANT] -> In production applications, connection information should be stored securely in app configuration (see [**Adding Azure App Configuration by using Visual Studio Connected Services**](/visualstudio/azure/vs-azure-tools-connected-services-app-configuration)). Connection strings and other secrets should never be hard-coded. - -### Create a class to hold product data - -We'll create a class that implements the [INotifyPropertyChanged](/dotnet/api/system.componentmodel.inotifypropertychanged) event so that we can bind attributes in our XAML UI to the properties in this class. - -```csharp -public class Product : INotifyPropertyChanged -{ - public int ProductID { get; set; } - public string ProductCode { get { return ProductID.ToString(); } } - public string ProductName { get; set; } - public string QuantityPerUnit { get; set; } - public decimal UnitPrice { get; set; } - public string UnitPriceString { get { return UnitPrice.ToString("######.00"); } } - public int UnitsInStock { get; set; } - public string UnitsInStockString { get { return UnitsInStock.ToString("#####0"); } } - public int CategoryId { get; set; } - - public event PropertyChangedEventHandler PropertyChanged; - private void NotifyPropertyChanged(string propertyName) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } -} -``` - -### Retrieve products from the SQL Server database - -In the **MainWindow.xaml.cs** file of the Windows App SDK project, create a method that gets products from the Northwind sample database, and then returns them as an [ObservableCollection](/dotnet/api/system.collections.objectmodel.observablecollection-1) collection of `Product` instances. - -```csharp -public ObservableCollection GetProducts(string connectionString) -{ - const string GetProductsQuery = "select ProductID, ProductName, QuantityPerUnit," + - " UnitPrice, UnitsInStock, Products.CategoryID " + - " from Products inner join Categories on Products.CategoryID = Categories.CategoryID " + - " where Discontinued = 0"; - - var products = new ObservableCollection(); - try - { - using (var conn = new SqlConnection(connectionString)) - { - conn.Open(); - if (conn.State == System.Data.ConnectionState.Open) - { - using (SqlCommand cmd = conn.CreateCommand()) - { - cmd.CommandText = GetProductsQuery; - using (SqlDataReader reader = cmd.ExecuteReader()) - { - while (reader.Read()) - { - var product = new Product(); - product.ProductID = reader.GetInt32(0); - product.ProductName = reader.GetString(1); - product.QuantityPerUnit = reader.GetString(2); - product.UnitPrice = reader.GetDecimal(3); - product.UnitsInStock = reader.GetInt16(4); - product.CategoryId = reader.GetInt32(5); - products.Add(product); - } - } - } - } - } - return products; - } - catch (Exception eSql) - { - Debug.WriteLine($"Exception: {eSql.Message}"); - } - return null; -} -``` - -### Add a basic user interface - -Add the following XAML to the **MainWindow.xaml** file of the Windows App SDK project. - -This XAML creates a [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) to show each product that you returned in the previous snippet, and binds the attributes of each row in the `ListView` to the properties that we defined in the `Product` class. - -```xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -### Show products in the ListView - -Open the **MainWindow.xaml.cs** file, and add code to the constructor of the `MainWindow` class that sets the **ItemSource** property of the [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) to the [ObservableCollection](/dotnet/api/system.collections.objectmodel.observablecollection-1) of `Product` instances. - -```csharp -public MainWindow() -{ - this.InitializeComponent(); - InventoryList.ItemsSource = GetProducts((App.Current as App).ConnectionString); -} -``` - -Start the project and see products from the Northwind sample database appear in the UI. - -![Northwind products](images/products-northwind.png) - -Explore the [System.Data.SqlClient](/dotnet/api/system.data.sqlclient) namespace to see what other things you can do with data in your SQL Server database. - -> [!TIP] -> Try asking [Microsoft Copilot](https://copilot.microsoft.com/) for help with your SQL queries. Copilot can help you write SQL queries, and suggest ways to improve your code. - -## Trouble connecting to your database? - -In most cases, some aspect of the SQL Server configuration needs to be changed. If you're able to connect to your database from another type of desktop application such as a Windows Forms or WPF application, ensure that you've enabled TCP/IP for SQL Server. You can do that in the **Computer Management** console. (See [Windows Tools/Administrative Tools](/windows/client-management/administrative-tools-in-windows-10#tools) for more information.) - -![Computer Management](images/computer-management.png) - -Then, make sure that your SQL Server Browser service is running. - -![SQL Server Browser Service](images/sql-browser-service.png) - -## Next step - -> [!div class="nextstepaction"] -> [Use a SQLite database in a Windows app](sqlite-data-access.md) diff --git a/hub/apps/develop/data-access/sqlite-data-access.md b/hub/apps/develop/data-access/sqlite-data-access.md deleted file mode 100644 index 8ca3306485..0000000000 --- a/hub/apps/develop/data-access/sqlite-data-access.md +++ /dev/null @@ -1,263 +0,0 @@ ---- -title: Use a SQLite database in a Windows app -description: Learn how to use a SQLite database in a Windows app to store and retrieve data in a lightweight database on the user's device. -ms.date: 08/01/2024 -ms.topic: how-to -keywords: windows 10, windows 11, windows app sdk, SQLite, database -ms.localizationpriority: medium -#customer intent: As a Windows developer, I want to learn how to use a SQLite database in a Windows app to store and retrieve data in a lightweight database on the user's device. ---- - -# Use a SQLite database in a Windows app - -You can use SQLite to store and retrieve data in a lightweight database on the user's device. This guide shows you how to do it in your Windows App SDK apps. - -## Some benefits of using SQLite for local storage - -:heavy_check_mark: SQLite is lightweight and self-contained. It's a code library without any other dependencies. There's nothing to configure. - -:heavy_check_mark: There's no database server. The client and the server run in the same process. - -:heavy_check_mark: SQLite is in the public domain so you can freely use and distribute it with your app. - -:heavy_check_mark: SQLite works across platforms and architectures. - -You can read more about SQLite [here](https://sqlite.org/about.html). - -## Choose an abstraction layer - -We recommend that you use either [Entity Framework Core](/ef/core/) or the open-source [SQLite library](https://github.com/aspnet/Microsoft.Data.Sqlite/) built by Microsoft. - -### Entity Framework Core - -Entity Framework (EF) is an object-relational mapper that you can use to work with relational data by using domain-specific objects. If you've already used this framework to work with data in other .NET apps, you can use the same code in your Windows App SDK app and it will work with appropriate changes to the connection string. - -To try it out, see [Getting Started with EF Core](/ef/core/get-started/overview/first-app). - -### SQLite library - -The [Microsoft.Data.Sqlite](/dotnet/api/microsoft.data.sqlite) library implements the interfaces in the [System.Data.Common](/dotnet/api/system.data.common) namespace. Microsoft actively maintains these implementations, and they provide an intuitive wrapper around the low-level native SQLite API. - -The rest of this guide helps you to use this library. - -## Set up your solution to use the Microsoft.Data.SQlite library - -We'll start with a basic Windows App SDK project, and then install the SQLite NuGet package. - -All supported versions of Windows support SQLite, so your app does not have to package SQLite libraries. Instead, your app can use the version of SQLite that comes installed with Windows. This helps you in a few ways. - -:heavy_check_mark: Reduces the size of your application because you don't have to download the SQLite binary, and then package it as part of your application. - -:heavy_check_mark: Prevents you from having to push a new version of your app to users in the event that SQLite publishes critical fixes to bugs and security vulnerabilities in SQLite. The Windows version of SQLite is maintained by Microsoft in coordination with SQLite.org. - -:heavy_check_mark: App load time has the potential to be faster because most likely, the SDK version of SQLite will already be loaded into memory. - -Let's start by adding a class to your project named **DataAccess**. If you plan to share your data access logic with other client code, you can use a .NET class library project to contain your data access code, but we won't use one in our example. - -1. Right-click the solution, and then click **Manage NuGet Packages for Solution**. - - ![A screenshot of Visual Studio's Solution Explorer with the project right-clicked and the Manage NuGet Packages option highlighted.](images/manage-nuget-2.png) - - At this point, you have a choice. You can use the version of SQLite that is included with Windows or if you have some reason to use a specific version of SQLite, you can include the SQLite library in your package. We are going to use the version of SQLite that's included with Windows. - -1. Choose the **Browse** tab, search for the **Microsoft.Data.SQLite** package, and then install the latest stable version. - - ![SQLite NuGet package](images/sqlite-nuget-package.png) - -## Add and retrieve data in a SQLite database - -We'll do these things: - -:one: Prepare the data access class. - -:two: Initialize the SQLite database. - -:three: Insert data into the SQLite database. - -:four: Retrieve data from the SQLite database. - -:five: Add a basic user interface. - -### Prepare the data access class - -Open the `DataAccess` class in your project and make that class static. - ->[!NOTE] ->While our example will place data access code in a static class, this is a design choice and is completely optional. - -```csharp -public static class DataAccess -{ -} -``` - -Add the following `using` statements to the top of this file. - -```csharp -using Microsoft.Data.Sqlite; -using System.Collections.Generic; -``` - -### Initialize the SQLite database - -Add a method to the `DataAccess` class that initializes the SQLite database. - -```csharp -public async static void InitializeDatabase() -{ - await ApplicationData.Current.LocalFolder - .CreateFileAsync("sqliteSample.db", CreationCollisionOption.OpenIfExists); - string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, - "sqliteSample.db"); - using (var db = new SqliteConnection($"Filename={dbpath}")) - { - db.Open(); - - string tableCommand = "CREATE TABLE IF NOT " + - "EXISTS MyTable (Primary_Key INTEGER PRIMARY KEY, " + - "Text_Entry NVARCHAR(2048) NULL)"; - - var createTable = new SqliteCommand(tableCommand, db); - - createTable.ExecuteReader(); - } -} -``` - ->[!NOTE] -> The code above that uses `ApplicationData` members will only work for packaged apps running in an app container. All other Windows apps should access `ApplicationData` members via the [ApplicationDataManager](/uwp/api/Windows.Management.Core.ApplicationDataManager) class. - -This code creates the SQLite database and stores it in the application's local data store. - -In this example, we name the database `sqlliteSample.db` but you can use whatever name you want as long as you use that name in all [SqliteConnection](/dotnet/api/microsoft.data.sqlite.sqliteconnection) objects that you instantiate. In a production application, connection information such as the database filename should be stored in app configuration rather than hard-coded (see [**Adding Azure App Configuration by using Visual Studio Connected Services**](/visualstudio/azure/vs-azure-tools-connected-services-app-configuration)). - -In the constructor of the **App.xaml.cs** file of your project, call the `InitializeDatabase` method of the `DataAccess` class. This will ensure that the database is created or opened each time the app starts. - -```csharp -public App() -{ - this.InitializeComponent(); - - DataAccess.InitializeDatabase(); -} -``` - -### Insert data into the SQLite database - -Add a method to the `DataAccess` class that inserts data into the SQLite database. This code uses parameters in the query to prevent SQL injection attacks. - -```csharp -public static void AddData(string inputText) -{ - string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, - "sqliteSample.db"); - using (var db = new SqliteConnection($"Filename={dbpath}")) - { - db.Open(); - - var insertCommand = new SqliteCommand(); - insertCommand.Connection = db; - - // Use parameterized query to prevent SQL injection attacks - insertCommand.CommandText = "INSERT INTO MyTable VALUES (NULL, @Entry);"; - insertCommand.Parameters.AddWithValue("@Entry", inputText); - - insertCommand.ExecuteReader(); - } - -} -``` - -### Retrieve data from the SQLite database - -Add a method that gets all rows of data from a table in our SQLite database. - -```csharp -public static List GetData() -{ - var entries = new List(); - string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, - "sqliteSample.db"); - using (var db = new SqliteConnection($"Filename={dbpath}")) - { - db.Open(); - var selectCommand = new SqliteCommand - ("SELECT Text_Entry from MyTable", db); - - SqliteDataReader query = selectCommand.ExecuteReader(); - - while (query.Read()) - { - entries.Add(query.GetString(0)); - } - } - - return entries; -} -``` - -The [Read](/dotnet/api/microsoft.data.sqlite.sqlitedatareader.read#Microsoft_Data_Sqlite_SqliteDataReader_Read) method advances through the rows of returned data. It returns `true` if there are rows left, otherwise it returns `false`. - -The [GetString](/dotnet/api/microsoft.data.sqlite.sqlitedatareader.getstring#Microsoft_Data_Sqlite_SqliteDataReader_GetString_System_Int32_) method returns the value of the specified column as a string. It accepts an integer value that represents the zero-based column ordinal of the data that you want. You can use similar methods such as [GetDataTime](/dotnet/api/microsoft.data.sqlite.sqlitedatareader.getdatetime#Microsoft_Data_Sqlite_SqliteDataReader_GetDateTime_System_Int32_) and [GetBoolean](/dotnet/api/microsoft.data.sqlite.sqlitedatareader.getboolean#Microsoft_Data_Sqlite_SqliteDataReader_GetBoolean_System_Int32_). Choose a method based on what type of data the column contains. - -The ordinal parameter isn't as important in this example because we are selecting all of the entries in a single column. However, if multiple columns are part of your query, use the ordinal value to obtain the column you want to pull data from. - -## Add a basic user interface - -In the **MainWindow.xaml** file of the project, add the following XAML. - -``` xaml - - - - - - - - - - - - - -``` - -This basic user interface gives the user a `TextBox` that they can use to type a string that we'll add to the SQLite database. We'll connect the `Button` in this UI to an event handler that will retrieve data from the SQLite database and then show that data in the `ListView`. - -In the **MainWindow.xaml.cs** file, add the following handler. This is the method that we associated with the `Click` event of the `Button` in the UI. - -```csharp -private void AddData(object sender, RoutedEventArgs e) -{ - DataAccess.AddData(Input_Box.Text); - - Output.ItemsSource = DataAccess.GetData(); -} -``` - -We also want to be sure that any existing data is loaded when the application starts. Add a line of code to the `MainWindow` constructor to call `GetData()`. - -```csharp -public MainWindow() -{ - this.InitializeComponent(); - - Output.ItemsSource = DataAccess.GetData(); -} -``` - -That's it. Explore the [Microsoft.Data.Sqlite](/dotnet/api/microsoft.data.sqlite) to see what other things you can do with your SQLite database. Check out the links below to learn about other ways to use data in your Windows apps. - -## Related content - -### Connect your app directly to a SQL Server database - -See [Use a SQL Server database in a Windows app](sql-server-database.md). - -### Share code between different apps across different platforms - -See [Share code between desktop and UWP](/windows/uwp/porting/desktop-to-uwp-migrate). - -### Add master detail pages with Azure SQL back ends - -See [Customer Orders Database sample](https://github.com/Microsoft/Windows-appsample-customers-orders-database). diff --git a/hub/apps/develop/data-and-files.md b/hub/apps/develop/data-and-files.md deleted file mode 100644 index 9dff102dc2..0000000000 --- a/hub/apps/develop/data-and-files.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Data and files -description: This article provides an index of development features that are related to scenarios involving data and files in Windows apps. -ms.topic: article -ms.date: 05/11/2021 -keywords: ---- - -# Data and files - -This article provides an index of development features that are related to scenarios involving data and files in Windows apps. - -## Windows App SDK features - -The [Windows App SDK](../windows-app-sdk/index.md) provides the following features related to data and files scenarios for Windows 10 and later OS releases. - -| Feature | Description | -|---------|-------------| -| [Manage resources with MRT Core](../windows-app-sdk/mrtcore/mrtcore-overview.md) | Use the *MRT Core* APIs in the [Microsoft.Windows.ApplicationModel.Resources](/windows/windows-app-sdk/api/winrt/microsoft.windows.applicationmodel.resources) namespace to manage app resources such as strings and images in multiple languages, scales, and contrast variants independently of your app's logic. MRT Core is a streamlined version of the older resource management APIs in the [Windows.ApplicationModel.Resources](/uwp/api/windows.applicationmodel.resources) of the Windows platform. | - -## Windows OS features - -Windows 10 and later OS releases provide a wide variety of APIs related to data and files scenarios for apps. These features are available via a combination of WinRT and Win32 (C++ and COM) APIs provided by the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk). - -### WinRT APIs - -The following articles provide information about features available via WinRT APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [App resources](/windows/uwp/app-resources/) | Learn how to use the APIs in the [Windows.ApplicationModel.Resources](/uwp/api/windows.applicationmodel.resources) namespace and other related namespaces to manage app resources such as strings and images in multiple languages, scales, and contrast variants independently of your app's logic. | -| [Data binding](/windows/uwp/data-binding/) | Learn how to bind your app's UI to data and keep the UI in sync with changes to the data. | -| [Files, folders, and libraries](/windows/uwp/files/) | Learn how to read and write text and other data formats in files, and to manage files and folders. | - -### Win32 (C++ and COM) APIs - -The following articles provide information about features available via Win32 (C++ and COM) APIs provided by the Windows SDK. - -| Article | Description | -|---------|-------------| -| [Menus and other resources](/windows/win32/menurc/resources) | Learn how to manage app resources including icons, cursors, menus, dialog boxes, bitmaps, and much more. | -| [Data access and storage](/windows/desktop/data-access-and-storage) | Learn about data access and storage scenarios involving file and file system management, database access, and much more. | - -## .NET features - -The .NET SDK also provides APIs related to data and files scenarios for WPF and Windows Forms apps. - -| Article | Description | -|---------|-------------| -| [Resources in .NET apps](/dotnet/framework/resources/) | Learn general strategies for managing app resources in .NET apps. | -| [Application resource, content, and data files (WPF)](/dotnet/framework/wpf/app-development/wpf-application-resource-content-and-data-files) | Learn how to manage app resources in WPF apps. | -| [Application settings (Windows Forms)](/dotnet/framework/winforms/advanced/application-settings-for-windows-forms) | Learn how to create, store, and maintain custom application and user preferences in Windows Forms apps. | -| [LINQ](/dotnet/standard/linq/) | Learn how to use Language-Integrated Query (LINQ) to perform language-level data queries in .NET apps. | -| [XML documents and data](/dotnet/standard/data/xml/) | Learn how to parse and write XML, edit XML data in memory, validate XML data, and perform XSLT transformations in .NET apps. | -| [Entity Framework Core](/ef/core/) | Learn how to work with databases using Entity Framework Core in .NET apps. | -| [Data binding (WPF)](/dotnet/framework/wpf/data/data-binding-wpf) | Learn how to bind your WPF app's UI to data and keep the UI in sync with changes to the data. | -| [Data binding (Windows Forms)](/dotnet/framework/winforms/windows-forms-data-binding) | Learn how to bind your Windows Forms app's UI to data and keep the UI in sync with changes to the data. | -| [File and stream I/O](/dotnet/standard/io/) | Learn how to read and write on data streams and files in .NET apps, both synchronously and asynchronously. | diff --git a/hub/apps/develop/data-binding/bind-to-hierarchical-data-and-create-a-master-details-view.md b/hub/apps/develop/data-binding/bind-to-hierarchical-data-and-create-a-master-details-view.md deleted file mode 100644 index 52d1ed4de0..0000000000 --- a/hub/apps/develop/data-binding/bind-to-hierarchical-data-and-create-a-master-details-view.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -ms.assetid: 6c563dd4-3dd0-4175-a1ab-7a1103fc9559 -title: Bind hierarchical data and create a master/details view with Windows App SDK -description: You can make a multi-level master/details (also known as list-details) view of hierarchical data by binding items controls to CollectionViewSource instances that are bound together in a chain. -ms.date: 12/13/2022 -ms.topic: how-to -keywords: windows 10, windows 11, winui, windows app sdk, windows ui, xBind -ms.localizationpriority: medium ---- - -# Bind hierarchical data and create a master/details view with Windows App SDK - -> [!NOTE] -> Also see the [Master/detail UWP sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlMasterDetail). - -You can make a multi-level master/details (also known as list-details) view of hierarchical data by binding items controls to [**CollectionViewSource**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.collectionviewsource) instances that are bound together in a chain. In this topic we use the [{x:Bind} markup extension](/windows/uwp/xaml-platform/x-bind-markup-extension) where possible, and the more flexible (but less performant) [{Binding} markup extension](/windows/uwp/xaml-platform/binding-markup-extension) where necessary. - -One common structure for Windows App SDK apps is to navigate to different details pages when a user makes a selection in a master list. This is useful when you want to provide a rich visual representation of each item at every level in a hierarchy. Another option is to display multiple levels of data on a single page. This is useful when you want to display a few simple lists that let the user quickly drill down to an item of interest. This topic describes how to implement this interaction. The [**CollectionViewSource**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.collectionviewsource) instances keep track of the current selection at each hierarchical level. - -We'll create a view of a sports team hierarchy that is organized into lists for leagues, divisions, and teams, and includes a team details view. When you select an item from any list, the subsequent views update automatically. - -![master/details view of a sports hierarchy](images/xaml-masterdetails.png) - -## Prerequisites - -This topic assumes that you know how to create a basic Windows App SDK app. For instructions on creating your first Windows App SDK app, see [Create your first WinUI 3 (Windows App SDK) project](/windows/apps/winui/winui3/create-your-first-winui3-app). - -## Create the project - -Create a new **Blank App, Packaged (WinUI 3 in Desktop)** project. Name it "MasterDetailsBinding". - -## Create the data model - -Add a new class to your project, name it **ViewModel.cs**, and add this code to it. This will be your binding source class. - -```cs -using System.Collections.Generic; -using System.Linq; - -namespace MasterDetailsBinding -{ - public class Team - { - public string Name { get; set; } - public int Wins { get; set; } - public int Losses { get; set; } - } - - public class Division - { - public string Name { get; set; } - public IEnumerable Teams { get; set; } - } - - public class League - { - public string Name { get; set; } - public IEnumerable Divisions { get; set; } - } - - public class LeagueList : List - { - public LeagueList() - { - AddRange(GetLeague().ToList()); - } - - public IEnumerable GetLeague() - { - return from x in Enumerable.Range(1, 2) - select new League - { - Name = "League " + x, - Divisions = GetDivisions(x).ToList() - }; - } - - public IEnumerable GetDivisions(int x) - { - return from y in Enumerable.Range(1, 3) - select new Division - { - Name = string.Format("Division {0}-{1}", x, y), - Teams = GetTeams(x, y).ToList() - }; - } - - public IEnumerable GetTeams(int x, int y) - { - return from z in Enumerable.Range(1, 4) - select new Team - { - Name = string.Format("Team {0}-{1}-{2}", x, y, z), - Wins = 25 - (x * y * z), - Losses = x * y * z - }; - } - } -} -``` - -## Create the view - -Next, expose the binding source class from the class that represents your page of markup. We do that by adding a property of type `LeagueList` to **MainWindow**. - -```cs -namespace MasterDetailsBinding -{ - public sealed partial class MainWindow : Window - { - public MainWindow() - { - InitializeComponent(); - ViewModel = new LeagueList(); - } - public LeagueList ViewModel { get; set; } - } -} -``` - -Finally, replace the contents of the **MainWindow.xaml** file with the following markup, which declares three [**CollectionViewSource**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.collectionviewsource) instances and binds them together in a chain. The subsequent controls can then bind to the appropriate `CollectionViewSource`, depending on its level in the hierarchy. - -``` xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -Note that by binding directly to the [**CollectionViewSource**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.collectionviewsource), you're implying that you want to bind to the current item in bindings where the path cannot be found on the collection itself. There's no need to specify the `CurrentItem` property as the path for the binding, although you can do that if there's any ambiguity. For example, the [**ContentControl**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol) representing the team view has its [**Content**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentcontrol.content) property bound to the `Teams` `CollectionViewSource`. However, the controls in the [**DataTemplate**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.datatemplate) bind to properties of the `Team` class because the `CollectionViewSource` automatically supplies the currently selected team from the teams list when necessary. - -## See also - -- [Data binding overview](data-binding-overview.md) -- [Data binding in depth](data-binding-in-depth.md) diff --git a/hub/apps/develop/data-binding/data-binding-and-mvvm.md b/hub/apps/develop/data-binding/data-binding-and-mvvm.md deleted file mode 100644 index 06d38545ef..0000000000 --- a/hub/apps/develop/data-binding/data-binding-and-mvvm.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -ms.assetid: b7a8ec88-3013-4e5a-a110-fab3f20ee4bf -title: Windows data binding and MVVM -description: Data binding is at the core of the Model-View-ViewModel (MVVM) UI architectural design pattern, and enables loose coupling between UI and non-UI code. -ms.date: 12/13/2022 -ms.topic: article -keywords: windows 10, windows 11, windows app sdk, winui, windows ui, mvvm -ms.localizationpriority: medium ---- - -# Windows data binding and MVVM - -Model-View-ViewModel (MVVM) is a UI architectural design pattern for decoupling UI and non-UI code. With MVVM, you define your UI declaratively in XAML and use data binding markup to link it to other layers containing data and commands. The data binding infrastructure provides a loose coupling that keeps the UI and the linked data synchronized and routes user input to the appropriate commands. - -Because it provides loose coupling, the use of data binding reduces hard dependencies between different kinds of code. This makes it easier to change individual code units (methods, classes, controls, etc.) without causing unintended side effects in other units. This decoupling is an example of the *separation of concerns*, which is an important concept in many design patterns. - -## Benefits of MVVM - -Decoupling your code has many benefits, including: - -* Enabling an iterative, exploratory coding style. Change that is isolated is less risky and easier to experiment with. -* Simplifying unit testing. Code units that are isolated from one another can be tested individually and outside of production environments. -* Supporting team collaboration. Decoupled code that adheres to well-designed interfaces can be developed by separate individuals or teams, and integrated later. -* Improving maintainability. Fixing bugs in decoupled code is less likely to cause regressions in other code. - -In contrast with MVVM, an app with a more conventional "code-behind" structure typically uses data binding for display-only data, and responds to user input by directly handling events exposed by controls. The event handlers are implemented in code-behind files (such as MainWindow.xaml.cs), and are often tightly coupled to the controls, typically containing code that manipulates the UI directly. This makes it difficult or impossible to replace a control without having to update the event handling code. With this architecture, code-behind files often accumulate code that isn't directly related to the UI, such as database-access code, which ends up being duplicated and modified for use with other windows. - -## App layers - -When using the MVVM pattern, an app is divided into the following layers: - -* The **model** layer defines the types that represent your business data. This includes everything required to model the core app domain, and often includes core app logic. This layer is completely independent of the view and view-model layers, and often resides partially in the cloud. Given a fully implemented model layer, you can create multiple different client apps if you so choose, such as Windows App SDK and web apps that work with the same underlying data. -* The **view** layer defines the UI using XAML markup. The markup includes data binding expressions (such as [x:Bind](/windows/uwp/xaml-platform/x-bind-markup-extension)) that define the connection between specific UI components and various view-model and model members. Code-behind files are sometimes used as part of the view layer to contain additional code needed to customize or manipulate the UI, or to extract data from event handler arguments before calling a view-model method that performs the work. -* The **view-model** layer provides data binding targets for the view. In many cases, the view-model exposes the model directly, or provides members that wrap specific model members. The view-model can also define members for keeping track of data that is relevant to the UI but not to the model, such as the display order of a list of items. The view-model also serves as an integration point with other services such as data access code. For simple projects, you might not need a separate model layer, but only a view-model that encapsulates all the data you need. - -## Basic and advanced MVVM - -As with any design pattern, there is more than one way to implement MVVM, and many different techniques are considered part of MVVM. For this reason, there are several different third-party MVVM frameworks supporting the various XAML-based platforms, including Windows App SDK. However, these frameworks generally include multiple services for implementing decoupled architecture, making the exact definition of MVVM somewhat ambiguous. - -Although sophisticated MVVM frameworks can be very useful, especially for enterprise-scale projects, there is typically a cost associated with adopting any particular pattern or technique, and the benefits are not always clear, depending on the scale and size of your project. Fortunately, you can adopt only those techniques that provide a clear and tangible benefit, and ignore others until you need them. - -In particular, you can get a lot of benefit simply by understanding and applying the full power of data binding and separating your app logic into the layers described earlier. This can be achieved using only the capabilities provided by the Windows App SDK, and without using any external frameworks. In particular, the [{x:Bind} markup extension](/windows/uwp/xaml-platform/x-bind-markup-extension) makes data binding easier and higher performing than in previous XAML platforms, eliminating the need for a lot of the boilerplate code required earlier. - -For additional guidance on using basic, out-of-the-box MVVM, check out the [Customers Orders Database UWP sample](https://github.com/Microsoft/Windows-appsample-customers-orders-database) on GitHub. Many of the other [UWP app samples](https://github.com/Microsoft?q=windows-appsample -) also use a basic MVVM architecture, and the [Traffic App UWP sample](https://github.com/Microsoft/Windows-appsample-trafficapp) includes both code-behind and MVVM versions, with notes describing the [MVVM conversion](https://github.com/Microsoft/Windows-appsample-trafficapp/blob/MVVM/MVVM.md). - -## See also - -### Topics - -[Data binding in depth](data-binding-in-depth.md) -[{x:Bind} markup extension](/windows/uwp/xaml-platform/x-bind-markup-extension) - -### UWP MVVM Samples - -[Customers Orders Database sample](https://github.com/Microsoft/Windows-appsample-customers-orders-database) -[VanArsdel Inventory sample](https://github.com/Microsoft/InventorySample) -[Traffic App sample](https://github.com/Microsoft/Windows-appsample-trafficapp) diff --git a/hub/apps/develop/data-binding/data-binding-in-depth.md b/hub/apps/develop/data-binding/data-binding-in-depth.md deleted file mode 100644 index e032c979c4..0000000000 --- a/hub/apps/develop/data-binding/data-binding-in-depth.md +++ /dev/null @@ -1,846 +0,0 @@ ---- -ms.assetid: 2a50c798-6244-4fda-9091-a10a9e87fae2 -title: Windows data binding in depth -description: Learn how to use data binding in Windows App SDK applications -ms.date: 12/12/2022 -ms.topic: article -keywords: windows 10, windows 11, windows app sdk, winui, windows ui -ms.localizationpriority: medium -dev_langs: - - csharp - - cppwinrt ---- - -# Windows data binding in depth - -In this article, we will describe the Windows App SDK data binding features for the APIs that reside in the [**Microsoft.UI.Xaml.Data** namespace](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data). - -> [!NOTE] -> This topic describes data binding features in detail. For a short, practical introduction, see [Data binding overview](data-binding-overview.md). - -## Important APIs - -- [**{x:Bind} markup extension**](/windows/uwp/xaml-platform/x-bind-markup-extension) -- [**Binding class**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.binding) -- [**DataContext**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.datacontext) -- [**INotifyPropertyChanged**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.inotifypropertychanged) - -## Introduction - -Data binding is a way for your app's UI to display data, and optionally to stay in sync with that data. Data binding allows you to separate the concern of data from the concern of UI, and that results in a simpler conceptual model as well as better readability, testability, and maintainability of your app. - -You can use data binding to simply display values from a data source when the UI is first shown, but not to respond to changes in those values. This is a mode of binding called *one-time*, and it works well for a value that doesn't change during run-time. Alternatively, you can choose to "observe" the values and to update the UI when they change. This mode is called *one-way*, and it works well for read-only data. Ultimately, you can choose to both observe and update, so that changes that the user makes to values in the UI are automatically pushed back into the data source. This mode is called *two-way*, and it works well for read-write data. Here are some examples. - -- You could use the one-time mode to bind an [**Image**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.image) to the current user's photo. -- You could use the one-way mode to bind a [**ListView**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) to a collection of real-time news articles grouped by newspaper section. -- You could use the two-way mode to bind a [**TextBox**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textbox) to a customer's name in a form. - -Independent of mode, there are two kinds of binding, and they're both typically declared in UI markup. You can choose to use either the [{x:Bind} markup extension](/windows/uwp/xaml-platform/x-bind-markup-extension) or the [{Binding} markup extension](/windows/uwp/xaml-platform/binding-markup-extension). And you can even use a mixture of the two in the same app—even on the same UI element. `{x:Bind}` was new in UWP for Windows 10 and it has better performance. All the details described in this topic apply to both kinds of binding unless we explicitly say otherwise. - -### UWP Sample apps that demonstrate {x:Bind} - -- [{x:Bind} sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlBind). -- [QuizGame](https://github.com/microsoft/Windows-appsample-networkhelper). -- [XAML UI Basics sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlUIBasics). - -### UWP Sample apps that demonstrate {Binding} - -- Download the [UWP Bookstore1](https://codeload.github.com/MicrosoftDocs/windows-topic-specific-samples/zip/Bookstore1Universal_10) app. -- Download the [Bookstore2](https://codeload.github.com/MicrosoftDocs/windows-topic-specific-samples/zip/Bookstore2Universal_10) app. - -## Every binding involves these pieces - -- A *binding source*. This is the source of the data for the binding, and it can be an instance of any class that has members whose values you want to display in your UI. -- A *binding target*. This is a [**DependencyProperty**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.dependencyproperty) of the [**FrameworkElement**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement) in your UI that displays the data. -- A *binding object*. This is the piece that transfers data values from the source to the target, and optionally from the target back to the source. The binding object is created at XAML load time from your [{x:Bind}](/windows/uwp/xaml-platform/x-bind-markup-extension) or [{Binding}](/windows/uwp/xaml-platform/binding-markup-extension) markup extension. - -In the following sections, we'll take a closer look at the binding source, the binding target, and the binding object. And we'll link the sections together with the example of binding a button's content to a string property named `NextButtonText`, which belongs to a class named `HostViewModel`. - -### Binding source - -Here's a very rudimentary implementation of a class that we could use as a binding source. - -``` csharp -public class HostViewModel -{ - public HostViewModel() - { - NextButtonText = "Next"; - } - - public string NextButtonText { get; set; } -} -``` - -That implementation of `HostViewModel`, and its property `NextButtonText`, are only appropriate for one-time binding. But one-way and two-way bindings are extremely common, and in those kinds of binding the UI automatically updates in response to changes in the data values of the binding source. In order for those kinds of binding to work correctly, you need to make your binding source *observable* to the binding object. So in our example, if we want to one-way or two-way bind to the `NextButtonText` property, then any changes that happen at run-time to the value of that property need to be made observable to the binding object. - -One way of doing that is to derive the class that represents your binding source from [**DependencyObject**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.dependencyobject), and expose a data value through a [**DependencyProperty**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.dependencyproperty). That's how a [**FrameworkElement**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement) becomes observable. A `FrameworkElement` is a good binding source right out of the box. - -A more lightweight way of making a class observable—and a necessary one for classes that already have a base class—is to implement [**System.ComponentModel.INotifyPropertyChanged**](/dotnet/api/system.componentmodel.inotifypropertychanged). This really just involves implementing a single event named `PropertyChanged`. An example using `HostViewModel` is below. - -``` csharp -... -using System.ComponentModel; -using System.Runtime.CompilerServices; -... -public class HostViewModel : INotifyPropertyChanged -{ - private string nextButtonText; - - public event PropertyChangedEventHandler PropertyChanged = delegate { }; - - public HostViewModel() - { - NextButtonText = "Next"; - } - - public string NextButtonText - { - get { return nextButtonText; } - set - { - nextButtonText = value; - OnPropertyChanged(); - } - } - - public void OnPropertyChanged([CallerMemberName] string propertyName = null) - { - // Raise the PropertyChanged event, passing the name of the property whose value has changed. - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } -} -``` - -Now the `NextButtonText` property is observable. When you author a one-way or a two-way binding to that property (we'll show how later), the resulting binding object subscribes to the `PropertyChanged` event. When that event is raised, the binding object's handler receives an argument containing the name of the property that has changed. That's how the binding object knows which property's value to go and read again. - -So that you don't have to implement the pattern shown above multiple times, if you're using C# then you can just derive from the `BindableBase` base class that you'll find in the [QuizGame](https://github.com/microsoft/Windows-appsample-networkhelper) sample (in the "Common" folder). Here's an example of how that looks. - -``` csharp -public class HostViewModel : BindableBase -{ - private string nextButtonText; - - public HostViewModel() - { - NextButtonText = "Next"; - } - - public string NextButtonText - { - get { return nextButtonText; } - set { SetProperty(ref nextButtonText, value); } - } -} -``` - -Raising the `PropertyChanged` event with an argument of [**String.Empty**](/dotnet/api/system.string.empty) or `null` indicates that all non-indexer properties on the object should be re-read. You can raise the event to indicate that indexer properties on the object have changed by using an argument of "Item\[*indexer*\]" for specific indexers (where *indexer* is the index value), or a value of "Item\[\]" for all indexers. - -A binding source can be treated either as a single object whose properties contain data, or as a collection of objects. In C# code, you can one-time bind to an object that implements [**List<T>**](/dotnet/api/system.collections.generic.list-1) to display a collection that doesn't change at run-time. For an observable collection (observing when items are added to and removed from the collection), one-way bind to [**ObservableCollection<T>**](/dotnet/api/system.collections.objectmodel.observablecollection-1) instead. To bind to your own collection classes, use the guidance in the following table. - -| Scenario | C# (CLR) | C++/WinRT | -|-|-|-| -| Bind to an object. | Can be any object. | Can be any object. | -| Get property change notifications from a bound object. | Object must implement [**INotifyPropertyChanged**](/dotnet/api/system.componentmodel.inotifypropertychanged). | Object must implement [**INotifyPropertyChanged**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.inotifypropertychanged). | -| Bind to a collection. | [**List<T>**](/dotnet/api/system.collections.generic.list-1) | [**IVector**](/uwp/api/windows.foundation.collections.ivector_t_) of [**IInspectable**](/windows/win32/api/inspectable/nn-inspectable-iinspectable), or [**IBindableObservableVector**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.interop.ibindableobservablevector). See [XAML items controls; bind to a C++/WinRT collection](/windows/uwp/cpp-and-winrt-apis/binding-collection) and [Collections with C++/WinRT](/windows/uwp/cpp-and-winrt-apis/collections). | -| Get collection change notifications from a bound collection. | [**ObservableCollection<T>**](/dotnet/api/system.collections.objectmodel.observablecollection-1)|[**IObservableVector**](/uwp/api/windows.foundation.collections.iobservablevector_t_) of [**IInspectable**](/windows/win32/api/inspectable/nn-inspectable-iinspectable). For example, [**winrt::single_threaded_observable_vector<T>**](/uwp/cpp-ref-for-winrt/single-threaded-observable-vector). | -| Implement a collection that supports binding. | Extend [**List<T>**](/dotnet/api/system.collections.generic.list-1) or implement [**IList**](/dotnet/api/system.collections.ilist), [**IList**](/dotnet/api/system.collections.generic.ilist-1)<[**Object**](/dotnet/api/system.object)>, [**IEnumerable**](/dotnet/api/system.collections.ienumerable), or [**IEnumerable**](/dotnet/api/system.collections.generic.ienumerable-1)<Object>. Binding to generic `IList` and `IEnumerable` is not supported. | Implement [**IVector**](/uwp/api/windows.foundation.collections.ivector_t_) of [**IInspectable**](/windows/win32/api/inspectable/nn-inspectable-iinspectable). See [XAML items controls; bind to a C++/WinRT collection](/windows/uwp/cpp-and-winrt-apis/binding-collection) and [Collections with C++/WinRT](/windows/uwp/cpp-and-winrt-apis/collections). | -| Implement a collection that supports collection change notifications. | Extend [**ObservableCollection<T>**](/dotnet/api/system.collections.objectmodel.observablecollection-1) or implement (non-generic) [**IList**](/dotnet/api/system.collections.ilist) and [**INotifyCollectionChanged**](/dotnet/api/system.collections.specialized.inotifycollectionchanged). | Implement [**IObservableVector**](/uwp/api/windows.foundation.collections.iobservablevector_t_) of [**IInspectable**](/windows/win32/api/inspectable/nn-inspectable-iinspectable), or [**IBindableObservableVector**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.interop.ibindableobservablevector). | -| Implement a collection that supports incremental loading. | Extend [**ObservableCollection<T>**](/dotnet/api/system.collections.objectmodel.observablecollection-1) or implement (non-generic) [**IList**](/dotnet/api/system.collections.ilist) and [**INotifyCollectionChanged**](/dotnet/api/system.collections.specialized.inotifycollectionchanged). Additionally, implement [**ISupportIncrementalLoading**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.isupportincrementalloading). | Implement [**IObservableVector**](/uwp/api/windows.foundation.collections.iobservablevector_t_) of [**IInspectable**](/windows/win32/api/inspectable/nn-inspectable-iinspectable), or [**IBindableObservableVector**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.interop.ibindableobservablevector). Additionally, implement [**ISupportIncrementalLoading**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.isupportincrementalloading) | - -You can bind list controls to arbitrarily large data sources, and still achieve high performance, by using incremental loading. For example, you can bind list controls to Bing image query results without having to load all the results at once. Instead, you load only some results immediately, and load additional results as needed. To support incremental loading, you must implement [**ISupportIncrementalLoading**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.isupportincrementalloading) on a data source that supports collection change notifications. When the data binding engine requests more data, your data source must make the appropriate requests, integrate the results, and then send the appropriate notifications in order to update the UI. - -### Binding target - -In the two examples below, the `Button.Content` property is the binding target, and its value is set to a markup extension that declares the binding object. First [{x:Bind}](/windows/uwp/xaml-platform/x-bind-markup-extension) is shown, and then [{Binding}](/windows/uwp/xaml-platform/binding-markup-extension). Declaring bindings in markup is the common case (it's convenient, readable, and toolable). But you can avoid markup and imperatively (programmatically) create an instance of the [**Binding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.data.binding) class instead if you need to. - -``` xaml -