From 1451f2fe6b0c53aebea96d4417b1d9c9cdeff165 Mon Sep 17 00:00:00 2001 From: Vincent Baaij Date: Thu, 23 Jan 2025 17:35:00 +0100 Subject: [PATCH 1/2] Some doc site changes --- .../Demo/Shared/Components/NewsDate.razor | 27 ++++ .../Demo/Shared/Components/NewsDate.razor.css | 36 +++++ examples/Demo/Shared/Pages/Home/Home.razor | 43 +++--- examples/Demo/Shared/Pages/Home/Videos.razor | 10 +- .../Demo/Shared/Pages/TemplatesPage.razor | 140 ++---------------- examples/Demo/Shared/wwwroot/css/site.css | 40 ++++- .../Demo/Shared/wwwroot/docs/Templates.md | 77 ++++++++++ .../Shared/wwwroot/images/lUZ5mrg2Q8k-MQ.jpg | Bin 0 -> 13094 bytes .../wwwroot/images/new-project-dialog.png | Bin 0 -> 27936 bytes 9 files changed, 216 insertions(+), 157 deletions(-) create mode 100644 examples/Demo/Shared/Components/NewsDate.razor create mode 100644 examples/Demo/Shared/Components/NewsDate.razor.css create mode 100644 examples/Demo/Shared/wwwroot/docs/Templates.md create mode 100644 examples/Demo/Shared/wwwroot/images/lUZ5mrg2Q8k-MQ.jpg create mode 100644 examples/Demo/Shared/wwwroot/images/new-project-dialog.png diff --git a/examples/Demo/Shared/Components/NewsDate.razor b/examples/Demo/Shared/Components/NewsDate.razor new file mode 100644 index 0000000000..62415e3c7a --- /dev/null +++ b/examples/Demo/Shared/Components/NewsDate.razor @@ -0,0 +1,27 @@ +
+
+
@Month
+ @if (@IncludeYear) + { +
@Year
+ } +
+
+
@Day
+
+
+ +@code { + [Parameter, EditorRequired] + public string? Day { get; set; } + + [Parameter, EditorRequired] + public string? Month { get; set; } + + [Parameter, EditorRequired] + public string? Year { get; set; } + + [Parameter] + public bool IncludeYear { get; set; } = false; + +} diff --git a/examples/Demo/Shared/Components/NewsDate.razor.css b/examples/Demo/Shared/Components/NewsDate.razor.css new file mode 100644 index 0000000000..b6037bd9b7 --- /dev/null +++ b/examples/Demo/Shared/Components/NewsDate.razor.css @@ -0,0 +1,36 @@ +.calendar { + width: 30px; + border: 1px solid var(--accent-fill-rest); + border-radius: 8px; + background-color: #fff; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.calendar-header { + background-color: var(--accent-fill-active); + color: var(--neutral-fill-rest); + text-align: center; +} + + .calendar-header .month{ + height: 20px; + font-size: 0.7em; + font-weight: bold; + } + + .calendar-header .year { + height: 10px; + font-size: 0.7em; + } + +.calendar-body { + text-align: center; + position: relative; +} + + .calendar-body .date { + font-size: 1em; + font-weight: bolder; + color: var(--accent-fill-rest) + } diff --git a/examples/Demo/Shared/Pages/Home/Home.razor b/examples/Demo/Shared/Pages/Home/Home.razor index 38c063a2c5..6f9367f348 100644 --- a/examples/Demo/Shared/Pages/Home/Home.razor +++ b/examples/Demo/Shared/Pages/Home/Home.razor @@ -16,12 +16,13 @@

To get up and running with the Microsoft.FluentUI.AspNetCore.Components library, see the "Getting Started" section below.

+

Introduction and getting started video

-
- +
+ Fluent UI Blazor introduction video

- More videos on our videos page + More videos available on our videos page.

@@ -35,26 +36,22 @@

The demo and documentation sites for previous version is available:
Version 3.8.0
- Please be aware that this version is no longer supported as both .NET 6 and .NET 7 are out of support now. + Please be aware that this version is no longer supported as both .NET 6 and .NET 7 are out of support now.

-

What's new?

+ +

What's new

+ +

If you are already up-and-running and upgrading from an earlier version of the library, please go to the What's new page for information on additions, fixes and (breaking) changes.

-

Components & render modes

-

- As described in the Blazor documentation: -

-
- By default, components use Static Server-side rendering (SSR). The component renders to the response stream and there is no interactivity. -
-

- A component inherits its render mode from its parent. So unless a render mode is specified on the app, page or component level, every - component (including ours) is statically rendered on the server and will not be interactive. For the - Fluent UI Blazor library this means most components will display correctly but will not offer complete, if any, functionality. -

Getting Started

@@ -130,6 +127,18 @@
+

Components & render modes

+

+ As described in the Blazor documentation: +

+
+ By default, components use Static Server-side rendering (SSR). The component renders to the response stream and there is no interactivity. +
+

+ A component inherits its render mode from its parent. So unless a render mode is specified on the app, page or component level, every + component (including ours) is statically rendered on the server and will not be interactive. For the + Fluent UI Blazor library this means most components will display correctly but will not offer complete, if any, functionality. +

Configuring the Design System

The Fluent UI Blazor components are built on FAST's Adaptive UI technology, which enables design customization and personalization, while diff --git a/examples/Demo/Shared/Pages/Home/Videos.razor b/examples/Demo/Shared/Pages/Home/Videos.razor index 3b2dfc2c51..3b776cec4f 100644 --- a/examples/Demo/Shared/Pages/Home/Videos.razor +++ b/examples/Demo/Shared/Pages/Home/Videos.razor @@ -6,7 +6,7 @@

Videos

-

Every now and then, we do guests appearances in videos to promote the library and show a bit more on how it works. See the overview below for our most recent appearances

+

Every now and then, we present or do guests appearances in videos to promote the library and show a bit more on how it works. See the overview below for our most recent appearances

@@ -15,10 +15,7 @@ - - - - +
ASP.NET Community Standup 2024
@@ -27,8 +24,7 @@ - - +
Open at Microsoft - 2024
diff --git a/examples/Demo/Shared/Pages/TemplatesPage.razor b/examples/Demo/Shared/Pages/TemplatesPage.razor index 4739c6622e..0b10093ffc 100644 --- a/examples/Demo/Shared/Pages/TemplatesPage.razor +++ b/examples/Demo/Shared/Pages/TemplatesPage.razor @@ -4,137 +4,15 @@

Project templates

-

- To make it easier to start a project that uses the Fluent UI Web Components for Blazor out of the box, we have created the - Microsoft.FluentUI.AspNetCore.Templates template package. -

-

- The package contains templates for creating Blazor Server and/or Blazor WebAssembly apps which mimic the regular Blazor - templates. The Fluent UI Blazor components are already fully set up. If you choose to use the sample pages when creating a project, - all components have been replaced with Fluent UI counterparts (and a few extra have been added). All Bootstrap styling is removed of course as well. -

-

- If you want to use the Icon component with applications based on the templates, we have already included and set up the Icon package for you. - The full collection of approximately 12 thousand icons in different variants and sizes can be browsed and searched from the Icon page. -

-

- If you want to use the Emoji component with applications based on the templates, you still need to make some changes to the project. See the - Icons and Emoji page for more information. -

+ -

- The pages created from these templates will appear like the following based on the type of project and options selected during creation. -

-

- Home page for site created Fluent UI templates -
- Counter page for site created Fluent UI templates -
- Fetch data page for site created Fluent UI templates -

+@code { -
-IMPORTANT!! -

Just as with the standard Blazor Web App template, Blazor will use SSR by default. If you want to have interactive components, make sure you add a rendermode to the app, page or component!

-
+ [CascadingParameter] + public EventCallback OnRefreshTableOfContents { get; set; } -

Installation

-

- You can install the templates by running the following command: -

- -dotnet new install Microsoft.FluentUI.AspNetCore.Templates - -

- The current version can be found on the NuGet site. -

- -

Usage

-

- After installing the templates, you can create a new project from either the CLI or by using the 'Creating a new project'-dialog in Visual Studio 2022. -

- -

- For creating a new Fluent Blazor Web App project from the CLI: -

- -dotnet new fluentblazor -o {your project name} - -

- For creating a Fluent Blazor WebAssembly Standalone App project from the CLI: -

- -dotnet new fluentblazorwasm -o {your project name} - -

- In Visual Studio you can create a new project by selecting either the 'Fluent Blazor Web App' template or the 'Fluent Blazor WebAssembly Standalone App' - template in the 'File->New->Project'-dialog. It looks like this: -

-

- New project dialog with Fluent UI templates -

- -

Blazor Web App details

-

- The rendermode and interactivity choices made when creating an application with the template determine the behavior of the NavMenu and whether we include the web - components script in App.razor. Starting with v4.2.1 of the templates, the result of that choices is described in the table below: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Rendermode / InteractivityNavMenu @@rendermodeNavMenu Collapsible
SSR / not applicable*
Server / Global
Server / Per Page
WebAssembly / Global**
WebAssembly / Per Page**
Auto / Global**
Auto / Per Page**
-

-

- * For expanding/collapsing items, this uses a JavaScript file that is only active when running in SSR mode.
- ** The NavMenu component is located in the Client project. -

- -

Uninstalling the templates

- -

- If you want to uninstall the templates, both from the CLI and Visual Studio 2022, run the following command: -

- -dotnet new uninstall Microsoft.FluentUI.AspNetCore.Templates + private async Task RefreshTableOfContents() + { + await OnRefreshTableOfContents.InvokeAsync(); + } +} diff --git a/examples/Demo/Shared/wwwroot/css/site.css b/examples/Demo/Shared/wwwroot/css/site.css index dfaa44baa1..ea2eaab54c 100644 --- a/examples/Demo/Shared/wwwroot/css/site.css +++ b/examples/Demo/Shared/wwwroot/css/site.css @@ -140,6 +140,31 @@ nav fluent-anchor { display: flex; } +ul.news { + padding-left: 0; + list-style-type: none; +} + + ul.news li { + display: flex; + gap: calc( var(--design-unit) * 2px); + align-items: center; + padding-bottom: calc( var(--design-unit) * 2px); + } + +.news .calendar { + +} + +.news a { + font-size: var(--type-ramp-plus-1-font-size); + line-height: var(--type-ramp-plus-1-line-height); + font-weight: 600; + text-decoration: none; +} + + + article { padding: 1.5rem 1rem; border-right: 1px solid var(--neutral-stroke-divider-rest); @@ -301,7 +326,7 @@ kbd { text-align: center; font-weight: bold; inset: calc(20vh + 3.25rem) 0 auto 0.2rem; - margin-top:80px; + margin-top: 80px; } .loading-progress-text:after { @@ -426,6 +451,7 @@ kbd { fluent-select::part(control) { width: 150px; } + .content { flex-direction: column; } @@ -433,7 +459,7 @@ kbd { aside { padding: 1.5em 0.75em 1em 0.75em; width: 100%; - height: 100%!important; + height: 100% !important; max-height: 100% !important; } @@ -554,3 +580,13 @@ kbd { display: block; min-height: 24px; } + +.youtube-thumbnail { + position: relative; + overflow: hidden; + max-width: 100%; +} + + .youtube-thumbnail img { + width: 100%; + } diff --git a/examples/Demo/Shared/wwwroot/docs/Templates.md b/examples/Demo/Shared/wwwroot/docs/Templates.md new file mode 100644 index 0000000000..197ff4ff2b --- /dev/null +++ b/examples/Demo/Shared/wwwroot/docs/Templates.md @@ -0,0 +1,77 @@ +To make it easier to start a project that uses the Fluent UI Web Components for Blazor out of the box, we have created the [Microsoft.FluentUI.AspNetCore.Templates](https://www.nuget.org/packages/Microsoft.FluentUI.AspNetCore.Templates/) template package. The package contains 4 Blazor templates for creating the following type of applications: +- Fluent Blazor Web App +- Fluent Blazor WebAssembly Standalone App +- Fluent .NET MAUI Blazor Hybrid and Web App +- Fluent .NAT Aspire Starter app + + +All of these templates mimic their standard Blazor template counterpart but have the Fluent UI Blazor components already fully set up. If you choose to add sample pages when creating a project, all components have been replaced with Fluent UI components (and a few extra have been added). All Bootstrap styling is removed of course as well. + +If you want to use the Icon component with applications based on the templates, we have already included and set up the Icon package for you. The full collection of approximately 12 thousand icons in different variants and sizes can be browsed and searched from the [Icon](https://www.fluentui-blazor.net/Icon) page. + +If you want to use the Emoji component with applications based on the templates, you still need to make some changes to the project. See the [Icons and Emoji](https://www.fluentui-blazor.net/IconsAndEmoji) page for more information. + +The pages created from these templates will appear like the following based on the type of project and options selected during creation. + +![Home page for site created Fluent UI templates](https://www.fluentui-blazor.net/_content/FluentUI.Demo.Shared/images/template-home.png) +![Counter page for site created Fluent UI templates](https://www.fluentui-blazor.net/_content/FluentUI.Demo.Shared/images/template-counter.png) +![Fetch data page for site created Fluent UI templates](https://www.fluentui-blazor.net/_content/FluentUI.Demo.Shared/images/template-weather.png) + +> **IMPORTANT!!** +> Just as with the standard Blazor Web App template, Blazor will use SSR by default. If you want to have interactive components, make sure you add a rendermode to the app, page or component! + +## Installation + +You can install the templates by running the following command: + +```cshtml +dotnet new install Microsoft.FluentUI.AspNetCore.TemplatesCopy +``` + +The current version can be found on the [NuGet site](https://www.nuget.org/packages/Microsoft.FLuentUI.AspNetCore.Templates/). + +## Usage + +After installing the templates, you can create a new project from either the CLI or by using the 'Creating a new project'-dialog in Visual Studio 2022. + +For creating a new Fluent Blazor Web App project from the CLI: + +```cshtml +dotnet new fluentblazor -o {your project name}Copy +``` + +For creating a Fluent Blazor WebAssembly Standalone App project from the CLI: + +```cshtml +dotnet new fluentblazorwasm -o {your project name}Copy +``` + +In Visual Studio you can create a new project by selecting on of the templates in the 'File->New->Project'-dialog. It looks like this (when you select 'Fluent' +in the 'All project types' drop down: + +![new project dialog](./_content/FluentUI.Demo.Shared/images/new-project-dialog.png) + +### Blazor Web App details + +The rendermode and interactivity choices made when creating an application with the template determine the behavior of the NavMenu and whether we include the web components script in `App.razor`. Starting with v4.2.1 of the templates, the result of that choices is described in the table below: + +| Rendermode / Interactivity | NavMenu @rendermode | NavMenu Collapsible | +| --- | --- | --- | +| SSR / not applicable | ❌ | ✅^\*^ | +| Server / Global | ❌ | ✅ | +| Server / Per Page | ✅ | ✅ | +| WebAssembly / Global^\*\*^ | ❌ | ✅ | +| WebAssembly / Per Page^\*\*^ | ✅ | ✅ | +| Auto / Global^\*\*^ | ❌ | ✅ | +| Auto / Per Page^\*\*^ | ✅ | ✅ | + +*\* For expanding/collapsing items, this uses a JavaScript file that is only active when running in SSR mode.* +*\*\* The NavMenu component is located in the Client project.* + +## Uninstalling the templates + +If you want to uninstall the templates, both from the CLI and Visual Studio 2022, run the following command: + +```cshtml +dotnet new uninstall Microsoft.FluentUI.AspNetCore.Templates +``` diff --git a/examples/Demo/Shared/wwwroot/images/lUZ5mrg2Q8k-MQ.jpg b/examples/Demo/Shared/wwwroot/images/lUZ5mrg2Q8k-MQ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83e954e93e8058c6a87bcdaa53503290eb7a3daa GIT binary patch literal 13094 zcmbt)byQqU)8`O8KnU(WxCM6z?hb>71b2525G25$fdmQeu7g8xcV~t{gS%T`^E~_R zx4VCR=j`@9U0waF?yA10tGn;5dta7b)&Xyoh>Hw0MNI5>ECcxYIJ#DuuSZ*lQ(5s;CQ(NNK_(b2I92yh4phzN;@hzb6d zL<9uHgnya8>_0W4fBAnT|0Y7>f3Uw2f|p+a95g@!!h1vnTEHtD1VkK!mp%abKSM%RKmxGqE$OSZwf=M`!seD9hQ55WI+Z5HbdhF4xD1 zi47ooIuZ4eYi4w2__)(P<8Ge)&1hk5bWmmPgE4coE)iPa^0Iu5eu2Xd|CfeWpIW|d z4XE6YLEkB^>K+ok-rObP8gIQ2KwzV5+zG)PvDS(f6@KM)fr3c18e3(5=wYPIW6j@{ zb}woh=Qr>I7)&Y&*%7+DJjt{yY)Dol=b{^Bt4i!AxBIZ2B=RZPCN1 z9FMp)N_OInnJXKQEGK)kLhZQIDOqbxFSX-{!Vn3;e$Ps;?JZ=nB!(ICO~KrYrHwHgjdp=H(W;iVg3C4skelXHT3285Ixbfye_b(qBEzbIGL@lfD5$3t1LBL zUR`_P_wXEVG~rC6;h4|RvSVk!F(J%KEs<5jhQ`KnaUa{+^(MIF$<7Ay`jWcllEvlBQJ^KnAyfm@YfTxy zV#fEEXOU4(M4-!OuMotD#j2*m$%-|mDB*v3q=aH5wwCN3GfhZyZF>$7RZz~sWzc#!8 z5S>ac6+N-81hB|xWNbEDxD&garj!uw7PD6F{^UpWX%PEKUS-`h?p7Etk8{+FkOC;o z98`N&RW$vTg}b*ZftcZW%aUnV$u3K=byf~7d#1+}A*b8^R6}!%GObr3w!Dt`={6WN z9jRK?m?729?ZBipV$0Y;){2`RNxaZ6Ks!G~5ah|A@Kwf@4Kc^t5Q6LqAugI9SsDz1 zqa66jZ+B0bj!8@Fh|A9X6J8*3=0aXVPG}m#=x6c^pTSEzXKNMd)^4cy_sc;4h9n8|MC< z@Tq3%;>&K$Y#l1~{m-mf-E)i)*|m2E9nPDaTM1>CqM}RZzW2frGhXrKJO0Q6KNFnXuEa)cF5pGq8bW1RlEgX+vWN(kZfi6uY2U9FE{jhS9M1R_d z!*CyzUD9jQMFxx=UwcyRKg*+L87j`6Ss%G@Jv?)m1fJ_5sAC#dWzctn9k)6mzUdmI z^k1#CcHaLA{fwAkA3S@liY5aRh$d`p3)4-En@gIm<~=sGnlW?X8G@uZ>e1y2gmryq zC^R;!VXv}ij*)F4F*MvWdb%-0GBf^RvgVYYTHovIaa)Ohifc#o9n?a@X(pGpfI!Nz zt)V+-`N#RH1NFNHQmU&lhEb|C^3knVBDboKBPPwRqLZ^_2zxg|p~7lH154E=hquz; z4P$WG3n2K@y}C0i@B*U%zG_SAXQyfgaZ_fGD@M+ZdwAAnum8BWZ%Q`=l!MG!L6UX2 z`wCqk>yF?L)7KITCPW)Xmu8Srt3{55a-06j{x;LR<>sGXN|BRu+RoN*`A1LbIY-h`=ky0E3TWprHm#;Wk^>(G8PxVdy30t zX=JCw22x}-;TX(w;Zx(jfYKGuX@EH9zPr0Bn5kn{l;YPQ6{}6anPQ*iQ@@OEtJ z*HE2!h1Kh(g()-#8*gB`)iB)%{)G zUMxMED+&(^v03B4J_iogR!N%=7*;ScmwfOqNGbX_m*MhM?mQ*N0V~3NMmxzD#5@nd z@3Lim5V!?&KCDLUg9V67mM+)M^jqVm3*Cs%M+{F%Fzox~Sm_IgP0QpgXLmH#5rJ3- zb=JdMV&;dlE+d&9E z&0tg80el|MIu7;wQ&h%$G_#1vUV9_|`vtIjw%)3|JLx>Hv5FG-(>{N^r`06O@#xgC z5v;D0K0`KI!aEot*l<@xU?TYI-N-EwOFW60*Wh^+f>4!DJFp91x@cKASjaKG2B@cYKh4?pE73=g#1YRIu7pjKegngMTRQrdX-Uhf9We)b{6#m5gGL5G;|;O?)Mp2~;kj2W!+`Y! zR;=CtG1nlg?H_c}D>Qub z7R?DdoxtTf2ov|MPEJNv7SI~@r(>JOnWM$>?ZS~SR|$MS=4VmIsAU;gw9K*h=E;FZ zRt7FaqGBS_;U_D9W(2-|!z52C7Nj(DSz5U+73;zHV#CgW5gt<{K-o(!`V zB>;tc_HZPInTe~rDS413bO0>mXy!x@KlUaBRfvQ4vd&K}>)Kmt>r%=5hv7W_*1!Wt zjn?wsaTKOCCRp#39CWDv(^VDH97lqvI8I9)tlO&SdHSPv(pXCC9W%*g(AW6ylsemv zz^jUh?17uFeTH%6YyxtV8h2{^3Vq_-g3g;se4pZ;ASvFQ#r1?HUU6k58&Z9 zFUqr#dGOVTy&I#)N*3kD5C`WIGzDNs#LCUh3VV-lC3{T8Oy3tz3zA%XRk?Vg<7PVd*d}`kn_0gJirsFp5LlA^dDYJMA zj(YAJm3HBO(CqujspB+;aSxX>;J-&>Cp1ZY!YdV=9SYa=RQ7Lc6Y!-8{X)FHJz4pqdhgAu0WpLxX@xz}P+Un82Q zH@CE3fo<14?FHGL@Ks{0^U_ot*gTfm8vbyfpm(@w!e`ZD@|?6T6%;SULB{T%oOoOb z&LGKOXg5m7&>a@hxn*B#pT1IF=C1U38jfm zsMOraCo9*n!WMp(W$<|Fiv$6oKvt;2 zO46=oUEHpIvQA^x%BW&{CU8m?DRmKadps&7#I&gZ%gpqm@NBK(OHNP#9$-}oCA+BR zO%=21(RVZ^p<9Mp*z82eN9aTI<=IrUWE=w4N90#c1j~7gy7E-KZ&r)Jc8jmMRCH$Q6f~oU_d%{l{u!w{O<#Dpf}*87 z%?9@{19uAz^^Hgh^am%z)NAEI5|O*nvmFBG92Or~V8;;vuxmrMiLoWE`22gFtb6lg zr2=S%#;1~@>$t3dWso_AR;ApA%@6l4&5vwbD;^kF`&97^b3eKfY#ekRYU6c_q02ji z-&MXG347D=6=CXJvUQ%q1vt3h*eB%AZ|iPIk3iLSjAp%?yyF|#|xA{yOTsctfD9kS{WlI_~B$O zIhk{q}KOD(_=#&_S_SyjoaZ?fOYXE9upM02w;<0@{Dnb#IpR+qP%}@d5To$ zF&wBAP4_ChH2N8jpJy}qeSpcWz&H2Ji2M(rE(8_F$oh9V1A6oQ&2zZk@dxmJDSx?| zVc5K=5GC~~MlFAaAkfWX&vjanLhOq-m7{$3NAUo{W?K0|bTT?0hjxA!g73+)D zjJZEDt8R!FHMV#|}<(5CJd-oAEHU;yf_X?JG0p zlJWKzMyNj2iE57i=dpQBXVL*5Hhr0)vDlc6uCZtWi?a;No+R}viokp^k+{ZHPLQaw zU3yAK+3LXpX-eVvm|j3k6iv<9ceGHnEJ^O|gmAgb&!QvSd~uvJRVU3!#8qqxa~!-z zF-AY-H|+gIN-8{{{=SYo-&HKKP~&vHKP*cv?_U^}+a6=SFPb{AXk$u7{aD}mIdB&j z0is>F#TMd5MoBftL6U@lvA@i~e^Rpy8yR*f8=Df85n*^8r$qi1C+;1V1#cGmJV#|C zMv21-3GZMu>yIa~MTwulP=N@hRGwCw5L~4%rC>C3n6=#&2fu)@Q(d|L+pf-q3MaJL z{^NEYqm_Mo2g@(802?)rceOkGJFabrbR==W&2rY!tas5^Y9gNVa*=%DeVyD)^!CV2 z_Sa*Y^@BWLEC4xhJ(5Ag@gaO z*BZ@9WMQu0E zn|FkJ4mFVVuxS)oq%$G@+^MoHcnpqzZ|azLss^bA_t-)Fv|-A$P(vX9M5uqLw8C@M91W`0q&_&;*wc-w71#*7wC!Q= z&)eWeo}ito&RT*Of)AIO=&K25HYy2p62_dQE_y=I7zI%~G#TQ3YVK0&+l(A*yQ1uE z7uGDshA}Qjj+Ra;%G@JZ-VdX+F8u6YK=&^?{D@xRVQ`m~5#@m0Au*8}jrbq>25^0pCm>YGA7OCzn8Bp2%^7f=a!E(-z zt-6g!eV_4z|GL1|joMg$2d8kofqD8)n7QJryeWMTOYZq*LgCmU>%nGWh9J=d!$zHZ zV+ry)u9vauT>x;sJdJmi;b8=0bZ3rk&N55HUeTJc)Y5Muv7Q&9hMd{ih(Z!ku(E49 zn_&MY@ocEMMIRhdTLxPVO=@Dmh!NM}rYQ493Ho82?Zi46*66Pu<|8Mth^OX=yLoe{ z*=Sng?BS>ZE2cIan1&hiD%YFi9Kayx*K?OT{bu@GfM2eU1)<_A$Y1^}e9Z8HOH1vX z*%G-)Epn}VP;~gp7VnZe+tDhI0uKNSSM@907VR)%bhyVx-*#<`%dI7E@*duaN>_M2 zJ+l62xe$XK>tb}JH*BPrL5sAuHtgWp`cL3vh9)4SV)o1!W z(nDf}z}-t%Qkkr|sY*+n4rd)@jCB=HE;Y(SKsiMNbllRmC9GO{ZOVr={0NH4fFe-m@=qd2W6v#yjwGbm!|Y zeydo%pV-2!WDaTeEv#t?B@tH$OLkcQ@`G+uX=qParYR|EYY)``D8ayYlWlv0 zEzt)ao>iIoj48B8JgHHqeA<0&N)gl}4=GC=NG|4>5|wE_@OyHvQWT$;-4mY@E2{9} zRH#dxxdqKV$@Y2G^%bH0U{$$%+ma+DZSG!eR-7v&R#x>>LKX{P{S~-3UES?x*hm&` z15~bD6-F5Uu;S`D-W`lltSUSpAi*|FBYPMTWJnQ~dwNtI$O?8Wq_G4wna{F$4;~$? zzv}WCgo1edq~|Pra%MK-dI+4qHr9s&z0Jc8lm5Q#Pg;^pYWOd#mF z5kf7YE1|xjTVWX)RBQ@Qo8cOB8=GmWrsE;6g|F5HL?GLV$2aBy&z$=69S2aHVhb#e z=okT?)p(}jMHg;Ad}D#MNpC$6?AgpYf+FRwly)c+hR!d{hiOsQYN%kc9uHejie8Lu zS(@{PQuy(_>YCW_GS*}}k)vNbEs(I*&+Z>MpDC~1TMzoOmn8Lzo+Kl$u{;m% z7pIQ9;|&_Re(zI@zG!YWHx!0%Ni6PmH7iu5#JJ}v;5F0>6N^AvC_=Zcfi z3R4Hwnp?u1=-{QIK<=bS${N;qTH*CD!(BXAzMH(qlU-kckV0fRX5e`p{k3HGz{$2Z zL!(v+^K|sjPgZ0bJS8W_e8eBMOU-E2M|i~!CRNNS#(-~?)P7isy;-D?y!;#DG(0M5 zj^%7jiS(q2gt>o^*4@m|&&AEJsHQ!MqyJV09WVTi{!cwW+S*Bb_?x z_dTCzV9(*oy}J+59rTc%F4$kXMLa&-w*R3!k?&96SIJh{vUGieuw5ql4Vwj0#Rj5Y z2snYYxDtT%)Q(5(u9U(XGv108BzA6xf+P~E3%HC0rcg31y3)5pASpg^j5pK*_f>G3!tRgLq(v{EvsT4jdSYB!cZjE2XTRzXri-?)-PP!EiB7Ujj0#oRZ zYP=!KeiFIo(EjzX?MM~UGO#ex_i?+%>8$qRKn)ujZ^_BadMq4_S2WC6KJRP2m0(Rz zB2g5dvmchtWw?f8vq(sU?dX;PRLhAgr6oU3;=iBH^nOGWqz(zpKet?MMsHRn-Xk}`Xi6DZL)|3BNB+H_Fsjh-2X=D|j(KqZ z>(RdiG2|3={~-txAsu69J2^u1k6RZ3-S72As{Je;B#TvN-i7(=!T`0|M@*WhtH+f^ zjUr$>FDs@;{A^vX++P>N)YoMwweE}DnfHE){(igjH+r)+N0GCi?9Bj|Ek5ZTq=ROZ z_F`jWhlvccZS%smWzca}jSptK6WVbdNo+U!tAUM(`YjK$4~fB8j(?W5qs|}LgEz=O zHca|=9aPwAN1IhGPH+7Gd+vWUC~+aZRiNI+nFL=OOCNyVANIN8PNsnW5QcgHL*SbmDA61JK=X^xi!$%}}t;~sn+jXUtlI3Jn zGo3PO`C|^e?hoAjgtq-;cJG*6&j8|`Eg`GmM8GrdB6ieA36P%T1{AsjwRZ&O3v!?=eSg$~5d2-4ZcR1Q zxzzndJ^G%=8{ji}Gg7TSDo8csB0ZghT`dza@pTlHl^o!)+>0uYFEeO*N+|eaUOd#b z(NQkK#MuQ9jFtqd?Jx98=i0RrWsr9jiz8N-t0IO#;4k?Vi0@*#W1B=d}iv zF3$@ft)ud>E3hI?Kh?}2-c6D5oKKB)#o;(v9%boM7eO0FJ%*iMfOP#F%mZtCx~)ko zui(v}pp%ZkxqdE?-2#q0H13aDV7BG^(ta+PaNa^@RtI`Le3il1=wbj(Sd!G|{5F1d z)5SBs9eWPXeK#^Y#1`T$I(qszmp9l>c4P3z?~hzzUtxr0;ahWfYZydqD$OvoAxxef z5^2P{cTaZdZEc;l_%st!=Fn6&z3(LPEtf*WV%)NZI-zEV3|4fNWm?}V3N6u;Dmzc(%apvs#7lYT9chU`)*G>A!K#Mz)RufZ(1Th#p}+ry)}T&|Q?E-- zD^y8S$DKs4p2;B*-0S*LLZ!);01Pv@{vEHr(sJ0y`7`azFLB9#2?S$Q{v#$=KfRQ| z$b0z2VtmWDY)r)9JLgRucr70jzhAw{+VViPnP}a6BQ5gtgae;pY%498#mVXh;C>5& z`c@t;a`OtStT;#zrEyeMTK?!U_@f(5X%^{*^8k52Xr2l7fv3gt>DA2CE8=B@fVnHj z?6XXB13I0}9_$}_Vth%C4uacR57%Txl}n{d;kFOg1KDhq=2-oW^A!x!m|in=#_VI< z3L8LnUvv->3PLMZhqrwvQ%y%*myz$5Epp`!9X%mPe=CtxCSD}{-7oOco+K&(zOdCn z<-`iN;LhwbiyhZd8Y$CCoB3B-7TnX!ndm3(mdr z*RIcbFMvYRhTvJwmaY+dG5zMUc3Ya8_4an&U_Gh>&Ij%PYNRbTliO{euJW5EW$@!6 z6CIy?{Ks60qstcnmT9J|vB~%B=L)K2OuKn-XC)N*bqkcD)6qEgm5+bTr8X=!;Gy<-%dSkBA()G`lP$bvhp|(CY zhIC31b=LlJleQ&eo2q=k@-Q|S!@SS{RG z(wQ?oVvm-+ZqVT%|5}TUJrtq-z0fbOjwYn>qq@U#&ou(pEv`+EMT9# z2e9o%CGsD;8JX0J>kDrAzl%71bOf&!f+uqM8lerQ(oqg45qo2ary+CAEUu=#t%bYv zS5Ok{5;*;{X5dFyvIpQBSW_WYXt>t>JQ zSsb1eMrxfi6(=0v>95WwX+@?Dr|gkr?lh~Zw1s}AeL^|t0-_G93+-UfI8!tbsdL^R zt?hX1jooO4V~eKdn0`?r6D}(oLhc&pFFSBut7d&olJ{O8Mt^#nOj*?_%ctdw^RIH` z=@`XUaQ9Qib|#8v2iCrFs{sd@oy<+dn;qTF)$y-5QzR#wE4l<`@e z9f6kYmSC$)zZ|?VM`-zQ)roUX=y+ibBy>gxr)OtU&BSwEVY@Y11hd!yCyid{HGl2E zg__3%ebu<;_~_^t*EJuQxFYf==J$S9MHTox(K<8HG_po(PZ76Nt9pFSB|+eh!CMga zwUX4yllq{%;)bmS8_2--9ZPix)Dkt3$9e|x5n};3H!7V1?sIuq3TGp^n-L))@(E*xm*s` zx(AQ%>UWeocm0g9O&y`K!@6lsm5gz+=yb6JOWZCBbaZs1l2_qe2a~F) zf^nFi9LiVXYTqvbg@TR2ZTmZ3NW#pHY#7f`P%(dy&~)eaT+!5ayy+jf8($Zi_heeqU<(_ zzmn8059An92oihXs%@nwI*D1=wfp=o7%f|gbVhN8ldsn!m%d`U3+Dou&M}|s?uFxi zmWQ217Wz++O?xa5O6^SXy#N?MnNql${-gE0G%_5PjtP+mt3THL3gRi>Ts=EA-c>ge zV^w9QYAx5q6Y*Tqr!qguRFtK?H%GLvPr#lyHstTcQjz^M6=)p*I^c8^c(qC7Yl7D> zcbWsqRBV>@rB3DU(N7Vwi%nvJl8n`Q6Pp!x`1kI4tqh1{?4MY6G&ez7_{Tn46HpiPWspd8XO`Yn$Wg_;#B$D&> z3CPyXoX<2Pw0lpQrsM*P{2AKXjryu>9orm^vhx*oqC81M;rVQBaSFP_Bo6IPtk^O$ z_EB#H$UCVi&ha{|!F{NshJLLB`&&J}RYC>NUnT0gnsrwV_vtp1p$$PBdY(5UK_&X1 ztN!_c1ss`$Wf4LhA8J z<^|wZ+m)tK_8+Ofkhta{r#lSu_HrLy@2@`9`2xU^fK{-Cm0nw(_}5GZi+3Ez+@~ym zNfW*+2z(B{t&P5_7Hqq5o!xyae|l=tIIAw}{@znZtEfzdJrji*U}VE+!&aIc*Xz!7 zTSMuYMs3&Bb5s9S5oC^zn%PFFO@d4dtAP52(|`V0Fa+x8k#A}s`3I9TV|) zmJsu&K496!bw`7`XX6BMt<%8BlG=ZnPax$WjKwstMwm3p0hd>{$TK+anIOk-e!u03 zo*?PlZ&!k4=1~)pV*<`TkK6uq^;wS}tdj^?Qgm7NRaht_ktlOQ(H^lpjJg!wiuHec ziV0^$ep<=G3?8}mKPFm_Z2juJE*Z6%yg(f$HYlCgmNnCIXqslob4J(F^O~?KnW~^< zd}jDvXDXcRCxg9$LB2Bz+ZF37%Yl(a;)ty4rW19`dlX{mtKV-}h6Ulk*=n}FrbV8~ zEy=d_Xgx<+PToU*deTsaLWn?AUpGnr&is;&+^=2fLU(Y6jLaLV^VwZdE7kR=k=FVL zJy558(!-DV4Ux7eNGpls5y#c{+Ou;`K|s$|vIG-%?z>VL8A{`+yy(X_Kb&LhK74O( zp52Yx6cJ%Q@8CwBIc~mG zHj;y!tt3ga|L&MeorVn!Bg7aB$7CoMx7-z-6@M!dqzT;kF*G1`n7+{|*3dHN7{gmz zp`6Fpzk1l~P{_8fMDS|~z33=^Rvu=sUC>^ybIykhrgoV}nU@_PtJ8$fa z!i0cq5|JR-y=x~&cmK+srhpp?1yYfZVa865YLFBpW@b7+*F3TEno*9p=`EXBTp3~g z$aq|&=?-hJG_(hLnZYLYZ-2+$V;7sOfYQjVtdK`V?MbcPbrgM_*d&inCOHz>gorCW zvdDY_t$ZNQ8Eky)PK4z)Q_pgPfIA{Th1Zidd-QkpO;+in+P$r|%Q^Wlr^V?o(WT_{ z=m439D;qn`v7*bQ>eEaETZ_~~!M?ZYE3xLwn!_J0&Gqv2{ZcT-hJlCuR!2;%8qKr4 z;No3^rUBx8c$}()#P~GO?GtMBOnFw;z9Xq|M=(0l;>a~i4n?m-PntI|W z)3Sy2C@0FFReujcYV~{(_8R4S*D6Ej^-bxkAJr<;uZYxiJqv=;0>_`V4OY7M5x2g> z)_(J4mADnH&>f>%&zql`(_hg3e0WnkIr`BHZg&0XY9gBY5YzSdhn-X1{%x`h(bS-@ z1w3wSuPOV%p6mzfKZRYVJ5iXV&^P$=f9w<?+Wu5OUz=J;Cm$%oUI2>O5>@b^|2TD4R;(%q*SaKkoD5{^DEj{#jX0J@lNkIZkZqHKvy{&E-H^b3odj!Mr%`+M%CN#(J)DZIA!fk>E+-0h=)0_sqsC2_EY0@&>vi#0%mfJSeou zG+Q2;_#|7~$GSOmZEvzR`79q=i`M;TL-NwC_k%{lgCV}&K4c#(3~N0KS?>S&mhd+^ zOZ(p!%zB3E`~Oa9W+5wX$xZw}heEqm19)QR{UAgwpe#OY@ek{oaSE~qkC_?O~qCug02{Ks)-gV&DhVk4v0+NK-{0!|u< zB?l-hty&NOO7v|Zc31O{pi#jmA|B~Ax`QthGGT>XditW$)o~)J$^$9j%y)=cJ qXR!N7qtGg+Td#jWg=M6a2sU*?p*FW^lSosx!{r5g-dOd^^8Wxg>RPJ+ literal 0 HcmV?d00001 diff --git a/examples/Demo/Shared/wwwroot/images/new-project-dialog.png b/examples/Demo/Shared/wwwroot/images/new-project-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..3a9f0012f64e5ea0e516a21b10089fd6d401e1f6 GIT binary patch literal 27936 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 literal 0 HcmV?d00001 From dbc81d5c1f4559285284726d0008c44a6ce3bbc3 Mon Sep 17 00:00:00 2001 From: Vincent Baaij Date: Thu, 23 Jan 2025 17:39:15 +0100 Subject: [PATCH 2/2] Add some more news links --- examples/Demo/Shared/Pages/Home/Home.razor | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/Demo/Shared/Pages/Home/Home.razor b/examples/Demo/Shared/Pages/Home/Home.razor index 6f9367f348..6d28ae2cfd 100644 --- a/examples/Demo/Shared/Pages/Home/Home.razor +++ b/examples/Demo/Shared/Pages/Home/Home.razor @@ -45,6 +45,9 @@
  • v4.11.3 released
  • v4.11.2 released
  • v4.11.1 released
  • +
  • v4.11.0 released
  • +
  • Our .NET Cont 2024 session on YouTube
  • +