From e2b2a9c3dd6ca948273dcd2a33b15e503963b180 Mon Sep 17 00:00:00 2001 From: Denis Voituron Date: Fri, 9 May 2025 11:06:47 +0200 Subject: [PATCH 1/2] Add [!NOTE] [!TIP] [!WARNING] --- .../Components/MarkdownViewer.razor.css | 41 +++++++++++++------ .../FluentUI.Demo.DocViewer/Models/Section.cs | 21 +++++++++- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/examples/Tools/FluentUI.Demo.DocViewer/Components/MarkdownViewer.razor.css b/examples/Tools/FluentUI.Demo.DocViewer/Components/MarkdownViewer.razor.css index e76cd8d8e2..ea9d8431fa 100644 --- a/examples/Tools/FluentUI.Demo.DocViewer/Components/MarkdownViewer.razor.css +++ b/examples/Tools/FluentUI.Demo.DocViewer/Components/MarkdownViewer.razor.css @@ -50,8 +50,35 @@ border-left: 6px solid var(--colorBrandBackground); } - /* Code */ + /* Keywords */ + .doc-viewer ::deep span[keyword] { + font-weight: 600; + display: flex; + align-items: center; + column-gap: 4px; + } + + .doc-viewer ::deep blockquote:has(span[keyword="note"]) { + background-color: var(--colorBrandBackground2); + border-left: 6px solid var(--colorBrandBackground); + } + + .doc-viewer ::deep blockquote:has(span[keyword="tip"]) { + background-color: var(--colorPaletteDarkGreenBackground2); + border-left: 6px solid var(--colorPaletteDarkGreenBorderActive); + } + + .doc-viewer ::deep blockquote:has(span[keyword="warn"]) { + background-color: var(--colorPaletteGoldBackground2); + border-left: 6px solid var(--colorPaletteGoldBorderActive); + } + .doc-viewer ::deep span[keyword] svg { + fill: var(--colorNeutralForeground1); + width: 20px; + height: 20px; + } + /* Code */ .doc-viewer ::deep code { font-weight: 500; background-color: var(--colorNeutralBackground5); @@ -87,9 +114,7 @@ .doc-viewer ::deep pre code[source][class*="hljs"] { display: block; } - /* Demo Section */ - .doc-viewer ::deep .demo-tabs { min-height: 100px; } @@ -100,9 +125,7 @@ padding: 16px 16px; margin: 8px 0px; } - /* API Summary */ - .doc-viewer ::deep .api-summary { background-color: var(--colorNeutralBackground4); max-width: calc(100vw - 32px); @@ -112,9 +135,7 @@ .doc-viewer ::deep .api-summary * { margin: 0px; } - /* API table */ - .doc-viewer ::deep .api-table { width: 100%; max-width: calc(100vw - 32px); @@ -170,7 +191,6 @@ width: 20px; height: 20px; } - /* No Columns, for Methods view (same styles as Mobile */ .doc-viewer ::deep .api-table[no-col] tr { display: flex; @@ -179,8 +199,7 @@ margin-bottom: 10px; } - .doc-viewer ::deep .api-table[no-col] td, - .doc-viewer ::deep .api-table[no-col] th { + .doc-viewer ::deep .api-table[no-col] td, .doc-viewer ::deep .api-table[no-col] th { display: none; flex-wrap: wrap; white-space: normal; @@ -204,9 +223,7 @@ display: block; margin-left: 24px; } - /* Mobile */ - @media(max-width: 768px) { .doc-viewer ::deep .api-table tr { diff --git a/examples/Tools/FluentUI.Demo.DocViewer/Models/Section.cs b/examples/Tools/FluentUI.Demo.DocViewer/Models/Section.cs index a7b8d33291..1f97adb2c8 100644 --- a/examples/Tools/FluentUI.Demo.DocViewer/Models/Section.cs +++ b/examples/Tools/FluentUI.Demo.DocViewer/Models/Section.cs @@ -133,7 +133,7 @@ public Task
ReadAsync(string content) // Text / HTML section else { - Value = content; + Value = ReplaceMarkupKeyWord(content); Type = SectionType.Html; Arguments = new Dictionary(); } @@ -173,4 +173,23 @@ private static (string Name, Dictionary Arguments) ParseComponen return (componentName, dict); } + + /// + private static string ReplaceMarkupKeyWord(string content) + { + const string NOTE_ICON = ""; + const string WARN_ICON = NOTE_ICON; + const string TIP_ICON = ""; + + content = Regex.Replace(content, @"\[!NOTE\]", $"{NOTE_ICON}Note", RegexOptions.IgnoreCase); + content = Regex.Replace(content, @"\[!NOTE_ICON\]", $"{NOTE_ICON}", RegexOptions.IgnoreCase); + + content = Regex.Replace(content, @"\[!WARNING\]", $"{WARN_ICON}Warning", RegexOptions.IgnoreCase); + content = Regex.Replace(content, @"\[!WARNING_ICON\]", $"{WARN_ICON}", RegexOptions.IgnoreCase); + + content = Regex.Replace(content, @"\[!TIP\]", $"{TIP_ICON}Tip", RegexOptions.IgnoreCase); + content = Regex.Replace(content, @"\[!TIP_ICON\]", $"{TIP_ICON}", RegexOptions.IgnoreCase); + + return content; + } } From d32bddac7cc548b9a2b929b6b17cdb4cc7f1c21a Mon Sep 17 00:00:00 2001 From: Denis Voituron Date: Fri, 9 May 2025 11:18:22 +0200 Subject: [PATCH 2/2] Update md files --- .../Documentation/Components/Dialog/FluentDialog.md | 2 +- .../Documentation/Components/Dialog/FluentDrawer.md | 3 ++- .../Documentation/Components/Field/FluentField.md | 2 +- .../Documentation/Components/Layout/FluentLayout.md | 2 +- .../Documentation/Components/Tabs/FluentTabs.md | 2 +- .../Documentation/GetStarted/Localization.md | 3 +-- .../GetStarted/Migration/CopilotInstructionsContent.md | 3 +-- .../GetStarted/Migration/MigrationFluentProgressRing.md | 2 +- .../FluentUI.Demo.Client/Documentation/GetStarted/Styles.md | 2 +- 9 files changed, 10 insertions(+), 11 deletions(-) diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDialog.md b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDialog.md index 89f27f0cd4..5cbb5ee659 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDialog.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDialog.md @@ -72,7 +72,7 @@ It is then retrieved in the `DialogResult` like in the example below. } ``` -> **Note:** +> [!NOTE] > 1. The `FluentDialogBody` component is required to display the dialog window correctly. > 2. ⚠️ If you override the `OnInitializedAsync` method, **you must call** the `base.OnInitializedAsync()` method, > in addition to your personalized code. diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDrawer.md b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDrawer.md index 674ea0e0fd..86d9fe5b10 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDrawer.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Dialog/FluentDrawer.md @@ -23,7 +23,8 @@ Once the user closes the dialog window, the `ShowDrawerAsync` method returns a ` 👉 See the [Dialog](/Dialog) documentation for more information. -> **Note:** The `ShowDrawerAsync` method is identical to the `ShowDialogAsync` method. +> [!NOTE] +> The `ShowDrawerAsync` method is identical to the `ShowDialogAsync` method. > With the exception of the **default value** of the `options.Alignment` property, which is `DialogAlignment.End`. > And the resulting HTML code is slightly different, using a `fluent-drawer` instead of a `fluent-dialog`. > The visual rendering and animation of opening and closing is also different. diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Field/FluentField.md b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Field/FluentField.md index 73374c145b..4c73305b66 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Field/FluentField.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Field/FluentField.md @@ -64,7 +64,7 @@ the default text and icon (or add an icon in the case of `MessageState = null`). {{ FieldStatesExample }} -⚠️ **Note** that the `MessageCondition` attribute must be set to +[!NOTE] that the `MessageCondition` attribute must be set to `(i) => true` or identical to `FluentFieldCondition.Always`. This enables the message to be displayed, which is not the case by default. diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Layout/FluentLayout.md b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Layout/FluentLayout.md index 202baae858..7cb2fe6efe 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Layout/FluentLayout.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Layout/FluentLayout.md @@ -42,7 +42,7 @@ using the [@container](https://developer.mozilla.org/en-US/docs/Web/CSS/@contain Each time the breakpoint is reached, the layout will be updated to reflect the new layout, and the event `OnBreakpointEnter` will be triggered. -**💡 Note**: The `FluentLayout` component can be used with a Blazor static web app or a Blazor interactive app. +[!TIP] The `FluentLayout` component can be used with a Blazor static web app or a Blazor interactive app. The hamburger menu is available in all modes, but the event `OnBreakpointEnter` and the `MenuDeferredLoading` parameter are only available in "interactive mode". ## Sticky Panels diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Tabs/FluentTabs.md b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Tabs/FluentTabs.md index 6682ae9b44..027ac6259c 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Tabs/FluentTabs.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/Components/Tabs/FluentTabs.md @@ -13,7 +13,7 @@ and require less scrolling. For navigation beyond closely related categories, use a [FluentLink](/link) instead. To initiate an action, use a [FluentButton](/button) instead. -> **note**: For the moment, there are no 'scrolling' functions when the number of tabs is too large +> [!NOTE] For the moment, there are no 'scrolling' functions when the number of tabs is too large > in relation to the size of the container or screen. ## Default diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Localization.md b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Localization.md index b03dd6b3c8..6d1c1d0ae4 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Localization.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Localization.md @@ -44,8 +44,7 @@ Here's a step-by-step guide: } ``` - > **Note:** - > + > [!NOTE] > The list of keys can be found in the `Core\Microsoft.FluentUI.AspNetCore.Components\Localization\LanguageResource.resx` file. > Or you can use a constant from the `Microsoft.FluentUI.AspNetCore.Components.Localization.LanguageResource` class. > Example: `Localization.LanguageResource.MessageBox_ButtonOk`. diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/CopilotInstructionsContent.md b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/CopilotInstructionsContent.md index 766ae677d2..4ae5f2679b 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/CopilotInstructionsContent.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/CopilotInstructionsContent.md @@ -12,8 +12,7 @@ Example benefits: - Migrate complete file following new namespacing and new parameters - Renaming old names from v3-v4 to v5 -> ⚠️ Note -> +> [!NOTE] > - This feature is currently in public preview and is subject to change. > - Custom instructions are currently only supported for **Copilot Chat** in **VS Code** and **Visual Studio**. diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationFluentProgressRing.md b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationFluentProgressRing.md index 3636f072e2..9b365cc725 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationFluentProgressRing.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationFluentProgressRing.md @@ -7,7 +7,7 @@ hidden: true The component itself has been renamed from `FluentProgressRing` to `FluentSpinner` to be coherent with the Web Components and React naming conventions. -> **Note:** The new component `FluentSpinner` cannot be paused. It must always be spinning. +> [!NOTE] The new component `FluentSpinner` cannot be paused. It must always be spinning. > So, the `Paused`, `Min`, `Max`, `Value` properties has been removed. ### New properties diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Styles.md b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Styles.md index 88ce32c352..dd8d581aa4 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Styles.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Styles.md @@ -54,7 +54,7 @@ If you are creating a site by using our [Templates package](https://www.fluentui this is already set up for you. You can download the file to see what's inside. -> **Note**: It is entirely possible to build a site **without using Reboot** but you will have to do more styling yourself. +> [!NOTE] It is entirely possible to build a site **without using Reboot** but you will have to do more styling yourself. ## Approach