├── .gitattributes ├── .gitignore ├── BlazorRenderModes.Client ├── BlazorRenderModes.Client.csproj ├── Components │ ├── MovieCard.razor │ ├── MovieModal.razor │ ├── MovieModalJS.razor │ └── Pages │ │ ├── MovieListAuto.razor │ │ └── MovieListWASM.razor ├── Models │ ├── MovieDetails.cs │ ├── PopularMovie.cs │ └── PopularMovieResponse.cs ├── Program.cs └── _Imports.razor ├── BlazorRenderModes.sln ├── BlazorRenderModes ├── BlazorRenderModes.csproj ├── Components │ ├── App.razor │ ├── Layout │ │ ├── MainLayout.razor │ │ └── NavMenu.razor │ ├── Pages │ │ ├── Index.razor │ │ ├── MovieListSSR.razor │ │ ├── MovieListSignalR.razor │ │ └── MovieListStreamRendering.razor │ ├── Routes.razor │ └── _Imports.razor ├── Program.cs ├── Properties │ └── launchSettings.json ├── Server.sln ├── appsettings.Development.json ├── appsettings.json └── wwwroot │ ├── css │ ├── app.css │ ├── bootstrap-icons │ │ ├── bootstrap-icons.css │ │ ├── bootstrap-icons.json │ │ ├── bootstrap-icons.min.css │ │ ├── bootstrap-icons.scss │ │ └── fonts │ │ │ ├── bootstrap-icons.woff │ │ │ └── bootstrap-icons.woff2 │ └── bootstrap │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ ├── favicon.png │ ├── fonts │ ├── bootstrap-icons.json │ ├── bootstrap-icons.min.css │ └── fonts │ │ ├── bootstrap-icons.woff │ │ └── bootstrap-icons.woff2 │ ├── icon-192.png │ ├── img │ ├── BlazorMovieBlk.png │ ├── BlazorMovieOrg.png │ ├── BlazorMovieWht.png │ ├── PosterPlaceHolder.png │ └── THEMOVEDBLogo.svg │ └── js │ ├── bootstrap.bundle.min.js │ ├── bootstrap.bundle.min.js.map │ └── site.js └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd -------------------------------------------------------------------------------- /BlazorRenderModes.Client/BlazorRenderModes.Client.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | enable 6 | enable 7 | true 8 | Default 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Components/MovieCard.razor: -------------------------------------------------------------------------------- 1 | @using BlazorRenderModes.Client.Models; 2 | 3 | @if (PopularMovie is not null) 4 | { 5 |
6 | Movie Poster 7 |
8 |
@PopularMovie.Title
9 |

10 | @DateTime.Parse(PopularMovie.ReleaseDate).ToString("MMM dd yyy") 11 |

12 |
13 | 29 |
30 | } 31 | else 32 | { 33 |
34 | Movie Poster 35 |
36 |
37 | 38 |
39 |

40 | 41 |

42 |
43 | 48 |
49 | } 50 | 51 | @code { 52 | [Parameter] 53 | public PopularMovie? PopularMovie { get; set; } 54 | 55 | [Parameter] 56 | public EventCallback OnBtnClick { get; set; } 57 | 58 | [Parameter] 59 | public string? ModalId { get; set; } 60 | 61 | [Parameter] 62 | public bool UseJSForBtn { get; set; } 63 | } 64 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Components/MovieModal.razor: -------------------------------------------------------------------------------- 1 | @using BlazorRenderModes.Client.Models 2 | 3 | 88 | 89 | @code { 90 | 91 | [Parameter] 92 | public MovieDetails? MovieDetails { get; set; } 93 | } 94 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Components/MovieModalJS.razor: -------------------------------------------------------------------------------- 1 |  62 | 63 | @code { 64 | 65 | } 66 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Components/Pages/MovieListAuto.razor: -------------------------------------------------------------------------------- 1 | @using BlazorRenderModes.Client.Models; 2 | @page "/movies/auto" 3 | @inject HttpClient Http 4 | @rendermode RenderMode.InteractiveAuto 5 | 6 |

Popular Movies

7 |
8 | @if (MovieResponse is null) 9 | { 10 |
11 | 12 | @for (int i = 1; i <= 8; i++) 13 | { 14 |
15 | 16 |
17 | } 18 | 19 |
20 | } 21 | else 22 | { 23 |
24 | 25 | @foreach (var movie in MovieResponse.Results.Take(8)) 26 | { 27 |
28 | 29 |
30 | } 31 | 32 |
33 | 34 | 35 | } 36 |
37 | 38 | @code { 39 | private PopularMovieResponse? MovieResponse { get; set; } 40 | 41 | private MovieDetails? MovieDetails { get; set; } 42 | 43 | protected override async Task OnInitializedAsync() 44 | { 45 | //await Task.Delay(3000); 46 | MovieResponse = await Http.GetFromJsonAsync("movie/popular"); 47 | } 48 | 49 | protected override void OnAfterRender(bool firstRender) 50 | { 51 | if (firstRender) 52 | { 53 | Console.WriteLine("Hello from Auto component"); 54 | Console.WriteLine("If this is in your browser console, this is rendered in WebAssembly"); 55 | Console.WriteLine("If this is in your server's console, this is rendered via SignalR"); 56 | } 57 | } 58 | 59 | private async Task GetMovieDetails(int id) 60 | { 61 | MovieDetails = null; 62 | StateHasChanged(); 63 | 64 | //await Task.Delay(1000); 65 | 66 | MovieDetails = await Http.GetFromJsonAsync($"movie/{id}"); 67 | StateHasChanged(); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Components/Pages/MovieListWASM.razor: -------------------------------------------------------------------------------- 1 | @using BlazorRenderModes.Client.Models; 2 | @page "/movies/wasm" 3 | @inject HttpClient Http 4 | @rendermode RenderMode.InteractiveWebAssembly 5 | 6 |

Popular Movies

7 |
8 | @if (MovieResponse is null) 9 | { 10 |
11 | 12 | @for (int i = 1; i <= 8; i++) 13 | { 14 |
15 | 16 |
17 | } 18 | 19 |
20 | } 21 | else 22 | { 23 | 24 |
25 | 26 | @foreach (var movie in MovieResponse.Results.Take(8)) 27 | { 28 |
29 | 30 |
31 | } 32 | 33 |
34 | 35 | 36 | } 37 |
38 | 39 | @code { 40 | private PopularMovieResponse? MovieResponse { get; set; } 41 | 42 | private MovieDetails? MovieDetails { get; set; } 43 | 44 | protected override async Task OnInitializedAsync() 45 | { 46 | //await Task.Delay(3000); 47 | MovieResponse = await Http.GetFromJsonAsync("movie/popular"); 48 | } 49 | 50 | protected override void OnAfterRender(bool firstRender) 51 | { 52 | if (firstRender) 53 | { 54 | Console.WriteLine("Hello from WASM component"); 55 | } 56 | } 57 | 58 | private async Task GetMovieDetails(int id) 59 | { 60 | MovieDetails = null; 61 | StateHasChanged(); 62 | 63 | //await Task.Delay(1000); 64 | 65 | MovieDetails = await Http.GetFromJsonAsync($"movie/{id}"); 66 | StateHasChanged(); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Models/MovieDetails.cs: -------------------------------------------------------------------------------- 1 | using System.Text.Json.Serialization; 2 | 3 | namespace BlazorRenderModes.Client.Models 4 | { 5 | public class MovieDetails 6 | { 7 | 8 | [JsonPropertyName("adult")] 9 | public bool Adult { get; set; } 10 | 11 | [JsonPropertyName("backdrop_path")] 12 | public string? BackdropPath { get; set; } 13 | 14 | [JsonPropertyName("budget")] 15 | public int Budget { get; set; } 16 | 17 | [JsonPropertyName("genres")] 18 | public Genre[] Genres { get; set; } = Array.Empty(); 19 | 20 | [JsonPropertyName("homepage")] 21 | public string? Homepage { get; set; } 22 | 23 | [JsonPropertyName("id")] 24 | public int Id { get; set; } 25 | 26 | [JsonPropertyName("imdb_id")] 27 | public string? ImdbId { get; set; } 28 | 29 | [JsonPropertyName("original_language")] 30 | public string? OriginalLanguage { get; set; } 31 | 32 | [JsonPropertyName("original_title")] 33 | public string? OriginalTitle { get; set; } 34 | 35 | [JsonPropertyName("overview")] 36 | public string? Overview { get; set; } 37 | 38 | [JsonPropertyName("popularity")] 39 | public float Popularity { get; set; } 40 | 41 | [JsonPropertyName("poster_path")] 42 | public string? PosterPath { get; set; } 43 | 44 | [JsonPropertyName("production_companies")] 45 | public ProductionCompanies[] ProductionCompanies { get; set; } = Array.Empty(); 46 | 47 | [JsonPropertyName("production_countries")] 48 | public ProductionCountries[] ProductionCountries { get; set; } = Array.Empty(); 49 | 50 | [JsonPropertyName("release_date")] 51 | public string? ReleaseDate { get; set; } 52 | 53 | [JsonPropertyName("revenue")] 54 | public int Revenue { get; set; } 55 | 56 | [JsonPropertyName("runtime")] 57 | public int Runtime { get; set; } 58 | 59 | [JsonPropertyName("spoken_languages")] 60 | public SpokenLanguages[] SpokenLanguages { get; set; } = Array.Empty(); 61 | 62 | [JsonPropertyName("status")] 63 | public string? Status { get; set; } 64 | 65 | [JsonPropertyName("tagline")] 66 | public string? Tagline { get; set; } 67 | 68 | [JsonPropertyName("title")] 69 | public string? Title { get; set; } 70 | 71 | [JsonPropertyName("video")] 72 | public bool Video { get; set; } 73 | 74 | [JsonPropertyName("vote_average")] 75 | public float VoteAverage { get; set; } 76 | 77 | [JsonPropertyName("vote_count")] 78 | public int VoteCount { get; set; } 79 | } 80 | 81 | public class Genre 82 | { 83 | [JsonPropertyName("id")] 84 | public int Id { get; set; } 85 | 86 | [JsonPropertyName("name")] 87 | public string? Name { get; set; } 88 | } 89 | 90 | public class ProductionCompanies 91 | { 92 | [JsonPropertyName("id")] 93 | public int Id { get; set; } 94 | 95 | [JsonPropertyName("logo_path")] 96 | public string? LogoPath { get; set; } 97 | 98 | [JsonPropertyName("name")] 99 | public string? Name { get; set; } 100 | 101 | [JsonPropertyName("origin_country")] 102 | public string? OriginCountry { get; set; } 103 | } 104 | 105 | public class ProductionCountries 106 | { 107 | [JsonPropertyName("iso_3166_1")] 108 | public string? LanguageCode { get; set; } 109 | 110 | [JsonPropertyName("name")] 111 | public string? Name { get; set; } 112 | } 113 | 114 | public class SpokenLanguages 115 | { 116 | [JsonPropertyName("english_name")] 117 | public string? EnglishName { get; set; } 118 | 119 | [JsonPropertyName("iso_639_1")] 120 | public string? LanguageCode { get; set; } 121 | 122 | [JsonPropertyName("name")] 123 | public string? Name { get; set; } 124 | } 125 | 126 | } 127 | 128 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Models/PopularMovie.cs: -------------------------------------------------------------------------------- 1 | using System.Text.Json.Serialization; 2 | 3 | namespace BlazorRenderModes.Client.Models 4 | { 5 | public class PopularMovie 6 | { 7 | [JsonPropertyName("adult")] 8 | public bool Adult { get; set; } 9 | 10 | [JsonPropertyName("backdrop_path")] 11 | public string? BackdropPath { get; set; } 12 | 13 | [JsonPropertyName("genre_ids")] 14 | public int[] GenreIds { get; set; } 15 | 16 | [JsonPropertyName("id")] 17 | public int Id { get; set; } 18 | 19 | [JsonPropertyName("original_language")] 20 | public string OriginalLanguage { get; set; } 21 | 22 | [JsonPropertyName("original_title")] 23 | public string OriginalTitle { get; set; } 24 | 25 | [JsonPropertyName("overview")] 26 | public string Overview { get; set; } 27 | 28 | [JsonPropertyName("popularity")] 29 | public float Popularity { get; set; } 30 | 31 | [JsonPropertyName("poster_path")] 32 | public string PosterPath { get; set; } 33 | 34 | [JsonPropertyName("release_date")] 35 | public string ReleaseDate { get; set; } 36 | 37 | [JsonPropertyName("title")] 38 | public string Title { get; set; } 39 | 40 | [JsonPropertyName("video")] 41 | public bool Video { get; set; } 42 | 43 | [JsonPropertyName("vote_average")] 44 | public float VoteAverage { get; set; } 45 | 46 | [JsonPropertyName("vote_count")] 47 | public int VoteCount { get; set; } 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Models/PopularMovieResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Text.Json.Serialization; 2 | 3 | namespace BlazorRenderModes.Client.Models 4 | { 5 | public class PopularMovieResponse 6 | { 7 | [JsonPropertyName("page")] 8 | public int Page { get; set; } 9 | 10 | [JsonPropertyName("results")] 11 | public List Results { get; set; } = new(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components.WebAssembly.Hosting; 2 | 3 | var builder = WebAssemblyHostBuilder.CreateDefault(args); 4 | 5 | builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); 6 | 7 | await builder.Build().RunAsync(); 8 | -------------------------------------------------------------------------------- /BlazorRenderModes.Client/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using System.Net.Http 2 | @using System.Net.Http.Json 3 | @using Microsoft.AspNetCore.Components.Forms 4 | @using Microsoft.AspNetCore.Components.Routing 5 | @using Microsoft.AspNetCore.Components.Web 6 | @using Microsoft.AspNetCore.Components.Web.Virtualization 7 | @using Microsoft.AspNetCore.Components.WebAssembly.Http 8 | @using Microsoft.JSInterop 9 | @using BlazorRenderModes.Client -------------------------------------------------------------------------------- /BlazorRenderModes.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.8.34004.107 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorRenderModes", "BlazorRenderModes\BlazorRenderModes.csproj", "{EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorRenderModes.Client", "BlazorRenderModes.Client\BlazorRenderModes.Client.csproj", "{F4669A5E-9633-46A7-92A5-18FEE3D887A2}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {95FF5B54-FF7B-4EB0-BAEF-3197D730A48A} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /BlazorRenderModes/BlazorRenderModes.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0 5 | enable 6 | enable 7 | 2cdef583-bade-4f2d-a295-51760eb701bf 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/App.razor: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/Layout/MainLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 | 3 |
4 | 5 |
6 | 7 |
8 | @Body 9 |
10 | 11 |
12 |
13 |
14 |
15 | 16 | © 2023 Coder Foundry 17 |
18 |
19 |
20 |
This product uses the TMDB API but is not endorsed or certified by TMDB.
21 |
22 |
23 | 24 | 25 | 26 |
27 |
28 |
29 |
30 | 31 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/Layout/NavMenu.razor: -------------------------------------------------------------------------------- 1 |  35 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/Pages/Index.razor: -------------------------------------------------------------------------------- 1 | @page "/" 2 | 3 | Home 4 | 5 |
6 |

Blazor Render Modes

7 |
8 |

Server Side Rendered (SSR)

9 |
10 |

Movies (SSR)

11 |
12 | (No rendering attribute) 13 |
14 |

15 | This page is fully server-side rendered and serves static HTML. 16 | When navigating to /movies/ssr, before you see any page response the OnInitializedAsync method has to complete. 17 |

18 |

19 | SSR render pages return the entire HTML and CSS to the browser. It behaves and operates like an normal webapge. 20 | To see changes you must hit refresh it does not keep any connection the server. 21 |

22 |

23 | The "More Info" button will fetch the details of that movie and display it in a modal. 24 | This happens as the result of an onclick handler calling a JavaScript function to manipulate the DOM on the modal. 25 | JavaScript is needed for any client side interaction when using SSR. 26 |

27 | 28 |
29 |
30 |

Movies (Stream)

31 |
32 | @("@attribute [StreamRendering]") 33 |
34 |

35 | This page is server-side rendered using streaming rendering. This means the server 36 | will send you some HTML immediately and leave the HTTP response stream open until 37 | any async operations complete, then send you updated HTML. The updated HTML will be patched 38 | into the DOM by Blazor, rather than reloading the page. 39 |

40 |

41 | In this case, you'll see placeholder content while the server fetches movies 42 | from TMDB and sends an update with the completed page. To see this happen more 43 | clearly, uncomment the delay in MovieListStreamRendering.razor. 44 |

45 |

46 | The "More Info" button is still achieved using JavaScript exactly like the SSR mode. 47 | Stream Rendering is an enhancement of plain SSR, so any interactive elements of the 48 | page after it has reached the browser must still be handled with JavaScript. 49 |

50 | 51 |
52 |
53 |
Pros:
54 |
    55 |
  • Fewer server resources required
  • 56 |
  • 57 | Page renders quickly on the client, especially with the help of Blazor’s “Enhanced Navigation” 58 | Static HTML is a benefit for SEO 59 |
  • 60 |
  • 61 | Streaming Rendering makes it easy to render placeholder content while long-running async tasks complete on the server 62 |
  • 63 |
64 |
Cons:
65 |
    66 |
  • JavaScript is required for client-side interactivity after the page is rendered
  • 67 |
  • No state is held in components
  • 68 |
  • Must use form posting, JavaScript, or page navigation to interact with the server
  • 69 |
70 |
Common Use Cases:
71 |
    72 |
  • Landing pages
  • 73 |
  • Contact page
  • 74 |
  • Dashboards
  • 75 |
  • Content that is generally read-only
  • 76 |
77 |
78 |
79 |
80 |

Blazor Server with SignalR

81 |
82 |

Movies (SignalR)

83 |
84 | @("@rendermode RenderMode.InteractiveServer") 85 |
86 |

87 | This page uses interactive Blazor components using the Interactive Server Render Mode. This means the page 88 | and its DOM is rendered on the server, but the server keeps track of the DOM and processes events 89 | sent from the browser and dynamically updates the page without needing any sort of page refresh. 90 | Real-time updates are streamed to the browser via the SignalR connection, and user interactions are 91 | streamed to the server via the same connection. 92 |

93 |

94 | In this case, the "More Info" button will fetch the details of that movie and display it in a modal. 95 | This happens as the result of an EventCallback parameter passed to the MovieCard component using an 96 | onclick listener, something usually only possible via JavaScript. No JavaScript is needed to display the modal. 97 | Because this code is running entirely on the server, the request to TMDB's API is also made on the server, 98 | keeping the API key secret from the client. The client also cannot see or modify the code that is executed, 99 | since it is completely on the server. 100 |

101 |

102 | Note: There is a delay when navigating to this page as the SignalR connection is established. If the connection 103 | is lost or times out, the page will become unresponsive. Typically an error page is displayed. This behavior can be 104 | overridden with JavaScript. JavaScript can be used to refresh the connection if the connection is 105 | lost to keep the page alive or routed to another endpoint like logout or an index. 106 |

107 |
108 |
109 |
Pros:
110 |
    111 |
  • The full power of interactive Blazor components, e.g. event handling, component state, callbacks, JS Interop, etc.
  • 112 |
  • Secure access to server resources such as services or database queries, since the DOM is managed on the server and all code runs on the server. This means that data can be securely accessed and managed on the server through these components without creating an API endpoint
  • 113 |
  • Since state is stored in-memory on the server, form posting and HTTP requests are not required in these components. Any user input is already on the server and can be passed directly to your service layer (note: file uploads are an exception here)
  • 114 |
  • Rapid development; developers can create full pages and rich interactions in C# with little to no context switching into JavaScript
  • 115 |
116 |
Cons:
117 |
    118 |
  • Higher resource usage on the server, as the page state and code execution are maintained and rendered on the server for every client
  • 119 |
  • Clients must maintain a web socket connection to the server to use the page. If the connection is lost, the page must be refreshed and page state may be lost
  • 120 |
  • Slow/high latency connections to the server can cause latency in user interactions
  • 121 |
122 |
Common Use Cases:
123 |
    124 |
  • Secure data access
  • 125 |
  • Rendering/streaming large datasets from the database
  • 126 |
  • Thin-client applications
  • 127 |
  • Rapid Prototyping, B2B, or internal business applications
  • 128 |
129 |
130 |
131 |
132 |

Blazor WASM

133 |
134 |

Movies (WASM)

135 |
136 | @("@rendermode RenderMode.InteractiveWebAssembly") 137 |
138 |

139 | This page uses interactive Blazor components in Web Assembly. This page will be pre-rendered on the 140 | server, but it runs interactively on the client in WASM. 141 |

142 |

143 | In this case, the "More Info" button will fetch the details of that movie and display it in a modal, 144 | just like the SignalR component. However, since this is running on the client, there is a minimal API 145 | mapped in the server's Program.cs. The WASM component sends a request to our server, which in turn uses 146 | the server's API key to send a request to TMDB's API. 147 |

148 |

149 | The WASM component is also able to use JavaScript to manipulate the DOM, just like the SSR and SignalR, 150 | using JSInterop. The WASM component's code is sent to the client, so a malicious user could potentially 151 | see and modify the code it contains. 152 |

153 |
154 |
155 |

Movies (Auto)

156 |
157 | @("@rendermode RenderMode.InteractiveAuto") 158 |
159 |

160 | This is the same component used in the WASM page, but now the framework decides where it runs. Sometimes 161 | via SignalR, other times in WASM. Blazor attempts to render the component in whatever mode is fastest. 162 | In testing, the first time the page loads it is typically in SignalR as the WASM code and runtime are 163 | downloaded, and a reload will typically switch over to WASM execution. 164 |

165 |

166 | The component has a Console.WriteLine() that runs after it renders. If it's running in WASM, 167 | you'll see the message logged in the JavaScript console. If it's running via SignalR, the message will be 168 | logged in the server's terminal output. 169 |

170 |

171 | Because this component may execute in WASM, it must be written with the same considerations as a 172 | WASM-only component. This means that any code or resources in the component may be available to the client, 173 |

174 |
175 |
176 |
Pros:
177 |
    178 |
  • Highly efficient execution in WebAssembly and immediate UI response, since execution is entirely on the client
  • 179 |
  • Decreased resource usage on the server, since the component(s) and runtime are downloaded to the client and rendered by the client. After serving the app, the only load on the server is responding to API requests from the client app
  • 180 |
  • Auto Mode means that the user can interact with your Blazor components via whatever method is fastest
  • 181 |
  • WASM can support completely offline interaction as long as the component doesn’t need to request data from the server
  • 182 |
183 |
Cons:
184 |
    185 |
  • Communication with the server must take place via HTTP requests, since components are executing on the client. This means a secure API layer is required to send/retrieve data from the server
  • 186 |
  • All code in WASM/Auto components are downloaded to the client, which means any code or resources in WASM components are available to end users. Secrets must be maintained on the server separate from the component
  • 187 |
  • Pure WASM components must have their code downloaded along with the .NET WASM runtime before they’re rendered, which can lead to slower page loads. 188 | Rendering in Auto Mode circumvents this by rendering the component immediately via SignalR until the WASM runtime is downloaded and ready to execute, then seamlessly transitions to client-side rendering in WASM. If the runtime is already available, components will immediately render in WASM
  • 189 |
190 |
Common Use Cases:
191 |
    192 |
  • Large scale consumer web applications
  • 193 |
  • Applications with offline support or PWAs
  • 194 |
  • Front ends for existing Web APIs
  • 195 |
  • Computationally expensive applications
  • 196 |
197 |
198 |
199 |
200 | 201 | 202 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/Pages/MovieListSSR.razor: -------------------------------------------------------------------------------- 1 | @using BlazorRenderModes.Client.Components 2 | @using BlazorRenderModes.Client.Models 3 | @page "/movies/ssr" 4 | 5 | @inject HttpClient Http 6 | 7 |

Popular Movies

8 |
9 | @if (MovieResponse is null) 10 | { 11 |
12 |

Loading...

13 |
14 | Loading... 15 |
16 |
17 | } 18 | else 19 | { 20 | 21 |
22 | 23 | @foreach (var movie in MovieResponse.Results.Take(8)) 24 | { 25 |
26 | 27 |
28 | } 29 | 30 |
31 | 32 | 33 | } 34 | 35 |
36 | 37 | @code { 38 | private PopularMovieResponse? MovieResponse { get; set; } 39 | 40 | protected override async Task OnInitializedAsync() 41 | { 42 | //await Task.Delay(3000); 43 | MovieResponse = await Http.GetFromJsonAsync("movie/popular"); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/Pages/MovieListSignalR.razor: -------------------------------------------------------------------------------- 1 | @using BlazorRenderModes.Client.Components 2 | @using BlazorRenderModes.Client.Models; 3 | @page "/movies/signalr" 4 | @rendermode RenderMode.InteractiveServer 5 | 6 | @inject HttpClient Http 7 | 8 |

Popular Movies

9 |
10 | @if (MovieResponse is null) 11 | { 12 |
13 | 14 | @for (int i = 1; i <= 8; i++) 15 | { 16 |
17 | 18 |
19 | } 20 | 21 |
22 | } 23 | else 24 | { 25 | 26 |
27 | 28 | @foreach (var movie in MovieResponse.Results.Take(8)) 29 | { 30 |
31 | 32 |
33 | } 34 | 35 |
36 | 37 | 38 | } 39 |
40 | @code { 41 | private PopularMovieResponse? MovieResponse { get; set; } 42 | 43 | private MovieDetails? MovieDetails { get; set; } 44 | 45 | protected override async Task OnInitializedAsync() 46 | { 47 | //await Task.Delay(3000); 48 | MovieResponse = await Http.GetFromJsonAsync("movie/popular"); 49 | } 50 | 51 | protected override void OnAfterRender(bool firstRender) 52 | { 53 | if (firstRender) 54 | { 55 | // this should appear in your server's console 56 | Console.WriteLine("Hello from Server component"); 57 | } 58 | } 59 | 60 | 61 | private async Task GetMovieDetails(int id) 62 | { 63 | MovieDetails = null; 64 | StateHasChanged(); 65 | 66 | //await Task.Delay(2000); 67 | 68 | MovieDetails = await Http.GetFromJsonAsync($"movie/{id}"); 69 | StateHasChanged(); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/Pages/MovieListStreamRendering.razor: -------------------------------------------------------------------------------- 1 | @using BlazorRenderModes.Client.Components 2 | @using BlazorRenderModes.Client.Models 3 | @page "/movies/stream" 4 | @attribute [StreamRendering] 5 | @inject HttpClient Http 6 | 7 |

Popular Movies

8 |
9 | @if (MovieResponse is null) 10 | { 11 | 12 |
13 | 14 | @for (int i = 1; i <= 8; i++) 15 | { 16 |
17 | 18 |
19 | } 20 | 21 |
22 | } 23 | else 24 | { 25 | 26 |
27 | 28 | @foreach (var movie in MovieResponse.Results.Take(8)) 29 | { 30 |
31 | 32 |
33 | } 34 | 35 |
36 | 37 | } 38 |
39 | 40 | @code { 41 | private PopularMovieResponse? MovieResponse { get; set; } 42 | 43 | protected override async Task OnInitializedAsync() 44 | { 45 | //await Task.Delay(3000); 46 | MovieResponse = await Http.GetFromJsonAsync("movie/popular"); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/Routes.razor: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BlazorRenderModes/Components/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using System.Net.Http 2 | @using System.Net.Http.Json 3 | @using Microsoft.AspNetCore.Components.Forms 4 | @using Microsoft.AspNetCore.Components.Routing 5 | @using Microsoft.AspNetCore.Components.Web 6 | @using Microsoft.AspNetCore.Components.Web.Virtualization 7 | @using Microsoft.JSInterop 8 | @using BlazorRenderModes.Components 9 | -------------------------------------------------------------------------------- /BlazorRenderModes/Program.cs: -------------------------------------------------------------------------------- 1 | using BlazorRenderModes.Client.Models; 2 | using Microsoft.AspNetCore.Mvc; 3 | using BlazorRenderModes.Client.Components.Pages; 4 | using BlazorRenderModes.Components; 5 | 6 | var builder = WebApplication.CreateBuilder(args); 7 | 8 | // Add services to the container. 9 | builder.Services.AddRazorComponents() 10 | .AddInteractiveServerComponents() 11 | .AddInteractiveWebAssemblyComponents(); 12 | 13 | // your TMDB Read Access key must be in the server's secrets.json, e.g.: 14 | // "TMDBKey": "your-API-key-here" 15 | string? tmdbKey = builder.Configuration["TMDBKey"]; 16 | 17 | builder.Services.AddScoped(sp => { 18 | var client = new HttpClient(); 19 | client.BaseAddress = new("https://api.themoviedb.org/3/"); 20 | client.DefaultRequestHeaders.Authorization = new("Bearer", tmdbKey); 21 | return client; 22 | }); 23 | 24 | var app = builder.Build(); 25 | 26 | // Configure the HTTP request pipeline. 27 | if (app.Environment.IsDevelopment()) 28 | { 29 | app.UseWebAssemblyDebugging(); 30 | } 31 | else 32 | { 33 | app.UseExceptionHandler("/Error", createScopeForErrors: true); 34 | // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. 35 | app.UseHsts(); 36 | } 37 | 38 | app.UseHttpsRedirection(); 39 | 40 | app.UseStaticFiles(); 41 | app.UseAntiforgery(); 42 | 43 | app.MapRazorComponents() 44 | .AddInteractiveServerRenderMode() 45 | .AddInteractiveWebAssemblyRenderMode() 46 | .AddAdditionalAssemblies(typeof(BlazorRenderModes.Client._Imports).Assembly); 47 | 48 | 49 | // Minimal API endpoints to proxy requests to TMDB for our client pages 50 | // this way, our TMDB API key is never visible to the client 51 | 52 | app.MapGet("/movie/popular", async ([FromServices] HttpClient http) => 53 | { 54 | PopularMovieResponse? response = await http.GetFromJsonAsync("movie/popular"); 55 | 56 | return response is not null ? Results.Ok(response) : Results.Problem(); 57 | }); 58 | 59 | app.MapGet("/movie/{id}", async ([FromServices] HttpClient http, int? id) => 60 | { 61 | if (id.HasValue) 62 | { 63 | MovieDetails? response = await http.GetFromJsonAsync($"movie/{id.Value}"); 64 | 65 | return Results.Ok(response); 66 | } 67 | 68 | return Results.BadRequest(); 69 | }); 70 | 71 | app.Run(); 72 | -------------------------------------------------------------------------------- /BlazorRenderModes/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:6174", 8 | "sslPort": 44328 9 | } 10 | }, 11 | "profiles": { 12 | "http": { 13 | "commandName": "Project", 14 | "dotnetRunMessages": true, 15 | "launchBrowser": true, 16 | "applicationUrl": "http://localhost:5072", 17 | "environmentVariables": { 18 | "ASPNETCORE_ENVIRONMENT": "Development" 19 | } 20 | }, 21 | "https": { 22 | "commandName": "Project", 23 | "dotnetRunMessages": true, 24 | "launchBrowser": true, 25 | "applicationUrl": "https://localhost:7051;http://localhost:5072", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | }, 30 | "IIS Express": { 31 | "commandName": "IISExpress", 32 | "launchBrowser": true, 33 | "environmentVariables": { 34 | "ASPNETCORE_ENVIRONMENT": "Development" 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /BlazorRenderModes/Server.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.8.34004.107 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorSSR", "BlazorSSR.csproj", "{EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientApp", "..\ClientApp\ClientApp.csproj", "{F4669A5E-9633-46A7-92A5-18FEE3D887A2}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {EBBCA52B-6939-41D4-9C2C-9AB65AE3A65A}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {F4669A5E-9633-46A7-92A5-18FEE3D887A2}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {95FF5B54-FF7B-4EB0-BAEF-3197D730A48A} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /BlazorRenderModes/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /BlazorRenderModes/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/css/app.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --cf-theme-core: #2B404F; 3 | --cf-theme-100: hsl(205, 30%, 95%); 4 | --cf-theme-150: hsl(205, 30%, 90%); 5 | --cf-theme-200: hsl(205, 30%, 85%); 6 | --cf-theme-250: hsl(205, 30%, 75%); 7 | --cf-theme-300: hsl(205, 30%, 65%); 8 | --cf-theme-400: hsl(205, 30%, 55%); 9 | --cf-theme-500: hsl(205, 30%, 45%); 10 | --cf-theme-600: hsl(205, 30%, 35%); 11 | --cf-theme-700: hsl(205, 30%, 25%); 12 | --cf-theme-800: hsl(205, 30%, 20%); 13 | --cf-theme-900: hsl(205, 30%, 15%); 14 | --cf-dark-color: #212121; 15 | --cf-light-color: #deeefb; 16 | --cf-orange-color: #ff993b; 17 | } 18 | 19 | h1:focus { 20 | outline: none; 21 | } 22 | 23 | a, .btn-link { 24 | color: var(--cf-theme-core); 25 | } 26 | 27 | .btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { 28 | box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; 29 | } 30 | 31 | .content { 32 | padding-top: 1.1rem; 33 | } 34 | 35 | .valid.modified:not([type=checkbox]) { 36 | outline: 1px solid #26b050; 37 | } 38 | 39 | .invalid { 40 | outline: 1px solid red; 41 | } 42 | 43 | .validation-message { 44 | color: red; 45 | } 46 | 47 | #blazor-error-ui { 48 | background: lightyellow; 49 | bottom: 0; 50 | box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); 51 | display: none; 52 | left: 0; 53 | padding: 0.6rem 1.25rem 0.7rem 1.25rem; 54 | position: fixed; 55 | width: 100%; 56 | z-index: 1000; 57 | } 58 | 59 | #blazor-error-ui .dismiss { 60 | cursor: pointer; 61 | position: absolute; 62 | right: 0.75rem; 63 | top: 0.5rem; 64 | } 65 | 66 | .blazor-error-boundary { 67 | background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; 68 | padding: 1rem 1rem 1rem 3.7rem; 69 | color: white; 70 | } 71 | 72 | .blazor-error-boundary::after { 73 | content: "An error has occurred." 74 | } 75 | 76 | .loading-progress { 77 | position: relative; 78 | display: block; 79 | width: 8rem; 80 | height: 8rem; 81 | margin: 20vh auto 1rem auto; 82 | } 83 | 84 | .loading-progress circle { 85 | fill: none; 86 | stroke: #e0e0e0; 87 | stroke-width: 0.6rem; 88 | transform-origin: 50% 50%; 89 | transform: rotate(-90deg); 90 | } 91 | 92 | .loading-progress circle:last-child { 93 | stroke: #1b6ec2; 94 | stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%; 95 | transition: stroke-dasharray 0.05s ease-in-out; 96 | } 97 | 98 | .loading-progress-text { 99 | position: absolute; 100 | text-align: center; 101 | font-weight: bold; 102 | inset: calc(20vh + 3.25rem) 0 auto 0.2rem; 103 | } 104 | 105 | .loading-progress-text:after { 106 | content: var(--blazor-load-percentage-text, "Loading"); 107 | } 108 | 109 | 110 | 111 | 112 | /* #region Sticky Footer */ 113 | html, 114 | body { 115 | height: 100%; 116 | font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; 117 | 118 | } 119 | 120 | body { 121 | display: flex; 122 | flex-direction: column; 123 | background-color: var(--cf-theme-100); 124 | color: var(--cf-dark-color); 125 | } 126 | 127 | main { 128 | flex-grow: 1; 129 | } 130 | 131 | h1, h2, h3, h4, h5, h6 { 132 | font-family: 'Barlow Condensed', sans-serif; 133 | } 134 | 135 | footer { 136 | flex-shrink: 0; 137 | } 138 | 139 | /* #endregion Sticky Footer */ 140 | 141 | .btn-primary { 142 | --bs-btn-bg: var(--cf-theme-600); 143 | --bs-btn-border-color: var(--cf-theme-600); 144 | --bs-btn-hover-bg: var(--cf-theme-700); 145 | --bs-btn-hover-border-color: var(--cf-theme-700); 146 | } 147 | 148 | 149 | 150 | .navbar, 151 | .footer { 152 | background-color: var(--cf-theme-core); 153 | } 154 | 155 | .footer { 156 | color: var(--cf-theme-200); 157 | } 158 | 159 | .socialicons { 160 | font-size: 2rem; 161 | padding-left: .5rem; 162 | color: var(--cf-theme-300); 163 | transition: color 0.2s; 164 | } 165 | 166 | .socialicons:hover { 167 | color: var(--cf-orange-color); 168 | } 169 | 170 | .productionImage { 171 | max-width: 300px; 172 | padding: .5rem; 173 | max-height : 100px; 174 | } 175 | 176 | .imagePosterPlaceHolder{ 177 | aspect-ratio: 2/3; 178 | } 179 | 180 | .fade-in { 181 | animation: fade-in 0.8s ease-in; 182 | } 183 | 184 | @keyframes fade-in { 185 | from { 186 | opacity: 0; 187 | } 188 | 189 | to { 190 | opacity: 1; 191 | } 192 | } -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/css/bootstrap-icons/bootstrap-icons.json: -------------------------------------------------------------------------------- 1 | { 2 | "123": 63103, 3 | "alarm-fill": 61697, 4 | "alarm": 61698, 5 | "align-bottom": 61699, 6 | "align-center": 61700, 7 | "align-end": 61701, 8 | "align-middle": 61702, 9 | "align-start": 61703, 10 | "align-top": 61704, 11 | "alt": 61705, 12 | "app-indicator": 61706, 13 | "app": 61707, 14 | "archive-fill": 61708, 15 | "archive": 61709, 16 | "arrow-90deg-down": 61710, 17 | "arrow-90deg-left": 61711, 18 | "arrow-90deg-right": 61712, 19 | "arrow-90deg-up": 61713, 20 | "arrow-bar-down": 61714, 21 | "arrow-bar-left": 61715, 22 | "arrow-bar-right": 61716, 23 | "arrow-bar-up": 61717, 24 | "arrow-clockwise": 61718, 25 | "arrow-counterclockwise": 61719, 26 | "arrow-down-circle-fill": 61720, 27 | "arrow-down-circle": 61721, 28 | "arrow-down-left-circle-fill": 61722, 29 | "arrow-down-left-circle": 61723, 30 | "arrow-down-left-square-fill": 61724, 31 | "arrow-down-left-square": 61725, 32 | "arrow-down-left": 61726, 33 | "arrow-down-right-circle-fill": 61727, 34 | "arrow-down-right-circle": 61728, 35 | "arrow-down-right-square-fill": 61729, 36 | "arrow-down-right-square": 61730, 37 | "arrow-down-right": 61731, 38 | "arrow-down-short": 61732, 39 | "arrow-down-square-fill": 61733, 40 | "arrow-down-square": 61734, 41 | "arrow-down-up": 61735, 42 | "arrow-down": 61736, 43 | "arrow-left-circle-fill": 61737, 44 | "arrow-left-circle": 61738, 45 | "arrow-left-right": 61739, 46 | "arrow-left-short": 61740, 47 | "arrow-left-square-fill": 61741, 48 | "arrow-left-square": 61742, 49 | "arrow-left": 61743, 50 | "arrow-repeat": 61744, 51 | "arrow-return-left": 61745, 52 | "arrow-return-right": 61746, 53 | "arrow-right-circle-fill": 61747, 54 | "arrow-right-circle": 61748, 55 | "arrow-right-short": 61749, 56 | "arrow-right-square-fill": 61750, 57 | "arrow-right-square": 61751, 58 | "arrow-right": 61752, 59 | "arrow-up-circle-fill": 61753, 60 | "arrow-up-circle": 61754, 61 | "arrow-up-left-circle-fill": 61755, 62 | "arrow-up-left-circle": 61756, 63 | "arrow-up-left-square-fill": 61757, 64 | "arrow-up-left-square": 61758, 65 | "arrow-up-left": 61759, 66 | "arrow-up-right-circle-fill": 61760, 67 | "arrow-up-right-circle": 61761, 68 | "arrow-up-right-square-fill": 61762, 69 | "arrow-up-right-square": 61763, 70 | "arrow-up-right": 61764, 71 | "arrow-up-short": 61765, 72 | "arrow-up-square-fill": 61766, 73 | "arrow-up-square": 61767, 74 | "arrow-up": 61768, 75 | "arrows-angle-contract": 61769, 76 | "arrows-angle-expand": 61770, 77 | "arrows-collapse": 61771, 78 | "arrows-expand": 61772, 79 | "arrows-fullscreen": 61773, 80 | "arrows-move": 61774, 81 | "aspect-ratio-fill": 61775, 82 | "aspect-ratio": 61776, 83 | "asterisk": 61777, 84 | "at": 61778, 85 | "award-fill": 61779, 86 | "award": 61780, 87 | "back": 61781, 88 | "backspace-fill": 61782, 89 | "backspace-reverse-fill": 61783, 90 | "backspace-reverse": 61784, 91 | "backspace": 61785, 92 | "badge-3d-fill": 61786, 93 | "badge-3d": 61787, 94 | "badge-4k-fill": 61788, 95 | "badge-4k": 61789, 96 | "badge-8k-fill": 61790, 97 | "badge-8k": 61791, 98 | "badge-ad-fill": 61792, 99 | "badge-ad": 61793, 100 | "badge-ar-fill": 61794, 101 | "badge-ar": 61795, 102 | "badge-cc-fill": 61796, 103 | "badge-cc": 61797, 104 | "badge-hd-fill": 61798, 105 | "badge-hd": 61799, 106 | "badge-tm-fill": 61800, 107 | "badge-tm": 61801, 108 | "badge-vo-fill": 61802, 109 | "badge-vo": 61803, 110 | "badge-vr-fill": 61804, 111 | "badge-vr": 61805, 112 | "badge-wc-fill": 61806, 113 | "badge-wc": 61807, 114 | "bag-check-fill": 61808, 115 | "bag-check": 61809, 116 | "bag-dash-fill": 61810, 117 | "bag-dash": 61811, 118 | "bag-fill": 61812, 119 | "bag-plus-fill": 61813, 120 | "bag-plus": 61814, 121 | "bag-x-fill": 61815, 122 | "bag-x": 61816, 123 | "bag": 61817, 124 | "bar-chart-fill": 61818, 125 | "bar-chart-line-fill": 61819, 126 | "bar-chart-line": 61820, 127 | "bar-chart-steps": 61821, 128 | "bar-chart": 61822, 129 | "basket-fill": 61823, 130 | "basket": 61824, 131 | "basket2-fill": 61825, 132 | "basket2": 61826, 133 | "basket3-fill": 61827, 134 | "basket3": 61828, 135 | "battery-charging": 61829, 136 | "battery-full": 61830, 137 | "battery-half": 61831, 138 | "battery": 61832, 139 | "bell-fill": 61833, 140 | "bell": 61834, 141 | "bezier": 61835, 142 | "bezier2": 61836, 143 | "bicycle": 61837, 144 | "binoculars-fill": 61838, 145 | "binoculars": 61839, 146 | "blockquote-left": 61840, 147 | "blockquote-right": 61841, 148 | "book-fill": 61842, 149 | "book-half": 61843, 150 | "book": 61844, 151 | "bookmark-check-fill": 61845, 152 | "bookmark-check": 61846, 153 | "bookmark-dash-fill": 61847, 154 | "bookmark-dash": 61848, 155 | "bookmark-fill": 61849, 156 | "bookmark-heart-fill": 61850, 157 | "bookmark-heart": 61851, 158 | "bookmark-plus-fill": 61852, 159 | "bookmark-plus": 61853, 160 | "bookmark-star-fill": 61854, 161 | "bookmark-star": 61855, 162 | "bookmark-x-fill": 61856, 163 | "bookmark-x": 61857, 164 | "bookmark": 61858, 165 | "bookmarks-fill": 61859, 166 | "bookmarks": 61860, 167 | "bookshelf": 61861, 168 | "bootstrap-fill": 61862, 169 | "bootstrap-reboot": 61863, 170 | "bootstrap": 61864, 171 | "border-all": 61865, 172 | "border-bottom": 61866, 173 | "border-center": 61867, 174 | "border-inner": 61868, 175 | "border-left": 61869, 176 | "border-middle": 61870, 177 | "border-outer": 61871, 178 | "border-right": 61872, 179 | "border-style": 61873, 180 | "border-top": 61874, 181 | "border-width": 61875, 182 | "border": 61876, 183 | "bounding-box-circles": 61877, 184 | "bounding-box": 61878, 185 | "box-arrow-down-left": 61879, 186 | "box-arrow-down-right": 61880, 187 | "box-arrow-down": 61881, 188 | "box-arrow-in-down-left": 61882, 189 | "box-arrow-in-down-right": 61883, 190 | "box-arrow-in-down": 61884, 191 | "box-arrow-in-left": 61885, 192 | "box-arrow-in-right": 61886, 193 | "box-arrow-in-up-left": 61887, 194 | "box-arrow-in-up-right": 61888, 195 | "box-arrow-in-up": 61889, 196 | "box-arrow-left": 61890, 197 | "box-arrow-right": 61891, 198 | "box-arrow-up-left": 61892, 199 | "box-arrow-up-right": 61893, 200 | "box-arrow-up": 61894, 201 | "box-seam": 61895, 202 | "box": 61896, 203 | "braces": 61897, 204 | "bricks": 61898, 205 | "briefcase-fill": 61899, 206 | "briefcase": 61900, 207 | "brightness-alt-high-fill": 61901, 208 | "brightness-alt-high": 61902, 209 | "brightness-alt-low-fill": 61903, 210 | "brightness-alt-low": 61904, 211 | "brightness-high-fill": 61905, 212 | "brightness-high": 61906, 213 | "brightness-low-fill": 61907, 214 | "brightness-low": 61908, 215 | "broadcast-pin": 61909, 216 | "broadcast": 61910, 217 | "brush-fill": 61911, 218 | "brush": 61912, 219 | "bucket-fill": 61913, 220 | "bucket": 61914, 221 | "bug-fill": 61915, 222 | "bug": 61916, 223 | "building": 61917, 224 | "bullseye": 61918, 225 | "calculator-fill": 61919, 226 | "calculator": 61920, 227 | "calendar-check-fill": 61921, 228 | "calendar-check": 61922, 229 | "calendar-date-fill": 61923, 230 | "calendar-date": 61924, 231 | "calendar-day-fill": 61925, 232 | "calendar-day": 61926, 233 | "calendar-event-fill": 61927, 234 | "calendar-event": 61928, 235 | "calendar-fill": 61929, 236 | "calendar-minus-fill": 61930, 237 | "calendar-minus": 61931, 238 | "calendar-month-fill": 61932, 239 | "calendar-month": 61933, 240 | "calendar-plus-fill": 61934, 241 | "calendar-plus": 61935, 242 | "calendar-range-fill": 61936, 243 | "calendar-range": 61937, 244 | "calendar-week-fill": 61938, 245 | "calendar-week": 61939, 246 | "calendar-x-fill": 61940, 247 | "calendar-x": 61941, 248 | "calendar": 61942, 249 | "calendar2-check-fill": 61943, 250 | "calendar2-check": 61944, 251 | "calendar2-date-fill": 61945, 252 | "calendar2-date": 61946, 253 | "calendar2-day-fill": 61947, 254 | "calendar2-day": 61948, 255 | "calendar2-event-fill": 61949, 256 | "calendar2-event": 61950, 257 | "calendar2-fill": 61951, 258 | "calendar2-minus-fill": 61952, 259 | "calendar2-minus": 61953, 260 | "calendar2-month-fill": 61954, 261 | "calendar2-month": 61955, 262 | "calendar2-plus-fill": 61956, 263 | "calendar2-plus": 61957, 264 | "calendar2-range-fill": 61958, 265 | "calendar2-range": 61959, 266 | "calendar2-week-fill": 61960, 267 | "calendar2-week": 61961, 268 | "calendar2-x-fill": 61962, 269 | "calendar2-x": 61963, 270 | "calendar2": 61964, 271 | "calendar3-event-fill": 61965, 272 | "calendar3-event": 61966, 273 | "calendar3-fill": 61967, 274 | "calendar3-range-fill": 61968, 275 | "calendar3-range": 61969, 276 | "calendar3-week-fill": 61970, 277 | "calendar3-week": 61971, 278 | "calendar3": 61972, 279 | "calendar4-event": 61973, 280 | "calendar4-range": 61974, 281 | "calendar4-week": 61975, 282 | "calendar4": 61976, 283 | "camera-fill": 61977, 284 | "camera-reels-fill": 61978, 285 | "camera-reels": 61979, 286 | "camera-video-fill": 61980, 287 | "camera-video-off-fill": 61981, 288 | "camera-video-off": 61982, 289 | "camera-video": 61983, 290 | "camera": 61984, 291 | "camera2": 61985, 292 | "capslock-fill": 61986, 293 | "capslock": 61987, 294 | "card-checklist": 61988, 295 | "card-heading": 61989, 296 | "card-image": 61990, 297 | "card-list": 61991, 298 | "card-text": 61992, 299 | "caret-down-fill": 61993, 300 | "caret-down-square-fill": 61994, 301 | "caret-down-square": 61995, 302 | "caret-down": 61996, 303 | "caret-left-fill": 61997, 304 | "caret-left-square-fill": 61998, 305 | "caret-left-square": 61999, 306 | "caret-left": 62000, 307 | "caret-right-fill": 62001, 308 | "caret-right-square-fill": 62002, 309 | "caret-right-square": 62003, 310 | "caret-right": 62004, 311 | "caret-up-fill": 62005, 312 | "caret-up-square-fill": 62006, 313 | "caret-up-square": 62007, 314 | "caret-up": 62008, 315 | "cart-check-fill": 62009, 316 | "cart-check": 62010, 317 | "cart-dash-fill": 62011, 318 | "cart-dash": 62012, 319 | "cart-fill": 62013, 320 | "cart-plus-fill": 62014, 321 | "cart-plus": 62015, 322 | "cart-x-fill": 62016, 323 | "cart-x": 62017, 324 | "cart": 62018, 325 | "cart2": 62019, 326 | "cart3": 62020, 327 | "cart4": 62021, 328 | "cash-stack": 62022, 329 | "cash": 62023, 330 | "cast": 62024, 331 | "chat-dots-fill": 62025, 332 | "chat-dots": 62026, 333 | "chat-fill": 62027, 334 | "chat-left-dots-fill": 62028, 335 | "chat-left-dots": 62029, 336 | "chat-left-fill": 62030, 337 | "chat-left-quote-fill": 62031, 338 | "chat-left-quote": 62032, 339 | "chat-left-text-fill": 62033, 340 | "chat-left-text": 62034, 341 | "chat-left": 62035, 342 | "chat-quote-fill": 62036, 343 | "chat-quote": 62037, 344 | "chat-right-dots-fill": 62038, 345 | "chat-right-dots": 62039, 346 | "chat-right-fill": 62040, 347 | "chat-right-quote-fill": 62041, 348 | "chat-right-quote": 62042, 349 | "chat-right-text-fill": 62043, 350 | "chat-right-text": 62044, 351 | "chat-right": 62045, 352 | "chat-square-dots-fill": 62046, 353 | "chat-square-dots": 62047, 354 | "chat-square-fill": 62048, 355 | "chat-square-quote-fill": 62049, 356 | "chat-square-quote": 62050, 357 | "chat-square-text-fill": 62051, 358 | "chat-square-text": 62052, 359 | "chat-square": 62053, 360 | "chat-text-fill": 62054, 361 | "chat-text": 62055, 362 | "chat": 62056, 363 | "check-all": 62057, 364 | "check-circle-fill": 62058, 365 | "check-circle": 62059, 366 | "check-square-fill": 62060, 367 | "check-square": 62061, 368 | "check": 62062, 369 | "check2-all": 62063, 370 | "check2-circle": 62064, 371 | "check2-square": 62065, 372 | "check2": 62066, 373 | "chevron-bar-contract": 62067, 374 | "chevron-bar-down": 62068, 375 | "chevron-bar-expand": 62069, 376 | "chevron-bar-left": 62070, 377 | "chevron-bar-right": 62071, 378 | "chevron-bar-up": 62072, 379 | "chevron-compact-down": 62073, 380 | "chevron-compact-left": 62074, 381 | "chevron-compact-right": 62075, 382 | "chevron-compact-up": 62076, 383 | "chevron-contract": 62077, 384 | "chevron-double-down": 62078, 385 | "chevron-double-left": 62079, 386 | "chevron-double-right": 62080, 387 | "chevron-double-up": 62081, 388 | "chevron-down": 62082, 389 | "chevron-expand": 62083, 390 | "chevron-left": 62084, 391 | "chevron-right": 62085, 392 | "chevron-up": 62086, 393 | "circle-fill": 62087, 394 | "circle-half": 62088, 395 | "circle-square": 62089, 396 | "circle": 62090, 397 | "clipboard-check": 62091, 398 | "clipboard-data": 62092, 399 | "clipboard-minus": 62093, 400 | "clipboard-plus": 62094, 401 | "clipboard-x": 62095, 402 | "clipboard": 62096, 403 | "clock-fill": 62097, 404 | "clock-history": 62098, 405 | "clock": 62099, 406 | "cloud-arrow-down-fill": 62100, 407 | "cloud-arrow-down": 62101, 408 | "cloud-arrow-up-fill": 62102, 409 | "cloud-arrow-up": 62103, 410 | "cloud-check-fill": 62104, 411 | "cloud-check": 62105, 412 | "cloud-download-fill": 62106, 413 | "cloud-download": 62107, 414 | "cloud-drizzle-fill": 62108, 415 | "cloud-drizzle": 62109, 416 | "cloud-fill": 62110, 417 | "cloud-fog-fill": 62111, 418 | "cloud-fog": 62112, 419 | "cloud-fog2-fill": 62113, 420 | "cloud-fog2": 62114, 421 | "cloud-hail-fill": 62115, 422 | "cloud-hail": 62116, 423 | "cloud-haze-fill": 62118, 424 | "cloud-haze": 62119, 425 | "cloud-haze2-fill": 62120, 426 | "cloud-lightning-fill": 62121, 427 | "cloud-lightning-rain-fill": 62122, 428 | "cloud-lightning-rain": 62123, 429 | "cloud-lightning": 62124, 430 | "cloud-minus-fill": 62125, 431 | "cloud-minus": 62126, 432 | "cloud-moon-fill": 62127, 433 | "cloud-moon": 62128, 434 | "cloud-plus-fill": 62129, 435 | "cloud-plus": 62130, 436 | "cloud-rain-fill": 62131, 437 | "cloud-rain-heavy-fill": 62132, 438 | "cloud-rain-heavy": 62133, 439 | "cloud-rain": 62134, 440 | "cloud-slash-fill": 62135, 441 | "cloud-slash": 62136, 442 | "cloud-sleet-fill": 62137, 443 | "cloud-sleet": 62138, 444 | "cloud-snow-fill": 62139, 445 | "cloud-snow": 62140, 446 | "cloud-sun-fill": 62141, 447 | "cloud-sun": 62142, 448 | "cloud-upload-fill": 62143, 449 | "cloud-upload": 62144, 450 | "cloud": 62145, 451 | "clouds-fill": 62146, 452 | "clouds": 62147, 453 | "cloudy-fill": 62148, 454 | "cloudy": 62149, 455 | "code-slash": 62150, 456 | "code-square": 62151, 457 | "code": 62152, 458 | "collection-fill": 62153, 459 | "collection-play-fill": 62154, 460 | "collection-play": 62155, 461 | "collection": 62156, 462 | "columns-gap": 62157, 463 | "columns": 62158, 464 | "command": 62159, 465 | "compass-fill": 62160, 466 | "compass": 62161, 467 | "cone-striped": 62162, 468 | "cone": 62163, 469 | "controller": 62164, 470 | "cpu-fill": 62165, 471 | "cpu": 62166, 472 | "credit-card-2-back-fill": 62167, 473 | "credit-card-2-back": 62168, 474 | "credit-card-2-front-fill": 62169, 475 | "credit-card-2-front": 62170, 476 | "credit-card-fill": 62171, 477 | "credit-card": 62172, 478 | "crop": 62173, 479 | "cup-fill": 62174, 480 | "cup-straw": 62175, 481 | "cup": 62176, 482 | "cursor-fill": 62177, 483 | "cursor-text": 62178, 484 | "cursor": 62179, 485 | "dash-circle-dotted": 62180, 486 | "dash-circle-fill": 62181, 487 | "dash-circle": 62182, 488 | "dash-square-dotted": 62183, 489 | "dash-square-fill": 62184, 490 | "dash-square": 62185, 491 | "dash": 62186, 492 | "diagram-2-fill": 62187, 493 | "diagram-2": 62188, 494 | "diagram-3-fill": 62189, 495 | "diagram-3": 62190, 496 | "diamond-fill": 62191, 497 | "diamond-half": 62192, 498 | "diamond": 62193, 499 | "dice-1-fill": 62194, 500 | "dice-1": 62195, 501 | "dice-2-fill": 62196, 502 | "dice-2": 62197, 503 | "dice-3-fill": 62198, 504 | "dice-3": 62199, 505 | "dice-4-fill": 62200, 506 | "dice-4": 62201, 507 | "dice-5-fill": 62202, 508 | "dice-5": 62203, 509 | "dice-6-fill": 62204, 510 | "dice-6": 62205, 511 | "disc-fill": 62206, 512 | "disc": 62207, 513 | "discord": 62208, 514 | "display-fill": 62209, 515 | "display": 62210, 516 | "distribute-horizontal": 62211, 517 | "distribute-vertical": 62212, 518 | "door-closed-fill": 62213, 519 | "door-closed": 62214, 520 | "door-open-fill": 62215, 521 | "door-open": 62216, 522 | "dot": 62217, 523 | "download": 62218, 524 | "droplet-fill": 62219, 525 | "droplet-half": 62220, 526 | "droplet": 62221, 527 | "earbuds": 62222, 528 | "easel-fill": 62223, 529 | "easel": 62224, 530 | "egg-fill": 62225, 531 | "egg-fried": 62226, 532 | "egg": 62227, 533 | "eject-fill": 62228, 534 | "eject": 62229, 535 | "emoji-angry-fill": 62230, 536 | "emoji-angry": 62231, 537 | "emoji-dizzy-fill": 62232, 538 | "emoji-dizzy": 62233, 539 | "emoji-expressionless-fill": 62234, 540 | "emoji-expressionless": 62235, 541 | "emoji-frown-fill": 62236, 542 | "emoji-frown": 62237, 543 | "emoji-heart-eyes-fill": 62238, 544 | "emoji-heart-eyes": 62239, 545 | "emoji-laughing-fill": 62240, 546 | "emoji-laughing": 62241, 547 | "emoji-neutral-fill": 62242, 548 | "emoji-neutral": 62243, 549 | "emoji-smile-fill": 62244, 550 | "emoji-smile-upside-down-fill": 62245, 551 | "emoji-smile-upside-down": 62246, 552 | "emoji-smile": 62247, 553 | "emoji-sunglasses-fill": 62248, 554 | "emoji-sunglasses": 62249, 555 | "emoji-wink-fill": 62250, 556 | "emoji-wink": 62251, 557 | "envelope-fill": 62252, 558 | "envelope-open-fill": 62253, 559 | "envelope-open": 62254, 560 | "envelope": 62255, 561 | "eraser-fill": 62256, 562 | "eraser": 62257, 563 | "exclamation-circle-fill": 62258, 564 | "exclamation-circle": 62259, 565 | "exclamation-diamond-fill": 62260, 566 | "exclamation-diamond": 62261, 567 | "exclamation-octagon-fill": 62262, 568 | "exclamation-octagon": 62263, 569 | "exclamation-square-fill": 62264, 570 | "exclamation-square": 62265, 571 | "exclamation-triangle-fill": 62266, 572 | "exclamation-triangle": 62267, 573 | "exclamation": 62268, 574 | "exclude": 62269, 575 | "eye-fill": 62270, 576 | "eye-slash-fill": 62271, 577 | "eye-slash": 62272, 578 | "eye": 62273, 579 | "eyedropper": 62274, 580 | "eyeglasses": 62275, 581 | "facebook": 62276, 582 | "file-arrow-down-fill": 62277, 583 | "file-arrow-down": 62278, 584 | "file-arrow-up-fill": 62279, 585 | "file-arrow-up": 62280, 586 | "file-bar-graph-fill": 62281, 587 | "file-bar-graph": 62282, 588 | "file-binary-fill": 62283, 589 | "file-binary": 62284, 590 | "file-break-fill": 62285, 591 | "file-break": 62286, 592 | "file-check-fill": 62287, 593 | "file-check": 62288, 594 | "file-code-fill": 62289, 595 | "file-code": 62290, 596 | "file-diff-fill": 62291, 597 | "file-diff": 62292, 598 | "file-earmark-arrow-down-fill": 62293, 599 | "file-earmark-arrow-down": 62294, 600 | "file-earmark-arrow-up-fill": 62295, 601 | "file-earmark-arrow-up": 62296, 602 | "file-earmark-bar-graph-fill": 62297, 603 | "file-earmark-bar-graph": 62298, 604 | "file-earmark-binary-fill": 62299, 605 | "file-earmark-binary": 62300, 606 | "file-earmark-break-fill": 62301, 607 | "file-earmark-break": 62302, 608 | "file-earmark-check-fill": 62303, 609 | "file-earmark-check": 62304, 610 | "file-earmark-code-fill": 62305, 611 | "file-earmark-code": 62306, 612 | "file-earmark-diff-fill": 62307, 613 | "file-earmark-diff": 62308, 614 | "file-earmark-easel-fill": 62309, 615 | "file-earmark-easel": 62310, 616 | "file-earmark-excel-fill": 62311, 617 | "file-earmark-excel": 62312, 618 | "file-earmark-fill": 62313, 619 | "file-earmark-font-fill": 62314, 620 | "file-earmark-font": 62315, 621 | "file-earmark-image-fill": 62316, 622 | "file-earmark-image": 62317, 623 | "file-earmark-lock-fill": 62318, 624 | "file-earmark-lock": 62319, 625 | "file-earmark-lock2-fill": 62320, 626 | "file-earmark-lock2": 62321, 627 | "file-earmark-medical-fill": 62322, 628 | "file-earmark-medical": 62323, 629 | "file-earmark-minus-fill": 62324, 630 | "file-earmark-minus": 62325, 631 | "file-earmark-music-fill": 62326, 632 | "file-earmark-music": 62327, 633 | "file-earmark-person-fill": 62328, 634 | "file-earmark-person": 62329, 635 | "file-earmark-play-fill": 62330, 636 | "file-earmark-play": 62331, 637 | "file-earmark-plus-fill": 62332, 638 | "file-earmark-plus": 62333, 639 | "file-earmark-post-fill": 62334, 640 | "file-earmark-post": 62335, 641 | "file-earmark-ppt-fill": 62336, 642 | "file-earmark-ppt": 62337, 643 | "file-earmark-richtext-fill": 62338, 644 | "file-earmark-richtext": 62339, 645 | "file-earmark-ruled-fill": 62340, 646 | "file-earmark-ruled": 62341, 647 | "file-earmark-slides-fill": 62342, 648 | "file-earmark-slides": 62343, 649 | "file-earmark-spreadsheet-fill": 62344, 650 | "file-earmark-spreadsheet": 62345, 651 | "file-earmark-text-fill": 62346, 652 | "file-earmark-text": 62347, 653 | "file-earmark-word-fill": 62348, 654 | "file-earmark-word": 62349, 655 | "file-earmark-x-fill": 62350, 656 | "file-earmark-x": 62351, 657 | "file-earmark-zip-fill": 62352, 658 | "file-earmark-zip": 62353, 659 | "file-earmark": 62354, 660 | "file-easel-fill": 62355, 661 | "file-easel": 62356, 662 | "file-excel-fill": 62357, 663 | "file-excel": 62358, 664 | "file-fill": 62359, 665 | "file-font-fill": 62360, 666 | "file-font": 62361, 667 | "file-image-fill": 62362, 668 | "file-image": 62363, 669 | "file-lock-fill": 62364, 670 | "file-lock": 62365, 671 | "file-lock2-fill": 62366, 672 | "file-lock2": 62367, 673 | "file-medical-fill": 62368, 674 | "file-medical": 62369, 675 | "file-minus-fill": 62370, 676 | "file-minus": 62371, 677 | "file-music-fill": 62372, 678 | "file-music": 62373, 679 | "file-person-fill": 62374, 680 | "file-person": 62375, 681 | "file-play-fill": 62376, 682 | "file-play": 62377, 683 | "file-plus-fill": 62378, 684 | "file-plus": 62379, 685 | "file-post-fill": 62380, 686 | "file-post": 62381, 687 | "file-ppt-fill": 62382, 688 | "file-ppt": 62383, 689 | "file-richtext-fill": 62384, 690 | "file-richtext": 62385, 691 | "file-ruled-fill": 62386, 692 | "file-ruled": 62387, 693 | "file-slides-fill": 62388, 694 | "file-slides": 62389, 695 | "file-spreadsheet-fill": 62390, 696 | "file-spreadsheet": 62391, 697 | "file-text-fill": 62392, 698 | "file-text": 62393, 699 | "file-word-fill": 62394, 700 | "file-word": 62395, 701 | "file-x-fill": 62396, 702 | "file-x": 62397, 703 | "file-zip-fill": 62398, 704 | "file-zip": 62399, 705 | "file": 62400, 706 | "files-alt": 62401, 707 | "files": 62402, 708 | "film": 62403, 709 | "filter-circle-fill": 62404, 710 | "filter-circle": 62405, 711 | "filter-left": 62406, 712 | "filter-right": 62407, 713 | "filter-square-fill": 62408, 714 | "filter-square": 62409, 715 | "filter": 62410, 716 | "flag-fill": 62411, 717 | "flag": 62412, 718 | "flower1": 62413, 719 | "flower2": 62414, 720 | "flower3": 62415, 721 | "folder-check": 62416, 722 | "folder-fill": 62417, 723 | "folder-minus": 62418, 724 | "folder-plus": 62419, 725 | "folder-symlink-fill": 62420, 726 | "folder-symlink": 62421, 727 | "folder-x": 62422, 728 | "folder": 62423, 729 | "folder2-open": 62424, 730 | "folder2": 62425, 731 | "fonts": 62426, 732 | "forward-fill": 62427, 733 | "forward": 62428, 734 | "front": 62429, 735 | "fullscreen-exit": 62430, 736 | "fullscreen": 62431, 737 | "funnel-fill": 62432, 738 | "funnel": 62433, 739 | "gear-fill": 62434, 740 | "gear-wide-connected": 62435, 741 | "gear-wide": 62436, 742 | "gear": 62437, 743 | "gem": 62438, 744 | "geo-alt-fill": 62439, 745 | "geo-alt": 62440, 746 | "geo-fill": 62441, 747 | "geo": 62442, 748 | "gift-fill": 62443, 749 | "gift": 62444, 750 | "github": 62445, 751 | "globe": 62446, 752 | "globe2": 62447, 753 | "google": 62448, 754 | "graph-down": 62449, 755 | "graph-up": 62450, 756 | "grid-1x2-fill": 62451, 757 | "grid-1x2": 62452, 758 | "grid-3x2-gap-fill": 62453, 759 | "grid-3x2-gap": 62454, 760 | "grid-3x2": 62455, 761 | "grid-3x3-gap-fill": 62456, 762 | "grid-3x3-gap": 62457, 763 | "grid-3x3": 62458, 764 | "grid-fill": 62459, 765 | "grid": 62460, 766 | "grip-horizontal": 62461, 767 | "grip-vertical": 62462, 768 | "hammer": 62463, 769 | "hand-index-fill": 62464, 770 | "hand-index-thumb-fill": 62465, 771 | "hand-index-thumb": 62466, 772 | "hand-index": 62467, 773 | "hand-thumbs-down-fill": 62468, 774 | "hand-thumbs-down": 62469, 775 | "hand-thumbs-up-fill": 62470, 776 | "hand-thumbs-up": 62471, 777 | "handbag-fill": 62472, 778 | "handbag": 62473, 779 | "hash": 62474, 780 | "hdd-fill": 62475, 781 | "hdd-network-fill": 62476, 782 | "hdd-network": 62477, 783 | "hdd-rack-fill": 62478, 784 | "hdd-rack": 62479, 785 | "hdd-stack-fill": 62480, 786 | "hdd-stack": 62481, 787 | "hdd": 62482, 788 | "headphones": 62483, 789 | "headset": 62484, 790 | "heart-fill": 62485, 791 | "heart-half": 62486, 792 | "heart": 62487, 793 | "heptagon-fill": 62488, 794 | "heptagon-half": 62489, 795 | "heptagon": 62490, 796 | "hexagon-fill": 62491, 797 | "hexagon-half": 62492, 798 | "hexagon": 62493, 799 | "hourglass-bottom": 62494, 800 | "hourglass-split": 62495, 801 | "hourglass-top": 62496, 802 | "hourglass": 62497, 803 | "house-door-fill": 62498, 804 | "house-door": 62499, 805 | "house-fill": 62500, 806 | "house": 62501, 807 | "hr": 62502, 808 | "hurricane": 62503, 809 | "image-alt": 62504, 810 | "image-fill": 62505, 811 | "image": 62506, 812 | "images": 62507, 813 | "inbox-fill": 62508, 814 | "inbox": 62509, 815 | "inboxes-fill": 62510, 816 | "inboxes": 62511, 817 | "info-circle-fill": 62512, 818 | "info-circle": 62513, 819 | "info-square-fill": 62514, 820 | "info-square": 62515, 821 | "info": 62516, 822 | "input-cursor-text": 62517, 823 | "input-cursor": 62518, 824 | "instagram": 62519, 825 | "intersect": 62520, 826 | "journal-album": 62521, 827 | "journal-arrow-down": 62522, 828 | "journal-arrow-up": 62523, 829 | "journal-bookmark-fill": 62524, 830 | "journal-bookmark": 62525, 831 | "journal-check": 62526, 832 | "journal-code": 62527, 833 | "journal-medical": 62528, 834 | "journal-minus": 62529, 835 | "journal-plus": 62530, 836 | "journal-richtext": 62531, 837 | "journal-text": 62532, 838 | "journal-x": 62533, 839 | "journal": 62534, 840 | "journals": 62535, 841 | "joystick": 62536, 842 | "justify-left": 62537, 843 | "justify-right": 62538, 844 | "justify": 62539, 845 | "kanban-fill": 62540, 846 | "kanban": 62541, 847 | "key-fill": 62542, 848 | "key": 62543, 849 | "keyboard-fill": 62544, 850 | "keyboard": 62545, 851 | "ladder": 62546, 852 | "lamp-fill": 62547, 853 | "lamp": 62548, 854 | "laptop-fill": 62549, 855 | "laptop": 62550, 856 | "layer-backward": 62551, 857 | "layer-forward": 62552, 858 | "layers-fill": 62553, 859 | "layers-half": 62554, 860 | "layers": 62555, 861 | "layout-sidebar-inset-reverse": 62556, 862 | "layout-sidebar-inset": 62557, 863 | "layout-sidebar-reverse": 62558, 864 | "layout-sidebar": 62559, 865 | "layout-split": 62560, 866 | "layout-text-sidebar-reverse": 62561, 867 | "layout-text-sidebar": 62562, 868 | "layout-text-window-reverse": 62563, 869 | "layout-text-window": 62564, 870 | "layout-three-columns": 62565, 871 | "layout-wtf": 62566, 872 | "life-preserver": 62567, 873 | "lightbulb-fill": 62568, 874 | "lightbulb-off-fill": 62569, 875 | "lightbulb-off": 62570, 876 | "lightbulb": 62571, 877 | "lightning-charge-fill": 62572, 878 | "lightning-charge": 62573, 879 | "lightning-fill": 62574, 880 | "lightning": 62575, 881 | "link-45deg": 62576, 882 | "link": 62577, 883 | "linkedin": 62578, 884 | "list-check": 62579, 885 | "list-nested": 62580, 886 | "list-ol": 62581, 887 | "list-stars": 62582, 888 | "list-task": 62583, 889 | "list-ul": 62584, 890 | "list": 62585, 891 | "lock-fill": 62586, 892 | "lock": 62587, 893 | "mailbox": 62588, 894 | "mailbox2": 62589, 895 | "map-fill": 62590, 896 | "map": 62591, 897 | "markdown-fill": 62592, 898 | "markdown": 62593, 899 | "mask": 62594, 900 | "megaphone-fill": 62595, 901 | "megaphone": 62596, 902 | "menu-app-fill": 62597, 903 | "menu-app": 62598, 904 | "menu-button-fill": 62599, 905 | "menu-button-wide-fill": 62600, 906 | "menu-button-wide": 62601, 907 | "menu-button": 62602, 908 | "menu-down": 62603, 909 | "menu-up": 62604, 910 | "mic-fill": 62605, 911 | "mic-mute-fill": 62606, 912 | "mic-mute": 62607, 913 | "mic": 62608, 914 | "minecart-loaded": 62609, 915 | "minecart": 62610, 916 | "moisture": 62611, 917 | "moon-fill": 62612, 918 | "moon-stars-fill": 62613, 919 | "moon-stars": 62614, 920 | "moon": 62615, 921 | "mouse-fill": 62616, 922 | "mouse": 62617, 923 | "mouse2-fill": 62618, 924 | "mouse2": 62619, 925 | "mouse3-fill": 62620, 926 | "mouse3": 62621, 927 | "music-note-beamed": 62622, 928 | "music-note-list": 62623, 929 | "music-note": 62624, 930 | "music-player-fill": 62625, 931 | "music-player": 62626, 932 | "newspaper": 62627, 933 | "node-minus-fill": 62628, 934 | "node-minus": 62629, 935 | "node-plus-fill": 62630, 936 | "node-plus": 62631, 937 | "nut-fill": 62632, 938 | "nut": 62633, 939 | "octagon-fill": 62634, 940 | "octagon-half": 62635, 941 | "octagon": 62636, 942 | "option": 62637, 943 | "outlet": 62638, 944 | "paint-bucket": 62639, 945 | "palette-fill": 62640, 946 | "palette": 62641, 947 | "palette2": 62642, 948 | "paperclip": 62643, 949 | "paragraph": 62644, 950 | "patch-check-fill": 62645, 951 | "patch-check": 62646, 952 | "patch-exclamation-fill": 62647, 953 | "patch-exclamation": 62648, 954 | "patch-minus-fill": 62649, 955 | "patch-minus": 62650, 956 | "patch-plus-fill": 62651, 957 | "patch-plus": 62652, 958 | "patch-question-fill": 62653, 959 | "patch-question": 62654, 960 | "pause-btn-fill": 62655, 961 | "pause-btn": 62656, 962 | "pause-circle-fill": 62657, 963 | "pause-circle": 62658, 964 | "pause-fill": 62659, 965 | "pause": 62660, 966 | "peace-fill": 62661, 967 | "peace": 62662, 968 | "pen-fill": 62663, 969 | "pen": 62664, 970 | "pencil-fill": 62665, 971 | "pencil-square": 62666, 972 | "pencil": 62667, 973 | "pentagon-fill": 62668, 974 | "pentagon-half": 62669, 975 | "pentagon": 62670, 976 | "people-fill": 62671, 977 | "people": 62672, 978 | "percent": 62673, 979 | "person-badge-fill": 62674, 980 | "person-badge": 62675, 981 | "person-bounding-box": 62676, 982 | "person-check-fill": 62677, 983 | "person-check": 62678, 984 | "person-circle": 62679, 985 | "person-dash-fill": 62680, 986 | "person-dash": 62681, 987 | "person-fill": 62682, 988 | "person-lines-fill": 62683, 989 | "person-plus-fill": 62684, 990 | "person-plus": 62685, 991 | "person-square": 62686, 992 | "person-x-fill": 62687, 993 | "person-x": 62688, 994 | "person": 62689, 995 | "phone-fill": 62690, 996 | "phone-landscape-fill": 62691, 997 | "phone-landscape": 62692, 998 | "phone-vibrate-fill": 62693, 999 | "phone-vibrate": 62694, 1000 | "phone": 62695, 1001 | "pie-chart-fill": 62696, 1002 | "pie-chart": 62697, 1003 | "pin-angle-fill": 62698, 1004 | "pin-angle": 62699, 1005 | "pin-fill": 62700, 1006 | "pin": 62701, 1007 | "pip-fill": 62702, 1008 | "pip": 62703, 1009 | "play-btn-fill": 62704, 1010 | "play-btn": 62705, 1011 | "play-circle-fill": 62706, 1012 | "play-circle": 62707, 1013 | "play-fill": 62708, 1014 | "play": 62709, 1015 | "plug-fill": 62710, 1016 | "plug": 62711, 1017 | "plus-circle-dotted": 62712, 1018 | "plus-circle-fill": 62713, 1019 | "plus-circle": 62714, 1020 | "plus-square-dotted": 62715, 1021 | "plus-square-fill": 62716, 1022 | "plus-square": 62717, 1023 | "plus": 62718, 1024 | "power": 62719, 1025 | "printer-fill": 62720, 1026 | "printer": 62721, 1027 | "puzzle-fill": 62722, 1028 | "puzzle": 62723, 1029 | "question-circle-fill": 62724, 1030 | "question-circle": 62725, 1031 | "question-diamond-fill": 62726, 1032 | "question-diamond": 62727, 1033 | "question-octagon-fill": 62728, 1034 | "question-octagon": 62729, 1035 | "question-square-fill": 62730, 1036 | "question-square": 62731, 1037 | "question": 62732, 1038 | "rainbow": 62733, 1039 | "receipt-cutoff": 62734, 1040 | "receipt": 62735, 1041 | "reception-0": 62736, 1042 | "reception-1": 62737, 1043 | "reception-2": 62738, 1044 | "reception-3": 62739, 1045 | "reception-4": 62740, 1046 | "record-btn-fill": 62741, 1047 | "record-btn": 62742, 1048 | "record-circle-fill": 62743, 1049 | "record-circle": 62744, 1050 | "record-fill": 62745, 1051 | "record": 62746, 1052 | "record2-fill": 62747, 1053 | "record2": 62748, 1054 | "reply-all-fill": 62749, 1055 | "reply-all": 62750, 1056 | "reply-fill": 62751, 1057 | "reply": 62752, 1058 | "rss-fill": 62753, 1059 | "rss": 62754, 1060 | "rulers": 62755, 1061 | "save-fill": 62756, 1062 | "save": 62757, 1063 | "save2-fill": 62758, 1064 | "save2": 62759, 1065 | "scissors": 62760, 1066 | "screwdriver": 62761, 1067 | "search": 62762, 1068 | "segmented-nav": 62763, 1069 | "server": 62764, 1070 | "share-fill": 62765, 1071 | "share": 62766, 1072 | "shield-check": 62767, 1073 | "shield-exclamation": 62768, 1074 | "shield-fill-check": 62769, 1075 | "shield-fill-exclamation": 62770, 1076 | "shield-fill-minus": 62771, 1077 | "shield-fill-plus": 62772, 1078 | "shield-fill-x": 62773, 1079 | "shield-fill": 62774, 1080 | "shield-lock-fill": 62775, 1081 | "shield-lock": 62776, 1082 | "shield-minus": 62777, 1083 | "shield-plus": 62778, 1084 | "shield-shaded": 62779, 1085 | "shield-slash-fill": 62780, 1086 | "shield-slash": 62781, 1087 | "shield-x": 62782, 1088 | "shield": 62783, 1089 | "shift-fill": 62784, 1090 | "shift": 62785, 1091 | "shop-window": 62786, 1092 | "shop": 62787, 1093 | "shuffle": 62788, 1094 | "signpost-2-fill": 62789, 1095 | "signpost-2": 62790, 1096 | "signpost-fill": 62791, 1097 | "signpost-split-fill": 62792, 1098 | "signpost-split": 62793, 1099 | "signpost": 62794, 1100 | "sim-fill": 62795, 1101 | "sim": 62796, 1102 | "skip-backward-btn-fill": 62797, 1103 | "skip-backward-btn": 62798, 1104 | "skip-backward-circle-fill": 62799, 1105 | "skip-backward-circle": 62800, 1106 | "skip-backward-fill": 62801, 1107 | "skip-backward": 62802, 1108 | "skip-end-btn-fill": 62803, 1109 | "skip-end-btn": 62804, 1110 | "skip-end-circle-fill": 62805, 1111 | "skip-end-circle": 62806, 1112 | "skip-end-fill": 62807, 1113 | "skip-end": 62808, 1114 | "skip-forward-btn-fill": 62809, 1115 | "skip-forward-btn": 62810, 1116 | "skip-forward-circle-fill": 62811, 1117 | "skip-forward-circle": 62812, 1118 | "skip-forward-fill": 62813, 1119 | "skip-forward": 62814, 1120 | "skip-start-btn-fill": 62815, 1121 | "skip-start-btn": 62816, 1122 | "skip-start-circle-fill": 62817, 1123 | "skip-start-circle": 62818, 1124 | "skip-start-fill": 62819, 1125 | "skip-start": 62820, 1126 | "slack": 62821, 1127 | "slash-circle-fill": 62822, 1128 | "slash-circle": 62823, 1129 | "slash-square-fill": 62824, 1130 | "slash-square": 62825, 1131 | "slash": 62826, 1132 | "sliders": 62827, 1133 | "smartwatch": 62828, 1134 | "snow": 62829, 1135 | "snow2": 62830, 1136 | "snow3": 62831, 1137 | "sort-alpha-down-alt": 62832, 1138 | "sort-alpha-down": 62833, 1139 | "sort-alpha-up-alt": 62834, 1140 | "sort-alpha-up": 62835, 1141 | "sort-down-alt": 62836, 1142 | "sort-down": 62837, 1143 | "sort-numeric-down-alt": 62838, 1144 | "sort-numeric-down": 62839, 1145 | "sort-numeric-up-alt": 62840, 1146 | "sort-numeric-up": 62841, 1147 | "sort-up-alt": 62842, 1148 | "sort-up": 62843, 1149 | "soundwave": 62844, 1150 | "speaker-fill": 62845, 1151 | "speaker": 62846, 1152 | "speedometer": 62847, 1153 | "speedometer2": 62848, 1154 | "spellcheck": 62849, 1155 | "square-fill": 62850, 1156 | "square-half": 62851, 1157 | "square": 62852, 1158 | "stack": 62853, 1159 | "star-fill": 62854, 1160 | "star-half": 62855, 1161 | "star": 62856, 1162 | "stars": 62857, 1163 | "stickies-fill": 62858, 1164 | "stickies": 62859, 1165 | "sticky-fill": 62860, 1166 | "sticky": 62861, 1167 | "stop-btn-fill": 62862, 1168 | "stop-btn": 62863, 1169 | "stop-circle-fill": 62864, 1170 | "stop-circle": 62865, 1171 | "stop-fill": 62866, 1172 | "stop": 62867, 1173 | "stoplights-fill": 62868, 1174 | "stoplights": 62869, 1175 | "stopwatch-fill": 62870, 1176 | "stopwatch": 62871, 1177 | "subtract": 62872, 1178 | "suit-club-fill": 62873, 1179 | "suit-club": 62874, 1180 | "suit-diamond-fill": 62875, 1181 | "suit-diamond": 62876, 1182 | "suit-heart-fill": 62877, 1183 | "suit-heart": 62878, 1184 | "suit-spade-fill": 62879, 1185 | "suit-spade": 62880, 1186 | "sun-fill": 62881, 1187 | "sun": 62882, 1188 | "sunglasses": 62883, 1189 | "sunrise-fill": 62884, 1190 | "sunrise": 62885, 1191 | "sunset-fill": 62886, 1192 | "sunset": 62887, 1193 | "symmetry-horizontal": 62888, 1194 | "symmetry-vertical": 62889, 1195 | "table": 62890, 1196 | "tablet-fill": 62891, 1197 | "tablet-landscape-fill": 62892, 1198 | "tablet-landscape": 62893, 1199 | "tablet": 62894, 1200 | "tag-fill": 62895, 1201 | "tag": 62896, 1202 | "tags-fill": 62897, 1203 | "tags": 62898, 1204 | "telegram": 62899, 1205 | "telephone-fill": 62900, 1206 | "telephone-forward-fill": 62901, 1207 | "telephone-forward": 62902, 1208 | "telephone-inbound-fill": 62903, 1209 | "telephone-inbound": 62904, 1210 | "telephone-minus-fill": 62905, 1211 | "telephone-minus": 62906, 1212 | "telephone-outbound-fill": 62907, 1213 | "telephone-outbound": 62908, 1214 | "telephone-plus-fill": 62909, 1215 | "telephone-plus": 62910, 1216 | "telephone-x-fill": 62911, 1217 | "telephone-x": 62912, 1218 | "telephone": 62913, 1219 | "terminal-fill": 62914, 1220 | "terminal": 62915, 1221 | "text-center": 62916, 1222 | "text-indent-left": 62917, 1223 | "text-indent-right": 62918, 1224 | "text-left": 62919, 1225 | "text-paragraph": 62920, 1226 | "text-right": 62921, 1227 | "textarea-resize": 62922, 1228 | "textarea-t": 62923, 1229 | "textarea": 62924, 1230 | "thermometer-half": 62925, 1231 | "thermometer-high": 62926, 1232 | "thermometer-low": 62927, 1233 | "thermometer-snow": 62928, 1234 | "thermometer-sun": 62929, 1235 | "thermometer": 62930, 1236 | "three-dots-vertical": 62931, 1237 | "three-dots": 62932, 1238 | "toggle-off": 62933, 1239 | "toggle-on": 62934, 1240 | "toggle2-off": 62935, 1241 | "toggle2-on": 62936, 1242 | "toggles": 62937, 1243 | "toggles2": 62938, 1244 | "tools": 62939, 1245 | "tornado": 62940, 1246 | "trash-fill": 62941, 1247 | "trash": 62942, 1248 | "trash2-fill": 62943, 1249 | "trash2": 62944, 1250 | "tree-fill": 62945, 1251 | "tree": 62946, 1252 | "triangle-fill": 62947, 1253 | "triangle-half": 62948, 1254 | "triangle": 62949, 1255 | "trophy-fill": 62950, 1256 | "trophy": 62951, 1257 | "tropical-storm": 62952, 1258 | "truck-flatbed": 62953, 1259 | "truck": 62954, 1260 | "tsunami": 62955, 1261 | "tv-fill": 62956, 1262 | "tv": 62957, 1263 | "twitch": 62958, 1264 | "twitter": 62959, 1265 | "type-bold": 62960, 1266 | "type-h1": 62961, 1267 | "type-h2": 62962, 1268 | "type-h3": 62963, 1269 | "type-italic": 62964, 1270 | "type-strikethrough": 62965, 1271 | "type-underline": 62966, 1272 | "type": 62967, 1273 | "ui-checks-grid": 62968, 1274 | "ui-checks": 62969, 1275 | "ui-radios-grid": 62970, 1276 | "ui-radios": 62971, 1277 | "umbrella-fill": 62972, 1278 | "umbrella": 62973, 1279 | "union": 62974, 1280 | "unlock-fill": 62975, 1281 | "unlock": 62976, 1282 | "upc-scan": 62977, 1283 | "upc": 62978, 1284 | "upload": 62979, 1285 | "vector-pen": 62980, 1286 | "view-list": 62981, 1287 | "view-stacked": 62982, 1288 | "vinyl-fill": 62983, 1289 | "vinyl": 62984, 1290 | "voicemail": 62985, 1291 | "volume-down-fill": 62986, 1292 | "volume-down": 62987, 1293 | "volume-mute-fill": 62988, 1294 | "volume-mute": 62989, 1295 | "volume-off-fill": 62990, 1296 | "volume-off": 62991, 1297 | "volume-up-fill": 62992, 1298 | "volume-up": 62993, 1299 | "vr": 62994, 1300 | "wallet-fill": 62995, 1301 | "wallet": 62996, 1302 | "wallet2": 62997, 1303 | "watch": 62998, 1304 | "water": 62999, 1305 | "whatsapp": 63000, 1306 | "wifi-1": 63001, 1307 | "wifi-2": 63002, 1308 | "wifi-off": 63003, 1309 | "wifi": 63004, 1310 | "wind": 63005, 1311 | "window-dock": 63006, 1312 | "window-sidebar": 63007, 1313 | "window": 63008, 1314 | "wrench": 63009, 1315 | "x-circle-fill": 63010, 1316 | "x-circle": 63011, 1317 | "x-diamond-fill": 63012, 1318 | "x-diamond": 63013, 1319 | "x-octagon-fill": 63014, 1320 | "x-octagon": 63015, 1321 | "x-square-fill": 63016, 1322 | "x-square": 63017, 1323 | "x": 63018, 1324 | "youtube": 63019, 1325 | "zoom-in": 63020, 1326 | "zoom-out": 63021, 1327 | "bank": 63022, 1328 | "bank2": 63023, 1329 | "bell-slash-fill": 63024, 1330 | "bell-slash": 63025, 1331 | "cash-coin": 63026, 1332 | "check-lg": 63027, 1333 | "coin": 63028, 1334 | "currency-bitcoin": 63029, 1335 | "currency-dollar": 63030, 1336 | "currency-euro": 63031, 1337 | "currency-exchange": 63032, 1338 | "currency-pound": 63033, 1339 | "currency-yen": 63034, 1340 | "dash-lg": 63035, 1341 | "exclamation-lg": 63036, 1342 | "file-earmark-pdf-fill": 63037, 1343 | "file-earmark-pdf": 63038, 1344 | "file-pdf-fill": 63039, 1345 | "file-pdf": 63040, 1346 | "gender-ambiguous": 63041, 1347 | "gender-female": 63042, 1348 | "gender-male": 63043, 1349 | "gender-trans": 63044, 1350 | "headset-vr": 63045, 1351 | "info-lg": 63046, 1352 | "mastodon": 63047, 1353 | "messenger": 63048, 1354 | "piggy-bank-fill": 63049, 1355 | "piggy-bank": 63050, 1356 | "pin-map-fill": 63051, 1357 | "pin-map": 63052, 1358 | "plus-lg": 63053, 1359 | "question-lg": 63054, 1360 | "recycle": 63055, 1361 | "reddit": 63056, 1362 | "safe-fill": 63057, 1363 | "safe2-fill": 63058, 1364 | "safe2": 63059, 1365 | "sd-card-fill": 63060, 1366 | "sd-card": 63061, 1367 | "skype": 63062, 1368 | "slash-lg": 63063, 1369 | "translate": 63064, 1370 | "x-lg": 63065, 1371 | "safe": 63066, 1372 | "apple": 63067, 1373 | "microsoft": 63069, 1374 | "windows": 63070, 1375 | "behance": 63068, 1376 | "dribbble": 63071, 1377 | "line": 63072, 1378 | "medium": 63073, 1379 | "paypal": 63074, 1380 | "pinterest": 63075, 1381 | "signal": 63076, 1382 | "snapchat": 63077, 1383 | "spotify": 63078, 1384 | "stack-overflow": 63079, 1385 | "strava": 63080, 1386 | "wordpress": 63081, 1387 | "vimeo": 63082, 1388 | "activity": 63083, 1389 | "easel2-fill": 63084, 1390 | "easel2": 63085, 1391 | "easel3-fill": 63086, 1392 | "easel3": 63087, 1393 | "fan": 63088, 1394 | "fingerprint": 63089, 1395 | "graph-down-arrow": 63090, 1396 | "graph-up-arrow": 63091, 1397 | "hypnotize": 63092, 1398 | "magic": 63093, 1399 | "person-rolodex": 63094, 1400 | "person-video": 63095, 1401 | "person-video2": 63096, 1402 | "person-video3": 63097, 1403 | "person-workspace": 63098, 1404 | "radioactive": 63099, 1405 | "webcam-fill": 63100, 1406 | "webcam": 63101, 1407 | "yin-yang": 63102, 1408 | "bandaid-fill": 63104, 1409 | "bandaid": 63105, 1410 | "bluetooth": 63106, 1411 | "body-text": 63107, 1412 | "boombox": 63108, 1413 | "boxes": 63109, 1414 | "dpad-fill": 63110, 1415 | "dpad": 63111, 1416 | "ear-fill": 63112, 1417 | "ear": 63113, 1418 | "envelope-check-fill": 63115, 1419 | "envelope-check": 63116, 1420 | "envelope-dash-fill": 63118, 1421 | "envelope-dash": 63119, 1422 | "envelope-exclamation-fill": 63121, 1423 | "envelope-exclamation": 63122, 1424 | "envelope-plus-fill": 63123, 1425 | "envelope-plus": 63124, 1426 | "envelope-slash-fill": 63126, 1427 | "envelope-slash": 63127, 1428 | "envelope-x-fill": 63129, 1429 | "envelope-x": 63130, 1430 | "explicit-fill": 63131, 1431 | "explicit": 63132, 1432 | "git": 63133, 1433 | "infinity": 63134, 1434 | "list-columns-reverse": 63135, 1435 | "list-columns": 63136, 1436 | "meta": 63137, 1437 | "nintendo-switch": 63140, 1438 | "pc-display-horizontal": 63141, 1439 | "pc-display": 63142, 1440 | "pc-horizontal": 63143, 1441 | "pc": 63144, 1442 | "playstation": 63145, 1443 | "plus-slash-minus": 63146, 1444 | "projector-fill": 63147, 1445 | "projector": 63148, 1446 | "qr-code-scan": 63149, 1447 | "qr-code": 63150, 1448 | "quora": 63151, 1449 | "quote": 63152, 1450 | "robot": 63153, 1451 | "send-check-fill": 63154, 1452 | "send-check": 63155, 1453 | "send-dash-fill": 63156, 1454 | "send-dash": 63157, 1455 | "send-exclamation-fill": 63159, 1456 | "send-exclamation": 63160, 1457 | "send-fill": 63161, 1458 | "send-plus-fill": 63162, 1459 | "send-plus": 63163, 1460 | "send-slash-fill": 63164, 1461 | "send-slash": 63165, 1462 | "send-x-fill": 63166, 1463 | "send-x": 63167, 1464 | "send": 63168, 1465 | "steam": 63169, 1466 | "terminal-dash": 63171, 1467 | "terminal-plus": 63172, 1468 | "terminal-split": 63173, 1469 | "ticket-detailed-fill": 63174, 1470 | "ticket-detailed": 63175, 1471 | "ticket-fill": 63176, 1472 | "ticket-perforated-fill": 63177, 1473 | "ticket-perforated": 63178, 1474 | "ticket": 63179, 1475 | "tiktok": 63180, 1476 | "window-dash": 63181, 1477 | "window-desktop": 63182, 1478 | "window-fullscreen": 63183, 1479 | "window-plus": 63184, 1480 | "window-split": 63185, 1481 | "window-stack": 63186, 1482 | "window-x": 63187, 1483 | "xbox": 63188, 1484 | "ethernet": 63189, 1485 | "hdmi-fill": 63190, 1486 | "hdmi": 63191, 1487 | "usb-c-fill": 63192, 1488 | "usb-c": 63193, 1489 | "usb-fill": 63194, 1490 | "usb-plug-fill": 63195, 1491 | "usb-plug": 63196, 1492 | "usb-symbol": 63197, 1493 | "usb": 63198, 1494 | "boombox-fill": 63199, 1495 | "displayport": 63201, 1496 | "gpu-card": 63202, 1497 | "memory": 63203, 1498 | "modem-fill": 63204, 1499 | "modem": 63205, 1500 | "motherboard-fill": 63206, 1501 | "motherboard": 63207, 1502 | "optical-audio-fill": 63208, 1503 | "optical-audio": 63209, 1504 | "pci-card": 63210, 1505 | "router-fill": 63211, 1506 | "router": 63212, 1507 | "thunderbolt-fill": 63215, 1508 | "thunderbolt": 63216, 1509 | "usb-drive-fill": 63217, 1510 | "usb-drive": 63218, 1511 | "usb-micro-fill": 63219, 1512 | "usb-micro": 63220, 1513 | "usb-mini-fill": 63221, 1514 | "usb-mini": 63222, 1515 | "cloud-haze2": 63223, 1516 | "device-hdd-fill": 63224, 1517 | "device-hdd": 63225, 1518 | "device-ssd-fill": 63226, 1519 | "device-ssd": 63227, 1520 | "displayport-fill": 63228, 1521 | "mortarboard-fill": 63229, 1522 | "mortarboard": 63230, 1523 | "terminal-x": 63231, 1524 | "arrow-through-heart-fill": 63232, 1525 | "arrow-through-heart": 63233, 1526 | "badge-sd-fill": 63234, 1527 | "badge-sd": 63235, 1528 | "bag-heart-fill": 63236, 1529 | "bag-heart": 63237, 1530 | "balloon-fill": 63238, 1531 | "balloon-heart-fill": 63239, 1532 | "balloon-heart": 63240, 1533 | "balloon": 63241, 1534 | "box2-fill": 63242, 1535 | "box2-heart-fill": 63243, 1536 | "box2-heart": 63244, 1537 | "box2": 63245, 1538 | "braces-asterisk": 63246, 1539 | "calendar-heart-fill": 63247, 1540 | "calendar-heart": 63248, 1541 | "calendar2-heart-fill": 63249, 1542 | "calendar2-heart": 63250, 1543 | "chat-heart-fill": 63251, 1544 | "chat-heart": 63252, 1545 | "chat-left-heart-fill": 63253, 1546 | "chat-left-heart": 63254, 1547 | "chat-right-heart-fill": 63255, 1548 | "chat-right-heart": 63256, 1549 | "chat-square-heart-fill": 63257, 1550 | "chat-square-heart": 63258, 1551 | "clipboard-check-fill": 63259, 1552 | "clipboard-data-fill": 63260, 1553 | "clipboard-fill": 63261, 1554 | "clipboard-heart-fill": 63262, 1555 | "clipboard-heart": 63263, 1556 | "clipboard-minus-fill": 63264, 1557 | "clipboard-plus-fill": 63265, 1558 | "clipboard-pulse": 63266, 1559 | "clipboard-x-fill": 63267, 1560 | "clipboard2-check-fill": 63268, 1561 | "clipboard2-check": 63269, 1562 | "clipboard2-data-fill": 63270, 1563 | "clipboard2-data": 63271, 1564 | "clipboard2-fill": 63272, 1565 | "clipboard2-heart-fill": 63273, 1566 | "clipboard2-heart": 63274, 1567 | "clipboard2-minus-fill": 63275, 1568 | "clipboard2-minus": 63276, 1569 | "clipboard2-plus-fill": 63277, 1570 | "clipboard2-plus": 63278, 1571 | "clipboard2-pulse-fill": 63279, 1572 | "clipboard2-pulse": 63280, 1573 | "clipboard2-x-fill": 63281, 1574 | "clipboard2-x": 63282, 1575 | "clipboard2": 63283, 1576 | "emoji-kiss-fill": 63284, 1577 | "emoji-kiss": 63285, 1578 | "envelope-heart-fill": 63286, 1579 | "envelope-heart": 63287, 1580 | "envelope-open-heart-fill": 63288, 1581 | "envelope-open-heart": 63289, 1582 | "envelope-paper-fill": 63290, 1583 | "envelope-paper-heart-fill": 63291, 1584 | "envelope-paper-heart": 63292, 1585 | "envelope-paper": 63293, 1586 | "filetype-aac": 63294, 1587 | "filetype-ai": 63295, 1588 | "filetype-bmp": 63296, 1589 | "filetype-cs": 63297, 1590 | "filetype-css": 63298, 1591 | "filetype-csv": 63299, 1592 | "filetype-doc": 63300, 1593 | "filetype-docx": 63301, 1594 | "filetype-exe": 63302, 1595 | "filetype-gif": 63303, 1596 | "filetype-heic": 63304, 1597 | "filetype-html": 63305, 1598 | "filetype-java": 63306, 1599 | "filetype-jpg": 63307, 1600 | "filetype-js": 63308, 1601 | "filetype-jsx": 63309, 1602 | "filetype-key": 63310, 1603 | "filetype-m4p": 63311, 1604 | "filetype-md": 63312, 1605 | "filetype-mdx": 63313, 1606 | "filetype-mov": 63314, 1607 | "filetype-mp3": 63315, 1608 | "filetype-mp4": 63316, 1609 | "filetype-otf": 63317, 1610 | "filetype-pdf": 63318, 1611 | "filetype-php": 63319, 1612 | "filetype-png": 63320, 1613 | "filetype-ppt": 63322, 1614 | "filetype-psd": 63323, 1615 | "filetype-py": 63324, 1616 | "filetype-raw": 63325, 1617 | "filetype-rb": 63326, 1618 | "filetype-sass": 63327, 1619 | "filetype-scss": 63328, 1620 | "filetype-sh": 63329, 1621 | "filetype-svg": 63330, 1622 | "filetype-tiff": 63331, 1623 | "filetype-tsx": 63332, 1624 | "filetype-ttf": 63333, 1625 | "filetype-txt": 63334, 1626 | "filetype-wav": 63335, 1627 | "filetype-woff": 63336, 1628 | "filetype-xls": 63338, 1629 | "filetype-xml": 63339, 1630 | "filetype-yml": 63340, 1631 | "heart-arrow": 63341, 1632 | "heart-pulse-fill": 63342, 1633 | "heart-pulse": 63343, 1634 | "heartbreak-fill": 63344, 1635 | "heartbreak": 63345, 1636 | "hearts": 63346, 1637 | "hospital-fill": 63347, 1638 | "hospital": 63348, 1639 | "house-heart-fill": 63349, 1640 | "house-heart": 63350, 1641 | "incognito": 63351, 1642 | "magnet-fill": 63352, 1643 | "magnet": 63353, 1644 | "person-heart": 63354, 1645 | "person-hearts": 63355, 1646 | "phone-flip": 63356, 1647 | "plugin": 63357, 1648 | "postage-fill": 63358, 1649 | "postage-heart-fill": 63359, 1650 | "postage-heart": 63360, 1651 | "postage": 63361, 1652 | "postcard-fill": 63362, 1653 | "postcard-heart-fill": 63363, 1654 | "postcard-heart": 63364, 1655 | "postcard": 63365, 1656 | "search-heart-fill": 63366, 1657 | "search-heart": 63367, 1658 | "sliders2-vertical": 63368, 1659 | "sliders2": 63369, 1660 | "trash3-fill": 63370, 1661 | "trash3": 63371, 1662 | "valentine": 63372, 1663 | "valentine2": 63373, 1664 | "wrench-adjustable-circle-fill": 63374, 1665 | "wrench-adjustable-circle": 63375, 1666 | "wrench-adjustable": 63376, 1667 | "filetype-json": 63377, 1668 | "filetype-pptx": 63378, 1669 | "filetype-xlsx": 63379, 1670 | "1-circle-fill": 63382, 1671 | "1-circle": 63383, 1672 | "1-square-fill": 63384, 1673 | "1-square": 63385, 1674 | "2-circle-fill": 63388, 1675 | "2-circle": 63389, 1676 | "2-square-fill": 63390, 1677 | "2-square": 63391, 1678 | "3-circle-fill": 63394, 1679 | "3-circle": 63395, 1680 | "3-square-fill": 63396, 1681 | "3-square": 63397, 1682 | "4-circle-fill": 63400, 1683 | "4-circle": 63401, 1684 | "4-square-fill": 63402, 1685 | "4-square": 63403, 1686 | "5-circle-fill": 63406, 1687 | "5-circle": 63407, 1688 | "5-square-fill": 63408, 1689 | "5-square": 63409, 1690 | "6-circle-fill": 63412, 1691 | "6-circle": 63413, 1692 | "6-square-fill": 63414, 1693 | "6-square": 63415, 1694 | "7-circle-fill": 63418, 1695 | "7-circle": 63419, 1696 | "7-square-fill": 63420, 1697 | "7-square": 63421, 1698 | "8-circle-fill": 63424, 1699 | "8-circle": 63425, 1700 | "8-square-fill": 63426, 1701 | "8-square": 63427, 1702 | "9-circle-fill": 63430, 1703 | "9-circle": 63431, 1704 | "9-square-fill": 63432, 1705 | "9-square": 63433, 1706 | "airplane-engines-fill": 63434, 1707 | "airplane-engines": 63435, 1708 | "airplane-fill": 63436, 1709 | "airplane": 63437, 1710 | "alexa": 63438, 1711 | "alipay": 63439, 1712 | "android": 63440, 1713 | "android2": 63441, 1714 | "box-fill": 63442, 1715 | "box-seam-fill": 63443, 1716 | "browser-chrome": 63444, 1717 | "browser-edge": 63445, 1718 | "browser-firefox": 63446, 1719 | "browser-safari": 63447, 1720 | "c-circle-fill": 63450, 1721 | "c-circle": 63451, 1722 | "c-square-fill": 63452, 1723 | "c-square": 63453, 1724 | "capsule-pill": 63454, 1725 | "capsule": 63455, 1726 | "car-front-fill": 63456, 1727 | "car-front": 63457, 1728 | "cassette-fill": 63458, 1729 | "cassette": 63459, 1730 | "cc-circle-fill": 63462, 1731 | "cc-circle": 63463, 1732 | "cc-square-fill": 63464, 1733 | "cc-square": 63465, 1734 | "cup-hot-fill": 63466, 1735 | "cup-hot": 63467, 1736 | "currency-rupee": 63468, 1737 | "dropbox": 63469, 1738 | "escape": 63470, 1739 | "fast-forward-btn-fill": 63471, 1740 | "fast-forward-btn": 63472, 1741 | "fast-forward-circle-fill": 63473, 1742 | "fast-forward-circle": 63474, 1743 | "fast-forward-fill": 63475, 1744 | "fast-forward": 63476, 1745 | "filetype-sql": 63477, 1746 | "fire": 63478, 1747 | "google-play": 63479, 1748 | "h-circle-fill": 63482, 1749 | "h-circle": 63483, 1750 | "h-square-fill": 63484, 1751 | "h-square": 63485, 1752 | "indent": 63486, 1753 | "lungs-fill": 63487, 1754 | "lungs": 63488, 1755 | "microsoft-teams": 63489, 1756 | "p-circle-fill": 63492, 1757 | "p-circle": 63493, 1758 | "p-square-fill": 63494, 1759 | "p-square": 63495, 1760 | "pass-fill": 63496, 1761 | "pass": 63497, 1762 | "prescription": 63498, 1763 | "prescription2": 63499, 1764 | "r-circle-fill": 63502, 1765 | "r-circle": 63503, 1766 | "r-square-fill": 63504, 1767 | "r-square": 63505, 1768 | "repeat-1": 63506, 1769 | "repeat": 63507, 1770 | "rewind-btn-fill": 63508, 1771 | "rewind-btn": 63509, 1772 | "rewind-circle-fill": 63510, 1773 | "rewind-circle": 63511, 1774 | "rewind-fill": 63512, 1775 | "rewind": 63513, 1776 | "train-freight-front-fill": 63514, 1777 | "train-freight-front": 63515, 1778 | "train-front-fill": 63516, 1779 | "train-front": 63517, 1780 | "train-lightrail-front-fill": 63518, 1781 | "train-lightrail-front": 63519, 1782 | "truck-front-fill": 63520, 1783 | "truck-front": 63521, 1784 | "ubuntu": 63522, 1785 | "unindent": 63523, 1786 | "unity": 63524, 1787 | "universal-access-circle": 63525, 1788 | "universal-access": 63526, 1789 | "virus": 63527, 1790 | "virus2": 63528, 1791 | "wechat": 63529, 1792 | "yelp": 63530, 1793 | "sign-stop-fill": 63531, 1794 | "sign-stop-lights-fill": 63532, 1795 | "sign-stop-lights": 63533, 1796 | "sign-stop": 63534, 1797 | "sign-turn-left-fill": 63535, 1798 | "sign-turn-left": 63536, 1799 | "sign-turn-right-fill": 63537, 1800 | "sign-turn-right": 63538, 1801 | "sign-turn-slight-left-fill": 63539, 1802 | "sign-turn-slight-left": 63540, 1803 | "sign-turn-slight-right-fill": 63541, 1804 | "sign-turn-slight-right": 63542, 1805 | "sign-yield-fill": 63543, 1806 | "sign-yield": 63544, 1807 | "ev-station-fill": 63545, 1808 | "ev-station": 63546, 1809 | "fuel-pump-diesel-fill": 63547, 1810 | "fuel-pump-diesel": 63548, 1811 | "fuel-pump-fill": 63549, 1812 | "fuel-pump": 63550, 1813 | "0-circle-fill": 63551, 1814 | "0-circle": 63552, 1815 | "0-square-fill": 63553, 1816 | "0-square": 63554, 1817 | "rocket-fill": 63555, 1818 | "rocket-takeoff-fill": 63556, 1819 | "rocket-takeoff": 63557, 1820 | "rocket": 63558, 1821 | "stripe": 63559, 1822 | "subscript": 63560, 1823 | "superscript": 63561, 1824 | "trello": 63562, 1825 | "envelope-at-fill": 63563, 1826 | "envelope-at": 63564, 1827 | "regex": 63565, 1828 | "text-wrap": 63566, 1829 | "sign-dead-end-fill": 63567, 1830 | "sign-dead-end": 63568, 1831 | "sign-do-not-enter-fill": 63569, 1832 | "sign-do-not-enter": 63570, 1833 | "sign-intersection-fill": 63571, 1834 | "sign-intersection-side-fill": 63572, 1835 | "sign-intersection-side": 63573, 1836 | "sign-intersection-t-fill": 63574, 1837 | "sign-intersection-t": 63575, 1838 | "sign-intersection-y-fill": 63576, 1839 | "sign-intersection-y": 63577, 1840 | "sign-intersection": 63578, 1841 | "sign-merge-left-fill": 63579, 1842 | "sign-merge-left": 63580, 1843 | "sign-merge-right-fill": 63581, 1844 | "sign-merge-right": 63582, 1845 | "sign-no-left-turn-fill": 63583, 1846 | "sign-no-left-turn": 63584, 1847 | "sign-no-parking-fill": 63585, 1848 | "sign-no-parking": 63586, 1849 | "sign-no-right-turn-fill": 63587, 1850 | "sign-no-right-turn": 63588, 1851 | "sign-railroad-fill": 63589, 1852 | "sign-railroad": 63590, 1853 | "building-add": 63591, 1854 | "building-check": 63592, 1855 | "building-dash": 63593, 1856 | "building-down": 63594, 1857 | "building-exclamation": 63595, 1858 | "building-fill-add": 63596, 1859 | "building-fill-check": 63597, 1860 | "building-fill-dash": 63598, 1861 | "building-fill-down": 63599, 1862 | "building-fill-exclamation": 63600, 1863 | "building-fill-gear": 63601, 1864 | "building-fill-lock": 63602, 1865 | "building-fill-slash": 63603, 1866 | "building-fill-up": 63604, 1867 | "building-fill-x": 63605, 1868 | "building-fill": 63606, 1869 | "building-gear": 63607, 1870 | "building-lock": 63608, 1871 | "building-slash": 63609, 1872 | "building-up": 63610, 1873 | "building-x": 63611, 1874 | "buildings-fill": 63612, 1875 | "buildings": 63613, 1876 | "bus-front-fill": 63614, 1877 | "bus-front": 63615, 1878 | "ev-front-fill": 63616, 1879 | "ev-front": 63617, 1880 | "globe-americas": 63618, 1881 | "globe-asia-australia": 63619, 1882 | "globe-central-south-asia": 63620, 1883 | "globe-europe-africa": 63621, 1884 | "house-add-fill": 63622, 1885 | "house-add": 63623, 1886 | "house-check-fill": 63624, 1887 | "house-check": 63625, 1888 | "house-dash-fill": 63626, 1889 | "house-dash": 63627, 1890 | "house-down-fill": 63628, 1891 | "house-down": 63629, 1892 | "house-exclamation-fill": 63630, 1893 | "house-exclamation": 63631, 1894 | "house-gear-fill": 63632, 1895 | "house-gear": 63633, 1896 | "house-lock-fill": 63634, 1897 | "house-lock": 63635, 1898 | "house-slash-fill": 63636, 1899 | "house-slash": 63637, 1900 | "house-up-fill": 63638, 1901 | "house-up": 63639, 1902 | "house-x-fill": 63640, 1903 | "house-x": 63641, 1904 | "person-add": 63642, 1905 | "person-down": 63643, 1906 | "person-exclamation": 63644, 1907 | "person-fill-add": 63645, 1908 | "person-fill-check": 63646, 1909 | "person-fill-dash": 63647, 1910 | "person-fill-down": 63648, 1911 | "person-fill-exclamation": 63649, 1912 | "person-fill-gear": 63650, 1913 | "person-fill-lock": 63651, 1914 | "person-fill-slash": 63652, 1915 | "person-fill-up": 63653, 1916 | "person-fill-x": 63654, 1917 | "person-gear": 63655, 1918 | "person-lock": 63656, 1919 | "person-slash": 63657, 1920 | "person-up": 63658, 1921 | "scooter": 63659, 1922 | "taxi-front-fill": 63660, 1923 | "taxi-front": 63661, 1924 | "amd": 63662, 1925 | "database-add": 63663, 1926 | "database-check": 63664, 1927 | "database-dash": 63665, 1928 | "database-down": 63666, 1929 | "database-exclamation": 63667, 1930 | "database-fill-add": 63668, 1931 | "database-fill-check": 63669, 1932 | "database-fill-dash": 63670, 1933 | "database-fill-down": 63671, 1934 | "database-fill-exclamation": 63672, 1935 | "database-fill-gear": 63673, 1936 | "database-fill-lock": 63674, 1937 | "database-fill-slash": 63675, 1938 | "database-fill-up": 63676, 1939 | "database-fill-x": 63677, 1940 | "database-fill": 63678, 1941 | "database-gear": 63679, 1942 | "database-lock": 63680, 1943 | "database-slash": 63681, 1944 | "database-up": 63682, 1945 | "database-x": 63683, 1946 | "database": 63684, 1947 | "houses-fill": 63685, 1948 | "houses": 63686, 1949 | "nvidia": 63687, 1950 | "person-vcard-fill": 63688, 1951 | "person-vcard": 63689, 1952 | "sina-weibo": 63690, 1953 | "tencent-qq": 63691, 1954 | "wikipedia": 63692 1955 | } -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/css/bootstrap-icons/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/css/bootstrap-icons/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/css/bootstrap-icons/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/css/bootstrap-icons/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/favicon.png -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/fonts/bootstrap-icons.json: -------------------------------------------------------------------------------- 1 | { 2 | "123": 63103, 3 | "alarm-fill": 61697, 4 | "alarm": 61698, 5 | "align-bottom": 61699, 6 | "align-center": 61700, 7 | "align-end": 61701, 8 | "align-middle": 61702, 9 | "align-start": 61703, 10 | "align-top": 61704, 11 | "alt": 61705, 12 | "app-indicator": 61706, 13 | "app": 61707, 14 | "archive-fill": 61708, 15 | "archive": 61709, 16 | "arrow-90deg-down": 61710, 17 | "arrow-90deg-left": 61711, 18 | "arrow-90deg-right": 61712, 19 | "arrow-90deg-up": 61713, 20 | "arrow-bar-down": 61714, 21 | "arrow-bar-left": 61715, 22 | "arrow-bar-right": 61716, 23 | "arrow-bar-up": 61717, 24 | "arrow-clockwise": 61718, 25 | "arrow-counterclockwise": 61719, 26 | "arrow-down-circle-fill": 61720, 27 | "arrow-down-circle": 61721, 28 | "arrow-down-left-circle-fill": 61722, 29 | "arrow-down-left-circle": 61723, 30 | "arrow-down-left-square-fill": 61724, 31 | "arrow-down-left-square": 61725, 32 | "arrow-down-left": 61726, 33 | "arrow-down-right-circle-fill": 61727, 34 | "arrow-down-right-circle": 61728, 35 | "arrow-down-right-square-fill": 61729, 36 | "arrow-down-right-square": 61730, 37 | "arrow-down-right": 61731, 38 | "arrow-down-short": 61732, 39 | "arrow-down-square-fill": 61733, 40 | "arrow-down-square": 61734, 41 | "arrow-down-up": 61735, 42 | "arrow-down": 61736, 43 | "arrow-left-circle-fill": 61737, 44 | "arrow-left-circle": 61738, 45 | "arrow-left-right": 61739, 46 | "arrow-left-short": 61740, 47 | "arrow-left-square-fill": 61741, 48 | "arrow-left-square": 61742, 49 | "arrow-left": 61743, 50 | "arrow-repeat": 61744, 51 | "arrow-return-left": 61745, 52 | "arrow-return-right": 61746, 53 | "arrow-right-circle-fill": 61747, 54 | "arrow-right-circle": 61748, 55 | "arrow-right-short": 61749, 56 | "arrow-right-square-fill": 61750, 57 | "arrow-right-square": 61751, 58 | "arrow-right": 61752, 59 | "arrow-up-circle-fill": 61753, 60 | "arrow-up-circle": 61754, 61 | "arrow-up-left-circle-fill": 61755, 62 | "arrow-up-left-circle": 61756, 63 | "arrow-up-left-square-fill": 61757, 64 | "arrow-up-left-square": 61758, 65 | "arrow-up-left": 61759, 66 | "arrow-up-right-circle-fill": 61760, 67 | "arrow-up-right-circle": 61761, 68 | "arrow-up-right-square-fill": 61762, 69 | "arrow-up-right-square": 61763, 70 | "arrow-up-right": 61764, 71 | "arrow-up-short": 61765, 72 | "arrow-up-square-fill": 61766, 73 | "arrow-up-square": 61767, 74 | "arrow-up": 61768, 75 | "arrows-angle-contract": 61769, 76 | "arrows-angle-expand": 61770, 77 | "arrows-collapse": 61771, 78 | "arrows-expand": 61772, 79 | "arrows-fullscreen": 61773, 80 | "arrows-move": 61774, 81 | "aspect-ratio-fill": 61775, 82 | "aspect-ratio": 61776, 83 | "asterisk": 61777, 84 | "at": 61778, 85 | "award-fill": 61779, 86 | "award": 61780, 87 | "back": 61781, 88 | "backspace-fill": 61782, 89 | "backspace-reverse-fill": 61783, 90 | "backspace-reverse": 61784, 91 | "backspace": 61785, 92 | "badge-3d-fill": 61786, 93 | "badge-3d": 61787, 94 | "badge-4k-fill": 61788, 95 | "badge-4k": 61789, 96 | "badge-8k-fill": 61790, 97 | "badge-8k": 61791, 98 | "badge-ad-fill": 61792, 99 | "badge-ad": 61793, 100 | "badge-ar-fill": 61794, 101 | "badge-ar": 61795, 102 | "badge-cc-fill": 61796, 103 | "badge-cc": 61797, 104 | "badge-hd-fill": 61798, 105 | "badge-hd": 61799, 106 | "badge-tm-fill": 61800, 107 | "badge-tm": 61801, 108 | "badge-vo-fill": 61802, 109 | "badge-vo": 61803, 110 | "badge-vr-fill": 61804, 111 | "badge-vr": 61805, 112 | "badge-wc-fill": 61806, 113 | "badge-wc": 61807, 114 | "bag-check-fill": 61808, 115 | "bag-check": 61809, 116 | "bag-dash-fill": 61810, 117 | "bag-dash": 61811, 118 | "bag-fill": 61812, 119 | "bag-plus-fill": 61813, 120 | "bag-plus": 61814, 121 | "bag-x-fill": 61815, 122 | "bag-x": 61816, 123 | "bag": 61817, 124 | "bar-chart-fill": 61818, 125 | "bar-chart-line-fill": 61819, 126 | "bar-chart-line": 61820, 127 | "bar-chart-steps": 61821, 128 | "bar-chart": 61822, 129 | "basket-fill": 61823, 130 | "basket": 61824, 131 | "basket2-fill": 61825, 132 | "basket2": 61826, 133 | "basket3-fill": 61827, 134 | "basket3": 61828, 135 | "battery-charging": 61829, 136 | "battery-full": 61830, 137 | "battery-half": 61831, 138 | "battery": 61832, 139 | "bell-fill": 61833, 140 | "bell": 61834, 141 | "bezier": 61835, 142 | "bezier2": 61836, 143 | "bicycle": 61837, 144 | "binoculars-fill": 61838, 145 | "binoculars": 61839, 146 | "blockquote-left": 61840, 147 | "blockquote-right": 61841, 148 | "book-fill": 61842, 149 | "book-half": 61843, 150 | "book": 61844, 151 | "bookmark-check-fill": 61845, 152 | "bookmark-check": 61846, 153 | "bookmark-dash-fill": 61847, 154 | "bookmark-dash": 61848, 155 | "bookmark-fill": 61849, 156 | "bookmark-heart-fill": 61850, 157 | "bookmark-heart": 61851, 158 | "bookmark-plus-fill": 61852, 159 | "bookmark-plus": 61853, 160 | "bookmark-star-fill": 61854, 161 | "bookmark-star": 61855, 162 | "bookmark-x-fill": 61856, 163 | "bookmark-x": 61857, 164 | "bookmark": 61858, 165 | "bookmarks-fill": 61859, 166 | "bookmarks": 61860, 167 | "bookshelf": 61861, 168 | "bootstrap-fill": 61862, 169 | "bootstrap-reboot": 61863, 170 | "bootstrap": 61864, 171 | "border-all": 61865, 172 | "border-bottom": 61866, 173 | "border-center": 61867, 174 | "border-inner": 61868, 175 | "border-left": 61869, 176 | "border-middle": 61870, 177 | "border-outer": 61871, 178 | "border-right": 61872, 179 | "border-style": 61873, 180 | "border-top": 61874, 181 | "border-width": 61875, 182 | "border": 61876, 183 | "bounding-box-circles": 61877, 184 | "bounding-box": 61878, 185 | "box-arrow-down-left": 61879, 186 | "box-arrow-down-right": 61880, 187 | "box-arrow-down": 61881, 188 | "box-arrow-in-down-left": 61882, 189 | "box-arrow-in-down-right": 61883, 190 | "box-arrow-in-down": 61884, 191 | "box-arrow-in-left": 61885, 192 | "box-arrow-in-right": 61886, 193 | "box-arrow-in-up-left": 61887, 194 | "box-arrow-in-up-right": 61888, 195 | "box-arrow-in-up": 61889, 196 | "box-arrow-left": 61890, 197 | "box-arrow-right": 61891, 198 | "box-arrow-up-left": 61892, 199 | "box-arrow-up-right": 61893, 200 | "box-arrow-up": 61894, 201 | "box-seam": 61895, 202 | "box": 61896, 203 | "braces": 61897, 204 | "bricks": 61898, 205 | "briefcase-fill": 61899, 206 | "briefcase": 61900, 207 | "brightness-alt-high-fill": 61901, 208 | "brightness-alt-high": 61902, 209 | "brightness-alt-low-fill": 61903, 210 | "brightness-alt-low": 61904, 211 | "brightness-high-fill": 61905, 212 | "brightness-high": 61906, 213 | "brightness-low-fill": 61907, 214 | "brightness-low": 61908, 215 | "broadcast-pin": 61909, 216 | "broadcast": 61910, 217 | "brush-fill": 61911, 218 | "brush": 61912, 219 | "bucket-fill": 61913, 220 | "bucket": 61914, 221 | "bug-fill": 61915, 222 | "bug": 61916, 223 | "building": 61917, 224 | "bullseye": 61918, 225 | "calculator-fill": 61919, 226 | "calculator": 61920, 227 | "calendar-check-fill": 61921, 228 | "calendar-check": 61922, 229 | "calendar-date-fill": 61923, 230 | "calendar-date": 61924, 231 | "calendar-day-fill": 61925, 232 | "calendar-day": 61926, 233 | "calendar-event-fill": 61927, 234 | "calendar-event": 61928, 235 | "calendar-fill": 61929, 236 | "calendar-minus-fill": 61930, 237 | "calendar-minus": 61931, 238 | "calendar-month-fill": 61932, 239 | "calendar-month": 61933, 240 | "calendar-plus-fill": 61934, 241 | "calendar-plus": 61935, 242 | "calendar-range-fill": 61936, 243 | "calendar-range": 61937, 244 | "calendar-week-fill": 61938, 245 | "calendar-week": 61939, 246 | "calendar-x-fill": 61940, 247 | "calendar-x": 61941, 248 | "calendar": 61942, 249 | "calendar2-check-fill": 61943, 250 | "calendar2-check": 61944, 251 | "calendar2-date-fill": 61945, 252 | "calendar2-date": 61946, 253 | "calendar2-day-fill": 61947, 254 | "calendar2-day": 61948, 255 | "calendar2-event-fill": 61949, 256 | "calendar2-event": 61950, 257 | "calendar2-fill": 61951, 258 | "calendar2-minus-fill": 61952, 259 | "calendar2-minus": 61953, 260 | "calendar2-month-fill": 61954, 261 | "calendar2-month": 61955, 262 | "calendar2-plus-fill": 61956, 263 | "calendar2-plus": 61957, 264 | "calendar2-range-fill": 61958, 265 | "calendar2-range": 61959, 266 | "calendar2-week-fill": 61960, 267 | "calendar2-week": 61961, 268 | "calendar2-x-fill": 61962, 269 | "calendar2-x": 61963, 270 | "calendar2": 61964, 271 | "calendar3-event-fill": 61965, 272 | "calendar3-event": 61966, 273 | "calendar3-fill": 61967, 274 | "calendar3-range-fill": 61968, 275 | "calendar3-range": 61969, 276 | "calendar3-week-fill": 61970, 277 | "calendar3-week": 61971, 278 | "calendar3": 61972, 279 | "calendar4-event": 61973, 280 | "calendar4-range": 61974, 281 | "calendar4-week": 61975, 282 | "calendar4": 61976, 283 | "camera-fill": 61977, 284 | "camera-reels-fill": 61978, 285 | "camera-reels": 61979, 286 | "camera-video-fill": 61980, 287 | "camera-video-off-fill": 61981, 288 | "camera-video-off": 61982, 289 | "camera-video": 61983, 290 | "camera": 61984, 291 | "camera2": 61985, 292 | "capslock-fill": 61986, 293 | "capslock": 61987, 294 | "card-checklist": 61988, 295 | "card-heading": 61989, 296 | "card-image": 61990, 297 | "card-list": 61991, 298 | "card-text": 61992, 299 | "caret-down-fill": 61993, 300 | "caret-down-square-fill": 61994, 301 | "caret-down-square": 61995, 302 | "caret-down": 61996, 303 | "caret-left-fill": 61997, 304 | "caret-left-square-fill": 61998, 305 | "caret-left-square": 61999, 306 | "caret-left": 62000, 307 | "caret-right-fill": 62001, 308 | "caret-right-square-fill": 62002, 309 | "caret-right-square": 62003, 310 | "caret-right": 62004, 311 | "caret-up-fill": 62005, 312 | "caret-up-square-fill": 62006, 313 | "caret-up-square": 62007, 314 | "caret-up": 62008, 315 | "cart-check-fill": 62009, 316 | "cart-check": 62010, 317 | "cart-dash-fill": 62011, 318 | "cart-dash": 62012, 319 | "cart-fill": 62013, 320 | "cart-plus-fill": 62014, 321 | "cart-plus": 62015, 322 | "cart-x-fill": 62016, 323 | "cart-x": 62017, 324 | "cart": 62018, 325 | "cart2": 62019, 326 | "cart3": 62020, 327 | "cart4": 62021, 328 | "cash-stack": 62022, 329 | "cash": 62023, 330 | "cast": 62024, 331 | "chat-dots-fill": 62025, 332 | "chat-dots": 62026, 333 | "chat-fill": 62027, 334 | "chat-left-dots-fill": 62028, 335 | "chat-left-dots": 62029, 336 | "chat-left-fill": 62030, 337 | "chat-left-quote-fill": 62031, 338 | "chat-left-quote": 62032, 339 | "chat-left-text-fill": 62033, 340 | "chat-left-text": 62034, 341 | "chat-left": 62035, 342 | "chat-quote-fill": 62036, 343 | "chat-quote": 62037, 344 | "chat-right-dots-fill": 62038, 345 | "chat-right-dots": 62039, 346 | "chat-right-fill": 62040, 347 | "chat-right-quote-fill": 62041, 348 | "chat-right-quote": 62042, 349 | "chat-right-text-fill": 62043, 350 | "chat-right-text": 62044, 351 | "chat-right": 62045, 352 | "chat-square-dots-fill": 62046, 353 | "chat-square-dots": 62047, 354 | "chat-square-fill": 62048, 355 | "chat-square-quote-fill": 62049, 356 | "chat-square-quote": 62050, 357 | "chat-square-text-fill": 62051, 358 | "chat-square-text": 62052, 359 | "chat-square": 62053, 360 | "chat-text-fill": 62054, 361 | "chat-text": 62055, 362 | "chat": 62056, 363 | "check-all": 62057, 364 | "check-circle-fill": 62058, 365 | "check-circle": 62059, 366 | "check-square-fill": 62060, 367 | "check-square": 62061, 368 | "check": 62062, 369 | "check2-all": 62063, 370 | "check2-circle": 62064, 371 | "check2-square": 62065, 372 | "check2": 62066, 373 | "chevron-bar-contract": 62067, 374 | "chevron-bar-down": 62068, 375 | "chevron-bar-expand": 62069, 376 | "chevron-bar-left": 62070, 377 | "chevron-bar-right": 62071, 378 | "chevron-bar-up": 62072, 379 | "chevron-compact-down": 62073, 380 | "chevron-compact-left": 62074, 381 | "chevron-compact-right": 62075, 382 | "chevron-compact-up": 62076, 383 | "chevron-contract": 62077, 384 | "chevron-double-down": 62078, 385 | "chevron-double-left": 62079, 386 | "chevron-double-right": 62080, 387 | "chevron-double-up": 62081, 388 | "chevron-down": 62082, 389 | "chevron-expand": 62083, 390 | "chevron-left": 62084, 391 | "chevron-right": 62085, 392 | "chevron-up": 62086, 393 | "circle-fill": 62087, 394 | "circle-half": 62088, 395 | "circle-square": 62089, 396 | "circle": 62090, 397 | "clipboard-check": 62091, 398 | "clipboard-data": 62092, 399 | "clipboard-minus": 62093, 400 | "clipboard-plus": 62094, 401 | "clipboard-x": 62095, 402 | "clipboard": 62096, 403 | "clock-fill": 62097, 404 | "clock-history": 62098, 405 | "clock": 62099, 406 | "cloud-arrow-down-fill": 62100, 407 | "cloud-arrow-down": 62101, 408 | "cloud-arrow-up-fill": 62102, 409 | "cloud-arrow-up": 62103, 410 | "cloud-check-fill": 62104, 411 | "cloud-check": 62105, 412 | "cloud-download-fill": 62106, 413 | "cloud-download": 62107, 414 | "cloud-drizzle-fill": 62108, 415 | "cloud-drizzle": 62109, 416 | "cloud-fill": 62110, 417 | "cloud-fog-fill": 62111, 418 | "cloud-fog": 62112, 419 | "cloud-fog2-fill": 62113, 420 | "cloud-fog2": 62114, 421 | "cloud-hail-fill": 62115, 422 | "cloud-hail": 62116, 423 | "cloud-haze-fill": 62118, 424 | "cloud-haze": 62119, 425 | "cloud-haze2-fill": 62120, 426 | "cloud-lightning-fill": 62121, 427 | "cloud-lightning-rain-fill": 62122, 428 | "cloud-lightning-rain": 62123, 429 | "cloud-lightning": 62124, 430 | "cloud-minus-fill": 62125, 431 | "cloud-minus": 62126, 432 | "cloud-moon-fill": 62127, 433 | "cloud-moon": 62128, 434 | "cloud-plus-fill": 62129, 435 | "cloud-plus": 62130, 436 | "cloud-rain-fill": 62131, 437 | "cloud-rain-heavy-fill": 62132, 438 | "cloud-rain-heavy": 62133, 439 | "cloud-rain": 62134, 440 | "cloud-slash-fill": 62135, 441 | "cloud-slash": 62136, 442 | "cloud-sleet-fill": 62137, 443 | "cloud-sleet": 62138, 444 | "cloud-snow-fill": 62139, 445 | "cloud-snow": 62140, 446 | "cloud-sun-fill": 62141, 447 | "cloud-sun": 62142, 448 | "cloud-upload-fill": 62143, 449 | "cloud-upload": 62144, 450 | "cloud": 62145, 451 | "clouds-fill": 62146, 452 | "clouds": 62147, 453 | "cloudy-fill": 62148, 454 | "cloudy": 62149, 455 | "code-slash": 62150, 456 | "code-square": 62151, 457 | "code": 62152, 458 | "collection-fill": 62153, 459 | "collection-play-fill": 62154, 460 | "collection-play": 62155, 461 | "collection": 62156, 462 | "columns-gap": 62157, 463 | "columns": 62158, 464 | "command": 62159, 465 | "compass-fill": 62160, 466 | "compass": 62161, 467 | "cone-striped": 62162, 468 | "cone": 62163, 469 | "controller": 62164, 470 | "cpu-fill": 62165, 471 | "cpu": 62166, 472 | "credit-card-2-back-fill": 62167, 473 | "credit-card-2-back": 62168, 474 | "credit-card-2-front-fill": 62169, 475 | "credit-card-2-front": 62170, 476 | "credit-card-fill": 62171, 477 | "credit-card": 62172, 478 | "crop": 62173, 479 | "cup-fill": 62174, 480 | "cup-straw": 62175, 481 | "cup": 62176, 482 | "cursor-fill": 62177, 483 | "cursor-text": 62178, 484 | "cursor": 62179, 485 | "dash-circle-dotted": 62180, 486 | "dash-circle-fill": 62181, 487 | "dash-circle": 62182, 488 | "dash-square-dotted": 62183, 489 | "dash-square-fill": 62184, 490 | "dash-square": 62185, 491 | "dash": 62186, 492 | "diagram-2-fill": 62187, 493 | "diagram-2": 62188, 494 | "diagram-3-fill": 62189, 495 | "diagram-3": 62190, 496 | "diamond-fill": 62191, 497 | "diamond-half": 62192, 498 | "diamond": 62193, 499 | "dice-1-fill": 62194, 500 | "dice-1": 62195, 501 | "dice-2-fill": 62196, 502 | "dice-2": 62197, 503 | "dice-3-fill": 62198, 504 | "dice-3": 62199, 505 | "dice-4-fill": 62200, 506 | "dice-4": 62201, 507 | "dice-5-fill": 62202, 508 | "dice-5": 62203, 509 | "dice-6-fill": 62204, 510 | "dice-6": 62205, 511 | "disc-fill": 62206, 512 | "disc": 62207, 513 | "discord": 62208, 514 | "display-fill": 62209, 515 | "display": 62210, 516 | "distribute-horizontal": 62211, 517 | "distribute-vertical": 62212, 518 | "door-closed-fill": 62213, 519 | "door-closed": 62214, 520 | "door-open-fill": 62215, 521 | "door-open": 62216, 522 | "dot": 62217, 523 | "download": 62218, 524 | "droplet-fill": 62219, 525 | "droplet-half": 62220, 526 | "droplet": 62221, 527 | "earbuds": 62222, 528 | "easel-fill": 62223, 529 | "easel": 62224, 530 | "egg-fill": 62225, 531 | "egg-fried": 62226, 532 | "egg": 62227, 533 | "eject-fill": 62228, 534 | "eject": 62229, 535 | "emoji-angry-fill": 62230, 536 | "emoji-angry": 62231, 537 | "emoji-dizzy-fill": 62232, 538 | "emoji-dizzy": 62233, 539 | "emoji-expressionless-fill": 62234, 540 | "emoji-expressionless": 62235, 541 | "emoji-frown-fill": 62236, 542 | "emoji-frown": 62237, 543 | "emoji-heart-eyes-fill": 62238, 544 | "emoji-heart-eyes": 62239, 545 | "emoji-laughing-fill": 62240, 546 | "emoji-laughing": 62241, 547 | "emoji-neutral-fill": 62242, 548 | "emoji-neutral": 62243, 549 | "emoji-smile-fill": 62244, 550 | "emoji-smile-upside-down-fill": 62245, 551 | "emoji-smile-upside-down": 62246, 552 | "emoji-smile": 62247, 553 | "emoji-sunglasses-fill": 62248, 554 | "emoji-sunglasses": 62249, 555 | "emoji-wink-fill": 62250, 556 | "emoji-wink": 62251, 557 | "envelope-fill": 62252, 558 | "envelope-open-fill": 62253, 559 | "envelope-open": 62254, 560 | "envelope": 62255, 561 | "eraser-fill": 62256, 562 | "eraser": 62257, 563 | "exclamation-circle-fill": 62258, 564 | "exclamation-circle": 62259, 565 | "exclamation-diamond-fill": 62260, 566 | "exclamation-diamond": 62261, 567 | "exclamation-octagon-fill": 62262, 568 | "exclamation-octagon": 62263, 569 | "exclamation-square-fill": 62264, 570 | "exclamation-square": 62265, 571 | "exclamation-triangle-fill": 62266, 572 | "exclamation-triangle": 62267, 573 | "exclamation": 62268, 574 | "exclude": 62269, 575 | "eye-fill": 62270, 576 | "eye-slash-fill": 62271, 577 | "eye-slash": 62272, 578 | "eye": 62273, 579 | "eyedropper": 62274, 580 | "eyeglasses": 62275, 581 | "facebook": 62276, 582 | "file-arrow-down-fill": 62277, 583 | "file-arrow-down": 62278, 584 | "file-arrow-up-fill": 62279, 585 | "file-arrow-up": 62280, 586 | "file-bar-graph-fill": 62281, 587 | "file-bar-graph": 62282, 588 | "file-binary-fill": 62283, 589 | "file-binary": 62284, 590 | "file-break-fill": 62285, 591 | "file-break": 62286, 592 | "file-check-fill": 62287, 593 | "file-check": 62288, 594 | "file-code-fill": 62289, 595 | "file-code": 62290, 596 | "file-diff-fill": 62291, 597 | "file-diff": 62292, 598 | "file-earmark-arrow-down-fill": 62293, 599 | "file-earmark-arrow-down": 62294, 600 | "file-earmark-arrow-up-fill": 62295, 601 | "file-earmark-arrow-up": 62296, 602 | "file-earmark-bar-graph-fill": 62297, 603 | "file-earmark-bar-graph": 62298, 604 | "file-earmark-binary-fill": 62299, 605 | "file-earmark-binary": 62300, 606 | "file-earmark-break-fill": 62301, 607 | "file-earmark-break": 62302, 608 | "file-earmark-check-fill": 62303, 609 | "file-earmark-check": 62304, 610 | "file-earmark-code-fill": 62305, 611 | "file-earmark-code": 62306, 612 | "file-earmark-diff-fill": 62307, 613 | "file-earmark-diff": 62308, 614 | "file-earmark-easel-fill": 62309, 615 | "file-earmark-easel": 62310, 616 | "file-earmark-excel-fill": 62311, 617 | "file-earmark-excel": 62312, 618 | "file-earmark-fill": 62313, 619 | "file-earmark-font-fill": 62314, 620 | "file-earmark-font": 62315, 621 | "file-earmark-image-fill": 62316, 622 | "file-earmark-image": 62317, 623 | "file-earmark-lock-fill": 62318, 624 | "file-earmark-lock": 62319, 625 | "file-earmark-lock2-fill": 62320, 626 | "file-earmark-lock2": 62321, 627 | "file-earmark-medical-fill": 62322, 628 | "file-earmark-medical": 62323, 629 | "file-earmark-minus-fill": 62324, 630 | "file-earmark-minus": 62325, 631 | "file-earmark-music-fill": 62326, 632 | "file-earmark-music": 62327, 633 | "file-earmark-person-fill": 62328, 634 | "file-earmark-person": 62329, 635 | "file-earmark-play-fill": 62330, 636 | "file-earmark-play": 62331, 637 | "file-earmark-plus-fill": 62332, 638 | "file-earmark-plus": 62333, 639 | "file-earmark-post-fill": 62334, 640 | "file-earmark-post": 62335, 641 | "file-earmark-ppt-fill": 62336, 642 | "file-earmark-ppt": 62337, 643 | "file-earmark-richtext-fill": 62338, 644 | "file-earmark-richtext": 62339, 645 | "file-earmark-ruled-fill": 62340, 646 | "file-earmark-ruled": 62341, 647 | "file-earmark-slides-fill": 62342, 648 | "file-earmark-slides": 62343, 649 | "file-earmark-spreadsheet-fill": 62344, 650 | "file-earmark-spreadsheet": 62345, 651 | "file-earmark-text-fill": 62346, 652 | "file-earmark-text": 62347, 653 | "file-earmark-word-fill": 62348, 654 | "file-earmark-word": 62349, 655 | "file-earmark-x-fill": 62350, 656 | "file-earmark-x": 62351, 657 | "file-earmark-zip-fill": 62352, 658 | "file-earmark-zip": 62353, 659 | "file-earmark": 62354, 660 | "file-easel-fill": 62355, 661 | "file-easel": 62356, 662 | "file-excel-fill": 62357, 663 | "file-excel": 62358, 664 | "file-fill": 62359, 665 | "file-font-fill": 62360, 666 | "file-font": 62361, 667 | "file-image-fill": 62362, 668 | "file-image": 62363, 669 | "file-lock-fill": 62364, 670 | "file-lock": 62365, 671 | "file-lock2-fill": 62366, 672 | "file-lock2": 62367, 673 | "file-medical-fill": 62368, 674 | "file-medical": 62369, 675 | "file-minus-fill": 62370, 676 | "file-minus": 62371, 677 | "file-music-fill": 62372, 678 | "file-music": 62373, 679 | "file-person-fill": 62374, 680 | "file-person": 62375, 681 | "file-play-fill": 62376, 682 | "file-play": 62377, 683 | "file-plus-fill": 62378, 684 | "file-plus": 62379, 685 | "file-post-fill": 62380, 686 | "file-post": 62381, 687 | "file-ppt-fill": 62382, 688 | "file-ppt": 62383, 689 | "file-richtext-fill": 62384, 690 | "file-richtext": 62385, 691 | "file-ruled-fill": 62386, 692 | "file-ruled": 62387, 693 | "file-slides-fill": 62388, 694 | "file-slides": 62389, 695 | "file-spreadsheet-fill": 62390, 696 | "file-spreadsheet": 62391, 697 | "file-text-fill": 62392, 698 | "file-text": 62393, 699 | "file-word-fill": 62394, 700 | "file-word": 62395, 701 | "file-x-fill": 62396, 702 | "file-x": 62397, 703 | "file-zip-fill": 62398, 704 | "file-zip": 62399, 705 | "file": 62400, 706 | "files-alt": 62401, 707 | "files": 62402, 708 | "film": 62403, 709 | "filter-circle-fill": 62404, 710 | "filter-circle": 62405, 711 | "filter-left": 62406, 712 | "filter-right": 62407, 713 | "filter-square-fill": 62408, 714 | "filter-square": 62409, 715 | "filter": 62410, 716 | "flag-fill": 62411, 717 | "flag": 62412, 718 | "flower1": 62413, 719 | "flower2": 62414, 720 | "flower3": 62415, 721 | "folder-check": 62416, 722 | "folder-fill": 62417, 723 | "folder-minus": 62418, 724 | "folder-plus": 62419, 725 | "folder-symlink-fill": 62420, 726 | "folder-symlink": 62421, 727 | "folder-x": 62422, 728 | "folder": 62423, 729 | "folder2-open": 62424, 730 | "folder2": 62425, 731 | "fonts": 62426, 732 | "forward-fill": 62427, 733 | "forward": 62428, 734 | "front": 62429, 735 | "fullscreen-exit": 62430, 736 | "fullscreen": 62431, 737 | "funnel-fill": 62432, 738 | "funnel": 62433, 739 | "gear-fill": 62434, 740 | "gear-wide-connected": 62435, 741 | "gear-wide": 62436, 742 | "gear": 62437, 743 | "gem": 62438, 744 | "geo-alt-fill": 62439, 745 | "geo-alt": 62440, 746 | "geo-fill": 62441, 747 | "geo": 62442, 748 | "gift-fill": 62443, 749 | "gift": 62444, 750 | "github": 62445, 751 | "globe": 62446, 752 | "globe2": 62447, 753 | "google": 62448, 754 | "graph-down": 62449, 755 | "graph-up": 62450, 756 | "grid-1x2-fill": 62451, 757 | "grid-1x2": 62452, 758 | "grid-3x2-gap-fill": 62453, 759 | "grid-3x2-gap": 62454, 760 | "grid-3x2": 62455, 761 | "grid-3x3-gap-fill": 62456, 762 | "grid-3x3-gap": 62457, 763 | "grid-3x3": 62458, 764 | "grid-fill": 62459, 765 | "grid": 62460, 766 | "grip-horizontal": 62461, 767 | "grip-vertical": 62462, 768 | "hammer": 62463, 769 | "hand-index-fill": 62464, 770 | "hand-index-thumb-fill": 62465, 771 | "hand-index-thumb": 62466, 772 | "hand-index": 62467, 773 | "hand-thumbs-down-fill": 62468, 774 | "hand-thumbs-down": 62469, 775 | "hand-thumbs-up-fill": 62470, 776 | "hand-thumbs-up": 62471, 777 | "handbag-fill": 62472, 778 | "handbag": 62473, 779 | "hash": 62474, 780 | "hdd-fill": 62475, 781 | "hdd-network-fill": 62476, 782 | "hdd-network": 62477, 783 | "hdd-rack-fill": 62478, 784 | "hdd-rack": 62479, 785 | "hdd-stack-fill": 62480, 786 | "hdd-stack": 62481, 787 | "hdd": 62482, 788 | "headphones": 62483, 789 | "headset": 62484, 790 | "heart-fill": 62485, 791 | "heart-half": 62486, 792 | "heart": 62487, 793 | "heptagon-fill": 62488, 794 | "heptagon-half": 62489, 795 | "heptagon": 62490, 796 | "hexagon-fill": 62491, 797 | "hexagon-half": 62492, 798 | "hexagon": 62493, 799 | "hourglass-bottom": 62494, 800 | "hourglass-split": 62495, 801 | "hourglass-top": 62496, 802 | "hourglass": 62497, 803 | "house-door-fill": 62498, 804 | "house-door": 62499, 805 | "house-fill": 62500, 806 | "house": 62501, 807 | "hr": 62502, 808 | "hurricane": 62503, 809 | "image-alt": 62504, 810 | "image-fill": 62505, 811 | "image": 62506, 812 | "images": 62507, 813 | "inbox-fill": 62508, 814 | "inbox": 62509, 815 | "inboxes-fill": 62510, 816 | "inboxes": 62511, 817 | "info-circle-fill": 62512, 818 | "info-circle": 62513, 819 | "info-square-fill": 62514, 820 | "info-square": 62515, 821 | "info": 62516, 822 | "input-cursor-text": 62517, 823 | "input-cursor": 62518, 824 | "instagram": 62519, 825 | "intersect": 62520, 826 | "journal-album": 62521, 827 | "journal-arrow-down": 62522, 828 | "journal-arrow-up": 62523, 829 | "journal-bookmark-fill": 62524, 830 | "journal-bookmark": 62525, 831 | "journal-check": 62526, 832 | "journal-code": 62527, 833 | "journal-medical": 62528, 834 | "journal-minus": 62529, 835 | "journal-plus": 62530, 836 | "journal-richtext": 62531, 837 | "journal-text": 62532, 838 | "journal-x": 62533, 839 | "journal": 62534, 840 | "journals": 62535, 841 | "joystick": 62536, 842 | "justify-left": 62537, 843 | "justify-right": 62538, 844 | "justify": 62539, 845 | "kanban-fill": 62540, 846 | "kanban": 62541, 847 | "key-fill": 62542, 848 | "key": 62543, 849 | "keyboard-fill": 62544, 850 | "keyboard": 62545, 851 | "ladder": 62546, 852 | "lamp-fill": 62547, 853 | "lamp": 62548, 854 | "laptop-fill": 62549, 855 | "laptop": 62550, 856 | "layer-backward": 62551, 857 | "layer-forward": 62552, 858 | "layers-fill": 62553, 859 | "layers-half": 62554, 860 | "layers": 62555, 861 | "layout-sidebar-inset-reverse": 62556, 862 | "layout-sidebar-inset": 62557, 863 | "layout-sidebar-reverse": 62558, 864 | "layout-sidebar": 62559, 865 | "layout-split": 62560, 866 | "layout-text-sidebar-reverse": 62561, 867 | "layout-text-sidebar": 62562, 868 | "layout-text-window-reverse": 62563, 869 | "layout-text-window": 62564, 870 | "layout-three-columns": 62565, 871 | "layout-wtf": 62566, 872 | "life-preserver": 62567, 873 | "lightbulb-fill": 62568, 874 | "lightbulb-off-fill": 62569, 875 | "lightbulb-off": 62570, 876 | "lightbulb": 62571, 877 | "lightning-charge-fill": 62572, 878 | "lightning-charge": 62573, 879 | "lightning-fill": 62574, 880 | "lightning": 62575, 881 | "link-45deg": 62576, 882 | "link": 62577, 883 | "linkedin": 62578, 884 | "list-check": 62579, 885 | "list-nested": 62580, 886 | "list-ol": 62581, 887 | "list-stars": 62582, 888 | "list-task": 62583, 889 | "list-ul": 62584, 890 | "list": 62585, 891 | "lock-fill": 62586, 892 | "lock": 62587, 893 | "mailbox": 62588, 894 | "mailbox2": 62589, 895 | "map-fill": 62590, 896 | "map": 62591, 897 | "markdown-fill": 62592, 898 | "markdown": 62593, 899 | "mask": 62594, 900 | "megaphone-fill": 62595, 901 | "megaphone": 62596, 902 | "menu-app-fill": 62597, 903 | "menu-app": 62598, 904 | "menu-button-fill": 62599, 905 | "menu-button-wide-fill": 62600, 906 | "menu-button-wide": 62601, 907 | "menu-button": 62602, 908 | "menu-down": 62603, 909 | "menu-up": 62604, 910 | "mic-fill": 62605, 911 | "mic-mute-fill": 62606, 912 | "mic-mute": 62607, 913 | "mic": 62608, 914 | "minecart-loaded": 62609, 915 | "minecart": 62610, 916 | "moisture": 62611, 917 | "moon-fill": 62612, 918 | "moon-stars-fill": 62613, 919 | "moon-stars": 62614, 920 | "moon": 62615, 921 | "mouse-fill": 62616, 922 | "mouse": 62617, 923 | "mouse2-fill": 62618, 924 | "mouse2": 62619, 925 | "mouse3-fill": 62620, 926 | "mouse3": 62621, 927 | "music-note-beamed": 62622, 928 | "music-note-list": 62623, 929 | "music-note": 62624, 930 | "music-player-fill": 62625, 931 | "music-player": 62626, 932 | "newspaper": 62627, 933 | "node-minus-fill": 62628, 934 | "node-minus": 62629, 935 | "node-plus-fill": 62630, 936 | "node-plus": 62631, 937 | "nut-fill": 62632, 938 | "nut": 62633, 939 | "octagon-fill": 62634, 940 | "octagon-half": 62635, 941 | "octagon": 62636, 942 | "option": 62637, 943 | "outlet": 62638, 944 | "paint-bucket": 62639, 945 | "palette-fill": 62640, 946 | "palette": 62641, 947 | "palette2": 62642, 948 | "paperclip": 62643, 949 | "paragraph": 62644, 950 | "patch-check-fill": 62645, 951 | "patch-check": 62646, 952 | "patch-exclamation-fill": 62647, 953 | "patch-exclamation": 62648, 954 | "patch-minus-fill": 62649, 955 | "patch-minus": 62650, 956 | "patch-plus-fill": 62651, 957 | "patch-plus": 62652, 958 | "patch-question-fill": 62653, 959 | "patch-question": 62654, 960 | "pause-btn-fill": 62655, 961 | "pause-btn": 62656, 962 | "pause-circle-fill": 62657, 963 | "pause-circle": 62658, 964 | "pause-fill": 62659, 965 | "pause": 62660, 966 | "peace-fill": 62661, 967 | "peace": 62662, 968 | "pen-fill": 62663, 969 | "pen": 62664, 970 | "pencil-fill": 62665, 971 | "pencil-square": 62666, 972 | "pencil": 62667, 973 | "pentagon-fill": 62668, 974 | "pentagon-half": 62669, 975 | "pentagon": 62670, 976 | "people-fill": 62671, 977 | "people": 62672, 978 | "percent": 62673, 979 | "person-badge-fill": 62674, 980 | "person-badge": 62675, 981 | "person-bounding-box": 62676, 982 | "person-check-fill": 62677, 983 | "person-check": 62678, 984 | "person-circle": 62679, 985 | "person-dash-fill": 62680, 986 | "person-dash": 62681, 987 | "person-fill": 62682, 988 | "person-lines-fill": 62683, 989 | "person-plus-fill": 62684, 990 | "person-plus": 62685, 991 | "person-square": 62686, 992 | "person-x-fill": 62687, 993 | "person-x": 62688, 994 | "person": 62689, 995 | "phone-fill": 62690, 996 | "phone-landscape-fill": 62691, 997 | "phone-landscape": 62692, 998 | "phone-vibrate-fill": 62693, 999 | "phone-vibrate": 62694, 1000 | "phone": 62695, 1001 | "pie-chart-fill": 62696, 1002 | "pie-chart": 62697, 1003 | "pin-angle-fill": 62698, 1004 | "pin-angle": 62699, 1005 | "pin-fill": 62700, 1006 | "pin": 62701, 1007 | "pip-fill": 62702, 1008 | "pip": 62703, 1009 | "play-btn-fill": 62704, 1010 | "play-btn": 62705, 1011 | "play-circle-fill": 62706, 1012 | "play-circle": 62707, 1013 | "play-fill": 62708, 1014 | "play": 62709, 1015 | "plug-fill": 62710, 1016 | "plug": 62711, 1017 | "plus-circle-dotted": 62712, 1018 | "plus-circle-fill": 62713, 1019 | "plus-circle": 62714, 1020 | "plus-square-dotted": 62715, 1021 | "plus-square-fill": 62716, 1022 | "plus-square": 62717, 1023 | "plus": 62718, 1024 | "power": 62719, 1025 | "printer-fill": 62720, 1026 | "printer": 62721, 1027 | "puzzle-fill": 62722, 1028 | "puzzle": 62723, 1029 | "question-circle-fill": 62724, 1030 | "question-circle": 62725, 1031 | "question-diamond-fill": 62726, 1032 | "question-diamond": 62727, 1033 | "question-octagon-fill": 62728, 1034 | "question-octagon": 62729, 1035 | "question-square-fill": 62730, 1036 | "question-square": 62731, 1037 | "question": 62732, 1038 | "rainbow": 62733, 1039 | "receipt-cutoff": 62734, 1040 | "receipt": 62735, 1041 | "reception-0": 62736, 1042 | "reception-1": 62737, 1043 | "reception-2": 62738, 1044 | "reception-3": 62739, 1045 | "reception-4": 62740, 1046 | "record-btn-fill": 62741, 1047 | "record-btn": 62742, 1048 | "record-circle-fill": 62743, 1049 | "record-circle": 62744, 1050 | "record-fill": 62745, 1051 | "record": 62746, 1052 | "record2-fill": 62747, 1053 | "record2": 62748, 1054 | "reply-all-fill": 62749, 1055 | "reply-all": 62750, 1056 | "reply-fill": 62751, 1057 | "reply": 62752, 1058 | "rss-fill": 62753, 1059 | "rss": 62754, 1060 | "rulers": 62755, 1061 | "save-fill": 62756, 1062 | "save": 62757, 1063 | "save2-fill": 62758, 1064 | "save2": 62759, 1065 | "scissors": 62760, 1066 | "screwdriver": 62761, 1067 | "search": 62762, 1068 | "segmented-nav": 62763, 1069 | "server": 62764, 1070 | "share-fill": 62765, 1071 | "share": 62766, 1072 | "shield-check": 62767, 1073 | "shield-exclamation": 62768, 1074 | "shield-fill-check": 62769, 1075 | "shield-fill-exclamation": 62770, 1076 | "shield-fill-minus": 62771, 1077 | "shield-fill-plus": 62772, 1078 | "shield-fill-x": 62773, 1079 | "shield-fill": 62774, 1080 | "shield-lock-fill": 62775, 1081 | "shield-lock": 62776, 1082 | "shield-minus": 62777, 1083 | "shield-plus": 62778, 1084 | "shield-shaded": 62779, 1085 | "shield-slash-fill": 62780, 1086 | "shield-slash": 62781, 1087 | "shield-x": 62782, 1088 | "shield": 62783, 1089 | "shift-fill": 62784, 1090 | "shift": 62785, 1091 | "shop-window": 62786, 1092 | "shop": 62787, 1093 | "shuffle": 62788, 1094 | "signpost-2-fill": 62789, 1095 | "signpost-2": 62790, 1096 | "signpost-fill": 62791, 1097 | "signpost-split-fill": 62792, 1098 | "signpost-split": 62793, 1099 | "signpost": 62794, 1100 | "sim-fill": 62795, 1101 | "sim": 62796, 1102 | "skip-backward-btn-fill": 62797, 1103 | "skip-backward-btn": 62798, 1104 | "skip-backward-circle-fill": 62799, 1105 | "skip-backward-circle": 62800, 1106 | "skip-backward-fill": 62801, 1107 | "skip-backward": 62802, 1108 | "skip-end-btn-fill": 62803, 1109 | "skip-end-btn": 62804, 1110 | "skip-end-circle-fill": 62805, 1111 | "skip-end-circle": 62806, 1112 | "skip-end-fill": 62807, 1113 | "skip-end": 62808, 1114 | "skip-forward-btn-fill": 62809, 1115 | "skip-forward-btn": 62810, 1116 | "skip-forward-circle-fill": 62811, 1117 | "skip-forward-circle": 62812, 1118 | "skip-forward-fill": 62813, 1119 | "skip-forward": 62814, 1120 | "skip-start-btn-fill": 62815, 1121 | "skip-start-btn": 62816, 1122 | "skip-start-circle-fill": 62817, 1123 | "skip-start-circle": 62818, 1124 | "skip-start-fill": 62819, 1125 | "skip-start": 62820, 1126 | "slack": 62821, 1127 | "slash-circle-fill": 62822, 1128 | "slash-circle": 62823, 1129 | "slash-square-fill": 62824, 1130 | "slash-square": 62825, 1131 | "slash": 62826, 1132 | "sliders": 62827, 1133 | "smartwatch": 62828, 1134 | "snow": 62829, 1135 | "snow2": 62830, 1136 | "snow3": 62831, 1137 | "sort-alpha-down-alt": 62832, 1138 | "sort-alpha-down": 62833, 1139 | "sort-alpha-up-alt": 62834, 1140 | "sort-alpha-up": 62835, 1141 | "sort-down-alt": 62836, 1142 | "sort-down": 62837, 1143 | "sort-numeric-down-alt": 62838, 1144 | "sort-numeric-down": 62839, 1145 | "sort-numeric-up-alt": 62840, 1146 | "sort-numeric-up": 62841, 1147 | "sort-up-alt": 62842, 1148 | "sort-up": 62843, 1149 | "soundwave": 62844, 1150 | "speaker-fill": 62845, 1151 | "speaker": 62846, 1152 | "speedometer": 62847, 1153 | "speedometer2": 62848, 1154 | "spellcheck": 62849, 1155 | "square-fill": 62850, 1156 | "square-half": 62851, 1157 | "square": 62852, 1158 | "stack": 62853, 1159 | "star-fill": 62854, 1160 | "star-half": 62855, 1161 | "star": 62856, 1162 | "stars": 62857, 1163 | "stickies-fill": 62858, 1164 | "stickies": 62859, 1165 | "sticky-fill": 62860, 1166 | "sticky": 62861, 1167 | "stop-btn-fill": 62862, 1168 | "stop-btn": 62863, 1169 | "stop-circle-fill": 62864, 1170 | "stop-circle": 62865, 1171 | "stop-fill": 62866, 1172 | "stop": 62867, 1173 | "stoplights-fill": 62868, 1174 | "stoplights": 62869, 1175 | "stopwatch-fill": 62870, 1176 | "stopwatch": 62871, 1177 | "subtract": 62872, 1178 | "suit-club-fill": 62873, 1179 | "suit-club": 62874, 1180 | "suit-diamond-fill": 62875, 1181 | "suit-diamond": 62876, 1182 | "suit-heart-fill": 62877, 1183 | "suit-heart": 62878, 1184 | "suit-spade-fill": 62879, 1185 | "suit-spade": 62880, 1186 | "sun-fill": 62881, 1187 | "sun": 62882, 1188 | "sunglasses": 62883, 1189 | "sunrise-fill": 62884, 1190 | "sunrise": 62885, 1191 | "sunset-fill": 62886, 1192 | "sunset": 62887, 1193 | "symmetry-horizontal": 62888, 1194 | "symmetry-vertical": 62889, 1195 | "table": 62890, 1196 | "tablet-fill": 62891, 1197 | "tablet-landscape-fill": 62892, 1198 | "tablet-landscape": 62893, 1199 | "tablet": 62894, 1200 | "tag-fill": 62895, 1201 | "tag": 62896, 1202 | "tags-fill": 62897, 1203 | "tags": 62898, 1204 | "telegram": 62899, 1205 | "telephone-fill": 62900, 1206 | "telephone-forward-fill": 62901, 1207 | "telephone-forward": 62902, 1208 | "telephone-inbound-fill": 62903, 1209 | "telephone-inbound": 62904, 1210 | "telephone-minus-fill": 62905, 1211 | "telephone-minus": 62906, 1212 | "telephone-outbound-fill": 62907, 1213 | "telephone-outbound": 62908, 1214 | "telephone-plus-fill": 62909, 1215 | "telephone-plus": 62910, 1216 | "telephone-x-fill": 62911, 1217 | "telephone-x": 62912, 1218 | "telephone": 62913, 1219 | "terminal-fill": 62914, 1220 | "terminal": 62915, 1221 | "text-center": 62916, 1222 | "text-indent-left": 62917, 1223 | "text-indent-right": 62918, 1224 | "text-left": 62919, 1225 | "text-paragraph": 62920, 1226 | "text-right": 62921, 1227 | "textarea-resize": 62922, 1228 | "textarea-t": 62923, 1229 | "textarea": 62924, 1230 | "thermometer-half": 62925, 1231 | "thermometer-high": 62926, 1232 | "thermometer-low": 62927, 1233 | "thermometer-snow": 62928, 1234 | "thermometer-sun": 62929, 1235 | "thermometer": 62930, 1236 | "three-dots-vertical": 62931, 1237 | "three-dots": 62932, 1238 | "toggle-off": 62933, 1239 | "toggle-on": 62934, 1240 | "toggle2-off": 62935, 1241 | "toggle2-on": 62936, 1242 | "toggles": 62937, 1243 | "toggles2": 62938, 1244 | "tools": 62939, 1245 | "tornado": 62940, 1246 | "trash-fill": 62941, 1247 | "trash": 62942, 1248 | "trash2-fill": 62943, 1249 | "trash2": 62944, 1250 | "tree-fill": 62945, 1251 | "tree": 62946, 1252 | "triangle-fill": 62947, 1253 | "triangle-half": 62948, 1254 | "triangle": 62949, 1255 | "trophy-fill": 62950, 1256 | "trophy": 62951, 1257 | "tropical-storm": 62952, 1258 | "truck-flatbed": 62953, 1259 | "truck": 62954, 1260 | "tsunami": 62955, 1261 | "tv-fill": 62956, 1262 | "tv": 62957, 1263 | "twitch": 62958, 1264 | "twitter": 62959, 1265 | "type-bold": 62960, 1266 | "type-h1": 62961, 1267 | "type-h2": 62962, 1268 | "type-h3": 62963, 1269 | "type-italic": 62964, 1270 | "type-strikethrough": 62965, 1271 | "type-underline": 62966, 1272 | "type": 62967, 1273 | "ui-checks-grid": 62968, 1274 | "ui-checks": 62969, 1275 | "ui-radios-grid": 62970, 1276 | "ui-radios": 62971, 1277 | "umbrella-fill": 62972, 1278 | "umbrella": 62973, 1279 | "union": 62974, 1280 | "unlock-fill": 62975, 1281 | "unlock": 62976, 1282 | "upc-scan": 62977, 1283 | "upc": 62978, 1284 | "upload": 62979, 1285 | "vector-pen": 62980, 1286 | "view-list": 62981, 1287 | "view-stacked": 62982, 1288 | "vinyl-fill": 62983, 1289 | "vinyl": 62984, 1290 | "voicemail": 62985, 1291 | "volume-down-fill": 62986, 1292 | "volume-down": 62987, 1293 | "volume-mute-fill": 62988, 1294 | "volume-mute": 62989, 1295 | "volume-off-fill": 62990, 1296 | "volume-off": 62991, 1297 | "volume-up-fill": 62992, 1298 | "volume-up": 62993, 1299 | "vr": 62994, 1300 | "wallet-fill": 62995, 1301 | "wallet": 62996, 1302 | "wallet2": 62997, 1303 | "watch": 62998, 1304 | "water": 62999, 1305 | "whatsapp": 63000, 1306 | "wifi-1": 63001, 1307 | "wifi-2": 63002, 1308 | "wifi-off": 63003, 1309 | "wifi": 63004, 1310 | "wind": 63005, 1311 | "window-dock": 63006, 1312 | "window-sidebar": 63007, 1313 | "window": 63008, 1314 | "wrench": 63009, 1315 | "x-circle-fill": 63010, 1316 | "x-circle": 63011, 1317 | "x-diamond-fill": 63012, 1318 | "x-diamond": 63013, 1319 | "x-octagon-fill": 63014, 1320 | "x-octagon": 63015, 1321 | "x-square-fill": 63016, 1322 | "x-square": 63017, 1323 | "x": 63018, 1324 | "youtube": 63019, 1325 | "zoom-in": 63020, 1326 | "zoom-out": 63021, 1327 | "bank": 63022, 1328 | "bank2": 63023, 1329 | "bell-slash-fill": 63024, 1330 | "bell-slash": 63025, 1331 | "cash-coin": 63026, 1332 | "check-lg": 63027, 1333 | "coin": 63028, 1334 | "currency-bitcoin": 63029, 1335 | "currency-dollar": 63030, 1336 | "currency-euro": 63031, 1337 | "currency-exchange": 63032, 1338 | "currency-pound": 63033, 1339 | "currency-yen": 63034, 1340 | "dash-lg": 63035, 1341 | "exclamation-lg": 63036, 1342 | "file-earmark-pdf-fill": 63037, 1343 | "file-earmark-pdf": 63038, 1344 | "file-pdf-fill": 63039, 1345 | "file-pdf": 63040, 1346 | "gender-ambiguous": 63041, 1347 | "gender-female": 63042, 1348 | "gender-male": 63043, 1349 | "gender-trans": 63044, 1350 | "headset-vr": 63045, 1351 | "info-lg": 63046, 1352 | "mastodon": 63047, 1353 | "messenger": 63048, 1354 | "piggy-bank-fill": 63049, 1355 | "piggy-bank": 63050, 1356 | "pin-map-fill": 63051, 1357 | "pin-map": 63052, 1358 | "plus-lg": 63053, 1359 | "question-lg": 63054, 1360 | "recycle": 63055, 1361 | "reddit": 63056, 1362 | "safe-fill": 63057, 1363 | "safe2-fill": 63058, 1364 | "safe2": 63059, 1365 | "sd-card-fill": 63060, 1366 | "sd-card": 63061, 1367 | "skype": 63062, 1368 | "slash-lg": 63063, 1369 | "translate": 63064, 1370 | "x-lg": 63065, 1371 | "safe": 63066, 1372 | "apple": 63067, 1373 | "microsoft": 63069, 1374 | "windows": 63070, 1375 | "behance": 63068, 1376 | "dribbble": 63071, 1377 | "line": 63072, 1378 | "medium": 63073, 1379 | "paypal": 63074, 1380 | "pinterest": 63075, 1381 | "signal": 63076, 1382 | "snapchat": 63077, 1383 | "spotify": 63078, 1384 | "stack-overflow": 63079, 1385 | "strava": 63080, 1386 | "wordpress": 63081, 1387 | "vimeo": 63082, 1388 | "activity": 63083, 1389 | "easel2-fill": 63084, 1390 | "easel2": 63085, 1391 | "easel3-fill": 63086, 1392 | "easel3": 63087, 1393 | "fan": 63088, 1394 | "fingerprint": 63089, 1395 | "graph-down-arrow": 63090, 1396 | "graph-up-arrow": 63091, 1397 | "hypnotize": 63092, 1398 | "magic": 63093, 1399 | "person-rolodex": 63094, 1400 | "person-video": 63095, 1401 | "person-video2": 63096, 1402 | "person-video3": 63097, 1403 | "person-workspace": 63098, 1404 | "radioactive": 63099, 1405 | "webcam-fill": 63100, 1406 | "webcam": 63101, 1407 | "yin-yang": 63102, 1408 | "bandaid-fill": 63104, 1409 | "bandaid": 63105, 1410 | "bluetooth": 63106, 1411 | "body-text": 63107, 1412 | "boombox": 63108, 1413 | "boxes": 63109, 1414 | "dpad-fill": 63110, 1415 | "dpad": 63111, 1416 | "ear-fill": 63112, 1417 | "ear": 63113, 1418 | "envelope-check-fill": 63115, 1419 | "envelope-check": 63116, 1420 | "envelope-dash-fill": 63118, 1421 | "envelope-dash": 63119, 1422 | "envelope-exclamation-fill": 63121, 1423 | "envelope-exclamation": 63122, 1424 | "envelope-plus-fill": 63123, 1425 | "envelope-plus": 63124, 1426 | "envelope-slash-fill": 63126, 1427 | "envelope-slash": 63127, 1428 | "envelope-x-fill": 63129, 1429 | "envelope-x": 63130, 1430 | "explicit-fill": 63131, 1431 | "explicit": 63132, 1432 | "git": 63133, 1433 | "infinity": 63134, 1434 | "list-columns-reverse": 63135, 1435 | "list-columns": 63136, 1436 | "meta": 63137, 1437 | "nintendo-switch": 63140, 1438 | "pc-display-horizontal": 63141, 1439 | "pc-display": 63142, 1440 | "pc-horizontal": 63143, 1441 | "pc": 63144, 1442 | "playstation": 63145, 1443 | "plus-slash-minus": 63146, 1444 | "projector-fill": 63147, 1445 | "projector": 63148, 1446 | "qr-code-scan": 63149, 1447 | "qr-code": 63150, 1448 | "quora": 63151, 1449 | "quote": 63152, 1450 | "robot": 63153, 1451 | "send-check-fill": 63154, 1452 | "send-check": 63155, 1453 | "send-dash-fill": 63156, 1454 | "send-dash": 63157, 1455 | "send-exclamation-fill": 63159, 1456 | "send-exclamation": 63160, 1457 | "send-fill": 63161, 1458 | "send-plus-fill": 63162, 1459 | "send-plus": 63163, 1460 | "send-slash-fill": 63164, 1461 | "send-slash": 63165, 1462 | "send-x-fill": 63166, 1463 | "send-x": 63167, 1464 | "send": 63168, 1465 | "steam": 63169, 1466 | "terminal-dash": 63171, 1467 | "terminal-plus": 63172, 1468 | "terminal-split": 63173, 1469 | "ticket-detailed-fill": 63174, 1470 | "ticket-detailed": 63175, 1471 | "ticket-fill": 63176, 1472 | "ticket-perforated-fill": 63177, 1473 | "ticket-perforated": 63178, 1474 | "ticket": 63179, 1475 | "tiktok": 63180, 1476 | "window-dash": 63181, 1477 | "window-desktop": 63182, 1478 | "window-fullscreen": 63183, 1479 | "window-plus": 63184, 1480 | "window-split": 63185, 1481 | "window-stack": 63186, 1482 | "window-x": 63187, 1483 | "xbox": 63188, 1484 | "ethernet": 63189, 1485 | "hdmi-fill": 63190, 1486 | "hdmi": 63191, 1487 | "usb-c-fill": 63192, 1488 | "usb-c": 63193, 1489 | "usb-fill": 63194, 1490 | "usb-plug-fill": 63195, 1491 | "usb-plug": 63196, 1492 | "usb-symbol": 63197, 1493 | "usb": 63198, 1494 | "boombox-fill": 63199, 1495 | "displayport": 63201, 1496 | "gpu-card": 63202, 1497 | "memory": 63203, 1498 | "modem-fill": 63204, 1499 | "modem": 63205, 1500 | "motherboard-fill": 63206, 1501 | "motherboard": 63207, 1502 | "optical-audio-fill": 63208, 1503 | "optical-audio": 63209, 1504 | "pci-card": 63210, 1505 | "router-fill": 63211, 1506 | "router": 63212, 1507 | "thunderbolt-fill": 63215, 1508 | "thunderbolt": 63216, 1509 | "usb-drive-fill": 63217, 1510 | "usb-drive": 63218, 1511 | "usb-micro-fill": 63219, 1512 | "usb-micro": 63220, 1513 | "usb-mini-fill": 63221, 1514 | "usb-mini": 63222, 1515 | "cloud-haze2": 63223, 1516 | "device-hdd-fill": 63224, 1517 | "device-hdd": 63225, 1518 | "device-ssd-fill": 63226, 1519 | "device-ssd": 63227, 1520 | "displayport-fill": 63228, 1521 | "mortarboard-fill": 63229, 1522 | "mortarboard": 63230, 1523 | "terminal-x": 63231, 1524 | "arrow-through-heart-fill": 63232, 1525 | "arrow-through-heart": 63233, 1526 | "badge-sd-fill": 63234, 1527 | "badge-sd": 63235, 1528 | "bag-heart-fill": 63236, 1529 | "bag-heart": 63237, 1530 | "balloon-fill": 63238, 1531 | "balloon-heart-fill": 63239, 1532 | "balloon-heart": 63240, 1533 | "balloon": 63241, 1534 | "box2-fill": 63242, 1535 | "box2-heart-fill": 63243, 1536 | "box2-heart": 63244, 1537 | "box2": 63245, 1538 | "braces-asterisk": 63246, 1539 | "calendar-heart-fill": 63247, 1540 | "calendar-heart": 63248, 1541 | "calendar2-heart-fill": 63249, 1542 | "calendar2-heart": 63250, 1543 | "chat-heart-fill": 63251, 1544 | "chat-heart": 63252, 1545 | "chat-left-heart-fill": 63253, 1546 | "chat-left-heart": 63254, 1547 | "chat-right-heart-fill": 63255, 1548 | "chat-right-heart": 63256, 1549 | "chat-square-heart-fill": 63257, 1550 | "chat-square-heart": 63258, 1551 | "clipboard-check-fill": 63259, 1552 | "clipboard-data-fill": 63260, 1553 | "clipboard-fill": 63261, 1554 | "clipboard-heart-fill": 63262, 1555 | "clipboard-heart": 63263, 1556 | "clipboard-minus-fill": 63264, 1557 | "clipboard-plus-fill": 63265, 1558 | "clipboard-pulse": 63266, 1559 | "clipboard-x-fill": 63267, 1560 | "clipboard2-check-fill": 63268, 1561 | "clipboard2-check": 63269, 1562 | "clipboard2-data-fill": 63270, 1563 | "clipboard2-data": 63271, 1564 | "clipboard2-fill": 63272, 1565 | "clipboard2-heart-fill": 63273, 1566 | "clipboard2-heart": 63274, 1567 | "clipboard2-minus-fill": 63275, 1568 | "clipboard2-minus": 63276, 1569 | "clipboard2-plus-fill": 63277, 1570 | "clipboard2-plus": 63278, 1571 | "clipboard2-pulse-fill": 63279, 1572 | "clipboard2-pulse": 63280, 1573 | "clipboard2-x-fill": 63281, 1574 | "clipboard2-x": 63282, 1575 | "clipboard2": 63283, 1576 | "emoji-kiss-fill": 63284, 1577 | "emoji-kiss": 63285, 1578 | "envelope-heart-fill": 63286, 1579 | "envelope-heart": 63287, 1580 | "envelope-open-heart-fill": 63288, 1581 | "envelope-open-heart": 63289, 1582 | "envelope-paper-fill": 63290, 1583 | "envelope-paper-heart-fill": 63291, 1584 | "envelope-paper-heart": 63292, 1585 | "envelope-paper": 63293, 1586 | "filetype-aac": 63294, 1587 | "filetype-ai": 63295, 1588 | "filetype-bmp": 63296, 1589 | "filetype-cs": 63297, 1590 | "filetype-css": 63298, 1591 | "filetype-csv": 63299, 1592 | "filetype-doc": 63300, 1593 | "filetype-docx": 63301, 1594 | "filetype-exe": 63302, 1595 | "filetype-gif": 63303, 1596 | "filetype-heic": 63304, 1597 | "filetype-html": 63305, 1598 | "filetype-java": 63306, 1599 | "filetype-jpg": 63307, 1600 | "filetype-js": 63308, 1601 | "filetype-jsx": 63309, 1602 | "filetype-key": 63310, 1603 | "filetype-m4p": 63311, 1604 | "filetype-md": 63312, 1605 | "filetype-mdx": 63313, 1606 | "filetype-mov": 63314, 1607 | "filetype-mp3": 63315, 1608 | "filetype-mp4": 63316, 1609 | "filetype-otf": 63317, 1610 | "filetype-pdf": 63318, 1611 | "filetype-php": 63319, 1612 | "filetype-png": 63320, 1613 | "filetype-ppt": 63322, 1614 | "filetype-psd": 63323, 1615 | "filetype-py": 63324, 1616 | "filetype-raw": 63325, 1617 | "filetype-rb": 63326, 1618 | "filetype-sass": 63327, 1619 | "filetype-scss": 63328, 1620 | "filetype-sh": 63329, 1621 | "filetype-svg": 63330, 1622 | "filetype-tiff": 63331, 1623 | "filetype-tsx": 63332, 1624 | "filetype-ttf": 63333, 1625 | "filetype-txt": 63334, 1626 | "filetype-wav": 63335, 1627 | "filetype-woff": 63336, 1628 | "filetype-xls": 63338, 1629 | "filetype-xml": 63339, 1630 | "filetype-yml": 63340, 1631 | "heart-arrow": 63341, 1632 | "heart-pulse-fill": 63342, 1633 | "heart-pulse": 63343, 1634 | "heartbreak-fill": 63344, 1635 | "heartbreak": 63345, 1636 | "hearts": 63346, 1637 | "hospital-fill": 63347, 1638 | "hospital": 63348, 1639 | "house-heart-fill": 63349, 1640 | "house-heart": 63350, 1641 | "incognito": 63351, 1642 | "magnet-fill": 63352, 1643 | "magnet": 63353, 1644 | "person-heart": 63354, 1645 | "person-hearts": 63355, 1646 | "phone-flip": 63356, 1647 | "plugin": 63357, 1648 | "postage-fill": 63358, 1649 | "postage-heart-fill": 63359, 1650 | "postage-heart": 63360, 1651 | "postage": 63361, 1652 | "postcard-fill": 63362, 1653 | "postcard-heart-fill": 63363, 1654 | "postcard-heart": 63364, 1655 | "postcard": 63365, 1656 | "search-heart-fill": 63366, 1657 | "search-heart": 63367, 1658 | "sliders2-vertical": 63368, 1659 | "sliders2": 63369, 1660 | "trash3-fill": 63370, 1661 | "trash3": 63371, 1662 | "valentine": 63372, 1663 | "valentine2": 63373, 1664 | "wrench-adjustable-circle-fill": 63374, 1665 | "wrench-adjustable-circle": 63375, 1666 | "wrench-adjustable": 63376, 1667 | "filetype-json": 63377, 1668 | "filetype-pptx": 63378, 1669 | "filetype-xlsx": 63379, 1670 | "1-circle-fill": 63382, 1671 | "1-circle": 63383, 1672 | "1-square-fill": 63384, 1673 | "1-square": 63385, 1674 | "2-circle-fill": 63388, 1675 | "2-circle": 63389, 1676 | "2-square-fill": 63390, 1677 | "2-square": 63391, 1678 | "3-circle-fill": 63394, 1679 | "3-circle": 63395, 1680 | "3-square-fill": 63396, 1681 | "3-square": 63397, 1682 | "4-circle-fill": 63400, 1683 | "4-circle": 63401, 1684 | "4-square-fill": 63402, 1685 | "4-square": 63403, 1686 | "5-circle-fill": 63406, 1687 | "5-circle": 63407, 1688 | "5-square-fill": 63408, 1689 | "5-square": 63409, 1690 | "6-circle-fill": 63412, 1691 | "6-circle": 63413, 1692 | "6-square-fill": 63414, 1693 | "6-square": 63415, 1694 | "7-circle-fill": 63418, 1695 | "7-circle": 63419, 1696 | "7-square-fill": 63420, 1697 | "7-square": 63421, 1698 | "8-circle-fill": 63424, 1699 | "8-circle": 63425, 1700 | "8-square-fill": 63426, 1701 | "8-square": 63427, 1702 | "9-circle-fill": 63430, 1703 | "9-circle": 63431, 1704 | "9-square-fill": 63432, 1705 | "9-square": 63433, 1706 | "airplane-engines-fill": 63434, 1707 | "airplane-engines": 63435, 1708 | "airplane-fill": 63436, 1709 | "airplane": 63437, 1710 | "alexa": 63438, 1711 | "alipay": 63439, 1712 | "android": 63440, 1713 | "android2": 63441, 1714 | "box-fill": 63442, 1715 | "box-seam-fill": 63443, 1716 | "browser-chrome": 63444, 1717 | "browser-edge": 63445, 1718 | "browser-firefox": 63446, 1719 | "browser-safari": 63447, 1720 | "c-circle-fill": 63450, 1721 | "c-circle": 63451, 1722 | "c-square-fill": 63452, 1723 | "c-square": 63453, 1724 | "capsule-pill": 63454, 1725 | "capsule": 63455, 1726 | "car-front-fill": 63456, 1727 | "car-front": 63457, 1728 | "cassette-fill": 63458, 1729 | "cassette": 63459, 1730 | "cc-circle-fill": 63462, 1731 | "cc-circle": 63463, 1732 | "cc-square-fill": 63464, 1733 | "cc-square": 63465, 1734 | "cup-hot-fill": 63466, 1735 | "cup-hot": 63467, 1736 | "currency-rupee": 63468, 1737 | "dropbox": 63469, 1738 | "escape": 63470, 1739 | "fast-forward-btn-fill": 63471, 1740 | "fast-forward-btn": 63472, 1741 | "fast-forward-circle-fill": 63473, 1742 | "fast-forward-circle": 63474, 1743 | "fast-forward-fill": 63475, 1744 | "fast-forward": 63476, 1745 | "filetype-sql": 63477, 1746 | "fire": 63478, 1747 | "google-play": 63479, 1748 | "h-circle-fill": 63482, 1749 | "h-circle": 63483, 1750 | "h-square-fill": 63484, 1751 | "h-square": 63485, 1752 | "indent": 63486, 1753 | "lungs-fill": 63487, 1754 | "lungs": 63488, 1755 | "microsoft-teams": 63489, 1756 | "p-circle-fill": 63492, 1757 | "p-circle": 63493, 1758 | "p-square-fill": 63494, 1759 | "p-square": 63495, 1760 | "pass-fill": 63496, 1761 | "pass": 63497, 1762 | "prescription": 63498, 1763 | "prescription2": 63499, 1764 | "r-circle-fill": 63502, 1765 | "r-circle": 63503, 1766 | "r-square-fill": 63504, 1767 | "r-square": 63505, 1768 | "repeat-1": 63506, 1769 | "repeat": 63507, 1770 | "rewind-btn-fill": 63508, 1771 | "rewind-btn": 63509, 1772 | "rewind-circle-fill": 63510, 1773 | "rewind-circle": 63511, 1774 | "rewind-fill": 63512, 1775 | "rewind": 63513, 1776 | "train-freight-front-fill": 63514, 1777 | "train-freight-front": 63515, 1778 | "train-front-fill": 63516, 1779 | "train-front": 63517, 1780 | "train-lightrail-front-fill": 63518, 1781 | "train-lightrail-front": 63519, 1782 | "truck-front-fill": 63520, 1783 | "truck-front": 63521, 1784 | "ubuntu": 63522, 1785 | "unindent": 63523, 1786 | "unity": 63524, 1787 | "universal-access-circle": 63525, 1788 | "universal-access": 63526, 1789 | "virus": 63527, 1790 | "virus2": 63528, 1791 | "wechat": 63529, 1792 | "yelp": 63530, 1793 | "sign-stop-fill": 63531, 1794 | "sign-stop-lights-fill": 63532, 1795 | "sign-stop-lights": 63533, 1796 | "sign-stop": 63534, 1797 | "sign-turn-left-fill": 63535, 1798 | "sign-turn-left": 63536, 1799 | "sign-turn-right-fill": 63537, 1800 | "sign-turn-right": 63538, 1801 | "sign-turn-slight-left-fill": 63539, 1802 | "sign-turn-slight-left": 63540, 1803 | "sign-turn-slight-right-fill": 63541, 1804 | "sign-turn-slight-right": 63542, 1805 | "sign-yield-fill": 63543, 1806 | "sign-yield": 63544, 1807 | "ev-station-fill": 63545, 1808 | "ev-station": 63546, 1809 | "fuel-pump-diesel-fill": 63547, 1810 | "fuel-pump-diesel": 63548, 1811 | "fuel-pump-fill": 63549, 1812 | "fuel-pump": 63550, 1813 | "0-circle-fill": 63551, 1814 | "0-circle": 63552, 1815 | "0-square-fill": 63553, 1816 | "0-square": 63554, 1817 | "rocket-fill": 63555, 1818 | "rocket-takeoff-fill": 63556, 1819 | "rocket-takeoff": 63557, 1820 | "rocket": 63558, 1821 | "stripe": 63559, 1822 | "subscript": 63560, 1823 | "superscript": 63561, 1824 | "trello": 63562, 1825 | "envelope-at-fill": 63563, 1826 | "envelope-at": 63564, 1827 | "regex": 63565, 1828 | "text-wrap": 63566, 1829 | "sign-dead-end-fill": 63567, 1830 | "sign-dead-end": 63568, 1831 | "sign-do-not-enter-fill": 63569, 1832 | "sign-do-not-enter": 63570, 1833 | "sign-intersection-fill": 63571, 1834 | "sign-intersection-side-fill": 63572, 1835 | "sign-intersection-side": 63573, 1836 | "sign-intersection-t-fill": 63574, 1837 | "sign-intersection-t": 63575, 1838 | "sign-intersection-y-fill": 63576, 1839 | "sign-intersection-y": 63577, 1840 | "sign-intersection": 63578, 1841 | "sign-merge-left-fill": 63579, 1842 | "sign-merge-left": 63580, 1843 | "sign-merge-right-fill": 63581, 1844 | "sign-merge-right": 63582, 1845 | "sign-no-left-turn-fill": 63583, 1846 | "sign-no-left-turn": 63584, 1847 | "sign-no-parking-fill": 63585, 1848 | "sign-no-parking": 63586, 1849 | "sign-no-right-turn-fill": 63587, 1850 | "sign-no-right-turn": 63588, 1851 | "sign-railroad-fill": 63589, 1852 | "sign-railroad": 63590, 1853 | "building-add": 63591, 1854 | "building-check": 63592, 1855 | "building-dash": 63593, 1856 | "building-down": 63594, 1857 | "building-exclamation": 63595, 1858 | "building-fill-add": 63596, 1859 | "building-fill-check": 63597, 1860 | "building-fill-dash": 63598, 1861 | "building-fill-down": 63599, 1862 | "building-fill-exclamation": 63600, 1863 | "building-fill-gear": 63601, 1864 | "building-fill-lock": 63602, 1865 | "building-fill-slash": 63603, 1866 | "building-fill-up": 63604, 1867 | "building-fill-x": 63605, 1868 | "building-fill": 63606, 1869 | "building-gear": 63607, 1870 | "building-lock": 63608, 1871 | "building-slash": 63609, 1872 | "building-up": 63610, 1873 | "building-x": 63611, 1874 | "buildings-fill": 63612, 1875 | "buildings": 63613, 1876 | "bus-front-fill": 63614, 1877 | "bus-front": 63615, 1878 | "ev-front-fill": 63616, 1879 | "ev-front": 63617, 1880 | "globe-americas": 63618, 1881 | "globe-asia-australia": 63619, 1882 | "globe-central-south-asia": 63620, 1883 | "globe-europe-africa": 63621, 1884 | "house-add-fill": 63622, 1885 | "house-add": 63623, 1886 | "house-check-fill": 63624, 1887 | "house-check": 63625, 1888 | "house-dash-fill": 63626, 1889 | "house-dash": 63627, 1890 | "house-down-fill": 63628, 1891 | "house-down": 63629, 1892 | "house-exclamation-fill": 63630, 1893 | "house-exclamation": 63631, 1894 | "house-gear-fill": 63632, 1895 | "house-gear": 63633, 1896 | "house-lock-fill": 63634, 1897 | "house-lock": 63635, 1898 | "house-slash-fill": 63636, 1899 | "house-slash": 63637, 1900 | "house-up-fill": 63638, 1901 | "house-up": 63639, 1902 | "house-x-fill": 63640, 1903 | "house-x": 63641, 1904 | "person-add": 63642, 1905 | "person-down": 63643, 1906 | "person-exclamation": 63644, 1907 | "person-fill-add": 63645, 1908 | "person-fill-check": 63646, 1909 | "person-fill-dash": 63647, 1910 | "person-fill-down": 63648, 1911 | "person-fill-exclamation": 63649, 1912 | "person-fill-gear": 63650, 1913 | "person-fill-lock": 63651, 1914 | "person-fill-slash": 63652, 1915 | "person-fill-up": 63653, 1916 | "person-fill-x": 63654, 1917 | "person-gear": 63655, 1918 | "person-lock": 63656, 1919 | "person-slash": 63657, 1920 | "person-up": 63658, 1921 | "scooter": 63659, 1922 | "taxi-front-fill": 63660, 1923 | "taxi-front": 63661, 1924 | "amd": 63662, 1925 | "database-add": 63663, 1926 | "database-check": 63664, 1927 | "database-dash": 63665, 1928 | "database-down": 63666, 1929 | "database-exclamation": 63667, 1930 | "database-fill-add": 63668, 1931 | "database-fill-check": 63669, 1932 | "database-fill-dash": 63670, 1933 | "database-fill-down": 63671, 1934 | "database-fill-exclamation": 63672, 1935 | "database-fill-gear": 63673, 1936 | "database-fill-lock": 63674, 1937 | "database-fill-slash": 63675, 1938 | "database-fill-up": 63676, 1939 | "database-fill-x": 63677, 1940 | "database-fill": 63678, 1941 | "database-gear": 63679, 1942 | "database-lock": 63680, 1943 | "database-slash": 63681, 1944 | "database-up": 63682, 1945 | "database-x": 63683, 1946 | "database": 63684, 1947 | "houses-fill": 63685, 1948 | "houses": 63686, 1949 | "nvidia": 63687, 1950 | "person-vcard-fill": 63688, 1951 | "person-vcard": 63689, 1952 | "sina-weibo": 63690, 1953 | "tencent-qq": 63691, 1954 | "wikipedia": 63692 1955 | } -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/fonts/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/fonts/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/fonts/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/fonts/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/icon-192.png -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/img/BlazorMovieBlk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/img/BlazorMovieBlk.png -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/img/BlazorMovieOrg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/img/BlazorMovieOrg.png -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/img/BlazorMovieWht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/img/BlazorMovieWht.png -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/img/PosterPlaceHolder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoderFoundry/BlazorRenderModes/c8d404786ef30d9a525a0af79880e3e5a0b87029/BlazorRenderModes/wwwroot/img/PosterPlaceHolder.png -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/img/THEMOVEDBLogo.svg: -------------------------------------------------------------------------------- 1 | Asset 5 -------------------------------------------------------------------------------- /BlazorRenderModes/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | async function getMovie(id) { 2 | try { 3 | // this calls to our server's minimal API endpoints 4 | let response = await fetch(`/movie/${id}`); 5 | 6 | let data = await response.json(); 7 | return data; 8 | 9 | } catch (error) { 10 | console.error(error); 11 | } 12 | } 13 | 14 | async function showMovieDetails(btn) { 15 | 16 | let movieId = btn.getAttribute('data-movieId'); 17 | 18 | //call our minimal api to get the movie details 19 | let movie = await getMovie(movieId); 20 | 21 | document.getElementById('modal-title').textContent = movie.title; 22 | document.getElementById('modal-imdb').href = `https://www.imdb.com/title/${movie.imdb_id}`; 23 | document.getElementById('modal-link').href = movie.homepage; 24 | document.getElementById('modal-img').src = `https://image.tmdb.org/t/p/w500${movie.poster_path}`; 25 | document.getElementById('modal-movie-title').textContent = movie.title; 26 | document.getElementById('modal-overview').textContent = movie.overview; 27 | document.getElementById('modal-tagline').textContent = movie.tagline; 28 | document.getElementById('modal-rating').textContent = movie.vote_average; 29 | document.getElementById('modal-released').textContent = (new Date(movie.release_date)).toLocaleDateString(); 30 | 31 | let minutes = movie.runtime % 60; 32 | let hours = (movie.runtime - minutes) / 60; 33 | document.getElementById('modal-runtime').textContent = `${hours} hours ${minutes} minutes` 34 | 35 | document.getElementById('modal-budget').textContent = new Intl.NumberFormat('en-US', { 36 | style: 'currency', 37 | currency: 'USD', 38 | maximumFractionDigits: 0 39 | }).format(movie.budget); 40 | 41 | let productionDiv = document.getElementById('modal-production-logos'); 42 | productionDiv.innerHTML = ''; 43 | 44 | movie.production_companies.forEach(company => { 45 | if (!company.logo_path) return; 46 | 47 | let companyImg = document.createElement('img'); 48 | companyImg.src = `https://image.tmdb.org/t/p/w500${company.logo_path}`; 49 | companyImg.classList.add("productionImage"); 50 | 51 | let col = document.createElement('div'); 52 | 53 | 54 | //col.classList.add('col'); 55 | col.appendChild(companyImg); 56 | 57 | productionDiv.appendChild(col); 58 | }); 59 | 60 | 61 | const genresDiv = document.getElementById('modal-genres'); 62 | genresDiv.innerHTML = ''; 63 | 64 | movie.genres.forEach(genre => { 65 | let badge = document.createElement('span'); 66 | badge.classList.add('badge', 'text-bg-primary'); 67 | badge.textContent = genre.name; 68 | genresDiv.appendChild(badge); 69 | }); 70 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BlazorRenderModes 2 | 3 | ## Screenshots 4 | 5 | 6 | ## Configuration 7 | Blazor has 5 render modes. SSR Server Side Render, SSR Streaming Rendering, Blazor Server with SignalR, Blazor Wasm, Blazor Auto. 8 | This repo has created demos for each render type. 9 | 10 | The app has been built with the final release of .NET 8. To run this sample, you must download and install Visual Studio 17.8+ and the .NET 8 SDK. 11 | 12 | Download Visual Studio 13 | https://visualstudio.microsoft.com/vs/ 14 | 15 | Download the SDK here 16 | https://dotnet.microsoft.com/en-us/download/dotnet/8.0 17 | 18 | You will also need to get a TMDB API developer key. Follow this link to get a key 19 | https://developer.themoviedb.org/docs 20 | *Note: TMDB will provide two keys - this sample uses the "Read Access Key" as a bearer token, not the "API Key" which must be appended as a query string.* 21 | 22 | To add your TMDB API key to the project you will navigate to the server project and edit program.cs 23 | You can add your key directly to the file or use user secrets like we did. We set the string variable with the value using a user secret. 24 | 25 | ```cs 26 | // your TMDB Read Access key must be in the server's secrets.json, e.g.: 27 | // "TMDBKey": "your-Read-Access-key-here" 28 | // Alternatively, place your API key directly over builder.Configuration["TMDBKey"] 29 | string? tmdbKey = builder.Configuration["TMDBKey"]; 30 | 31 | builder.Services.AddScoped(sp => { 32 | var client = new HttpClient(); 33 | client.BaseAddress = new("https://api.themoviedb.org/3/"); 34 | client.DefaultRequestHeaders.Authorization = new("Bearer", tmdbKey); 35 | return client; 36 | }); 37 | ``` 38 | 39 | Syntax example for User Secrets or appsettings.json: 40 | ```json 41 | { 42 | "TMDBKey": "your-Read-Access-key-here" 43 | } 44 | ``` 45 | 46 | ## Blazor Overview Video 47 | 48 | [](https://www.youtube.com/watch?v=u4azTLLGt8U "Blazor Render Modes") 49 | 50 | ## SSR Walkthrough Video 51 | [](https://www.youtube.com/watch?v=2kGR1lgEL50 "Blazor Render Modes") 52 | 53 | --------------------------------------------------------------------------------