Skip to content

Commit f815c1b

Browse files
committed
Bücher, Vorträge und Projektseite hinzugefügt.
1 parent 4090d6f commit f815c1b

19 files changed

Lines changed: 447 additions & 126 deletions

Components/BookComponent.razor

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
2+
<MudStack Row Spacing="8">
3+
<MudCard Elevation="3">
4+
<MudImage Class="ma-4" Src="@("images/books/" + Image)" Width="180" Height="250" ObjectFit="ObjectFit.ScaleDown" />
5+
</MudCard>
6+
<MudStack Spacing="2">
7+
<MudText Typo="Typo.h5">@Title</MudText>
8+
<MudText Style="flex-grow: 1;" Typo="Typo.body2">@Description</MudText>
9+
10+
<MudGrid Spacing="0">
11+
@if (NumberOfPages is not null)
12+
{
13+
<MudItem xs="12">
14+
<MudText Typo="Typo.caption">@NumberOfPages Seiten</MudText>
15+
</MudItem>
16+
}
17+
18+
@if (!string.IsNullOrEmpty(Authors))
19+
{
20+
<MudItem xs="4">
21+
<MudText Typo="Typo.caption">Autor(en):</MudText>
22+
</MudItem>
23+
<MudItem xs="8">
24+
<MudText Typo="Typo.caption">@Authors</MudText>
25+
</MudItem>
26+
}
27+
@if (!string.IsNullOrEmpty(Publisher))
28+
{
29+
<MudItem xs="4">
30+
<MudText Typo="Typo.caption">Verlag:</MudText>
31+
</MudItem>
32+
<MudItem xs="8">
33+
<MudText Typo="Typo.caption">@Publisher</MudText>
34+
</MudItem>
35+
}
36+
@if (!string.IsNullOrEmpty(Isbn))
37+
{
38+
<MudItem xs="4">
39+
<MudText Typo="Typo.caption">ISBN:</MudText>
40+
</MudItem>
41+
<MudItem xs="8">
42+
<MudText Typo="Typo.caption">@Isbn</MudText>
43+
</MudItem>
44+
}
45+
</MudGrid>
46+
</MudStack>
47+
</MudStack>
48+
49+
50+
@code {
51+
52+
[Parameter]
53+
public string Title { get; set; } = "";
54+
55+
[Parameter]
56+
public string Image { get; set; } = "";
57+
58+
[Parameter]
59+
public string? Description { get; set; }
60+
61+
[Parameter]
62+
public string? Authors { get; set; }
63+
64+
[Parameter]
65+
public string? Publisher { get; set; }
66+
67+
[Parameter]
68+
public string? Isbn { get; set; }
69+
70+
[Parameter]
71+
public int? NumberOfPages { get; set; }
72+
}

Components/ProjectComponent.razor

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<MudCarousel Class="mud-width-full" Style="height:200px;" ShowArrows ShowBullets EnableSwipeGesture AutoCycle=false TData="object">
2+
<MudCarouselItem Color="@Color.Primary">
3+
<div class="d-flex" style="height:100%">
4+
<MudIcon Class="mx-auto my-auto" Icon="@Icons.Custom.Brands.MudBlazor" Size="@Size.Large" />
5+
</div>
6+
</MudCarouselItem>
7+
<MudCarouselItem Color="@Color.Secondary">
8+
<div class="d-flex" style="height:100%">
9+
<MudIcon Class="mx-auto my-auto" Icon="@Icons.Custom.Brands.MudBlazor" Size="@Size.Large" />
10+
</div>
11+
</MudCarouselItem>
12+
<MudCarouselItem>
13+
<div class="d-flex" style="height:100%">
14+
<MudIcon Class="mx-auto my-auto" Icon="@Icons.Custom.Brands.MudBlazor" Color="@Color.Primary" Size="@Size.Large" />
15+
</div>
16+
</MudCarouselItem>
17+
</MudCarousel>
18+
19+
@code {
20+
21+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
@using MudBlazor.Charts
2+
3+
<MudCard Elevation="3" Style="padding: 0px;">
4+
<MudCardHeader>
5+
<div style="margin-left: auto; margin-right: auto; max-width: 600px; width: 40dvw; height: 25dvw;">
6+
<iframe width="1000"
7+
height="1000"
8+
src=@Src
9+
title=@Title
10+
frameborder="0"
11+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
12+
referrerpolicy="strict-origin-when-cross-origin"
13+
allowfullscreen>
14+
</iframe>
15+
</div>
16+
</MudCardHeader>
17+
<MudCardContent>
18+
<MudStack Spacing="3">
19+
<MudText Typo="Typo.h6">@Title</MudText>
20+
<MudText Typo="Typo.body2">@Description</MudText>
21+
</MudStack>
22+
</MudCardContent>
23+
<MudCardActions>
24+
<MudStack Class="ma-1" Row Spacing="2">
25+
<MudTooltip Placement="Placement.Top" Arrow Text="In neuem Fenster ansehen">
26+
<MudIconButton Href="@Src" Target="_blank" Icon="@Icons.Material.Filled.Fullscreen" Size="Size.Small" Color="Color.Inherit" />
27+
</MudTooltip>
28+
29+
30+
@if (!string.IsNullOrEmpty(YouTubeSrc))
31+
{
32+
<MudTooltip Placement="Placement.Top" Arrow Text="Ansehen auf YouTube">
33+
<MudIconButton Href="@YouTubeSrc" Target="_blank" Icon="@Icons.Custom.Brands.YouTube" Size="Size.Small" Color="Color.Inherit" />
34+
</MudTooltip>
35+
}
36+
</MudStack>
37+
</MudCardActions>
38+
</MudCard>
39+
40+
@code {
41+
42+
[Parameter]
43+
public string Src { get; set; } = "";
44+
45+
[Parameter]
46+
public string? YouTubeSrc { get; set; }
47+
48+
[Parameter]
49+
public string Title { get; set; } = "";
50+
51+
[Parameter]
52+
public string? Description { get; set; }
53+
}

Layout/MainLayout.razor

Lines changed: 94 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
@inherits LayoutComponentBase
22

3+
@inject NavigationManager NavigationManager
4+
35
<MudThemeProvider Theme="@_theme" IsDarkMode="_isDarkMode" />
46
<MudPopoverProvider />
57
<MudDialogProvider />
@@ -9,6 +11,13 @@
911
<MudAppBar Elevation="1">
1012
@* <MudText Typo="Typo.h6" Class="ml-3">CodingCodeSeb</MudText> *@
1113
<MudSpacer />
14+
<MudStack Row Spacing="2">
15+
<MudButton Href="/" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.Home" Color="@(NavigationButtonColorFromUri(""))">Home</MudButton>
16+
<MudButton Href="/books" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.Book" Color="@(NavigationButtonColorFromUri("books"))">Buchempfehlungen</MudButton>
17+
<MudButton Href="/talks" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.Mic" Color="@(NavigationButtonColorFromUri("talks"))">Vorträge</MudButton>
18+
<MudButton Href="/projects" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.BarChart" Color="@(NavigationButtonColorFromUri("projects"))">Projekte</MudButton>
19+
</MudStack>
20+
<MudSpacer />
1221
<MudIconButton Icon="@(DarkLightModeButtonIcon)" Color="Color.Inherit" OnClick="@DarkModeToggle" />
1322
<MudIconButton Icon="@Icons.Custom.Brands.GitHub" Color="Color.Inherit" Href="https://github.com/CodingCodeSeb" Target="_blank" />
1423
</MudAppBar>
@@ -20,6 +29,9 @@
2029
<MudMainContent Class="pt-16 pa-4">
2130
@Body
2231
</MudMainContent>
32+
<MudScrollToTop>
33+
<MudFab Color="Color.Tertiary" StartIcon="@Icons.Material.Outlined.KeyboardArrowUp" />
34+
</MudScrollToTop>
2335
</MudLayout>
2436

2537
@code {
@@ -30,7 +42,6 @@
3042
protected override void OnInitialized()
3143
{
3244
base.OnInitialized();
33-
3445
_theme = new()
3546
{
3647
PaletteLight = _lightPalette,
@@ -39,6 +50,12 @@
3950
};
4051
}
4152

53+
private Color NavigationButtonColorFromUri(string uri)
54+
{
55+
var u = NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
56+
return uri.Equals(u, StringComparison.InvariantCultureIgnoreCase) ? Color.Primary : Color.Inherit;
57+
}
58+
4259
private void DrawerToggle()
4360
{
4461
_drawerOpen = !_drawerOpen;
@@ -51,46 +68,90 @@
5168

5269
private readonly PaletteLight _lightPalette = new()
5370
{
54-
Black = "#110e2d",
55-
AppbarText = "#424242",
56-
AppbarBackground = "rgba(255,255,255,0.8)",
57-
DrawerBackground = "#ffffff",
58-
GrayLight = "#e8e8e8",
59-
GrayLighter = "#f9f9f9",
71+
Primary = MudBlazor.Colors.LightBlue.Darken3,
72+
Secondary = MudBlazor.Colors.Cyan.Darken2,
73+
Tertiary = MudBlazor.Colors.Pink.Darken1,
74+
Success = MudBlazor.Colors.Green.Darken2,
75+
Warning = MudBlazor.Colors.Orange.Darken3, // Etwas dunkler für bessere Lesbarkeit auf weiß
76+
Error = MudBlazor.Colors.Red.Darken1,
77+
Info = MudBlazor.Colors.LightBlue.Darken2,
78+
79+
AppbarBackground = MudBlazor.Colors.Gray.Lighten4,
80+
AppbarText = MudBlazor.Colors.Gray.Darken4,
81+
82+
Background = "#f4f4f7", // Ein Hauch von Blau-Grau, wirkt sauberer als reines Grau
83+
Surface = MudBlazor.Colors.Gray.Lighten5,
84+
DrawerBackground = MudBlazor.Colors.Gray.Lighten4,
85+
DrawerText = MudBlazor.Colors.Gray.Darken3,
86+
87+
TableStriped = "rgba(0,0,0,0.02)", // Subtiler
88+
LinesDefault = MudBlazor.Colors.Gray.Lighten2,
89+
TextPrimary = MudBlazor.Colors.Gray.Darken4,
90+
TextSecondary = MudBlazor.Colors.Gray.Darken2,
91+
// Black = "#110e2d",
92+
// AppbarText = "#424242",
93+
// AppbarBackground = "rgba(255,255,255,0.8)",
94+
// DrawerBackground = "#ffffff",
95+
// GrayLight = "#e8e8e8",
96+
// GrayLighter = "#f9f9f9",
6097
};
6198

6299
private readonly PaletteDark _darkPalette = new()
63100
{
64-
Primary = "#7e6fff",
65-
Surface = "#1e1e2d",
66-
Background = "#1a1a27",
67-
BackgroundGray = "#151521",
68-
AppbarText = "#92929f",
69-
AppbarBackground = "rgba(26,26,39,0.8)",
70-
DrawerBackground = "#1a1a27",
71-
ActionDefault = "#74718e",
72-
ActionDisabled = "#9999994d",
73-
ActionDisabledBackground = "#605f6d4d",
74-
TextPrimary = "#b2b0bf",
75-
TextSecondary = "#92929f",
76-
TextDisabled = "#ffffff33",
77-
DrawerIcon = "#92929f",
78-
DrawerText = "#92929f",
79-
GrayLight = "#2a2833",
80-
GrayLighter = "#1e1e2d",
81-
Info = "#4a86ff",
82-
Success = "#3dcb6c",
83-
Warning = "#ffb545",
84-
Error = "#ff3f5f",
85-
LinesDefault = "#33323e",
86-
TableLines = "#33323e",
87-
Divider = "#292838",
88-
OverlayLight = "#1e1e2d80",
101+
Primary = "#1f7c98",
102+
Secondary = "#679e2a",
103+
Tertiary = MudBlazor.Colors.Pink.Lighten2,
104+
Success = MudBlazor.Colors.Green.Darken1,
105+
Warning = MudBlazor.Colors.Amber.Lighten1,
106+
Error = MudBlazor.Colors.Red.Lighten1,
107+
Info = MudBlazor.Colors.Blue.Lighten1,
108+
109+
// 1. Hintergrund deutlich dunkler (Tiefe)
110+
Background = "#101b1e",
111+
Surface = "#0d353f", // Karten heben sich vom Hintergrund ab
112+
DrawerBackground = "#152429",
113+
AppbarBackground = "#0a2933",
114+
AppbarText = "rgba(245,245,245,0.80)",
115+
116+
TableStriped = "rgba(255,255,255,0.05)",
117+
LinesDefault = "#424257",
118+
119+
TextPrimary = "rgba(255,255,255,0.90)", // "Off-White" ist angenehmer für die Augen als 100% Weiß
120+
TextSecondary = "rgba(255,255,255,0.80)",
121+
ActionDefault = "rgba(255,255,255,0.80)",
122+
ActionDisabled = "rgba(255,255,255,0.35)",
123+
DrawerText = "rgba(255,255,255,0.90)",
124+
OverlayDark = "rgba(255,255,255,0.20)",
125+
// Primary = "#7e6fff",
126+
// Surface = "#1e1e2d",
127+
// Background = "#1a1a27",
128+
// BackgroundGray = "#151521",
129+
// AppbarText = "#92929f",
130+
// AppbarBackground = "rgba(26,26,39,0.8)",
131+
// DrawerBackground = "#1a1a27",
132+
// ActionDefault = "#74718e",
133+
// ActionDisabled = "#9999994d",
134+
// ActionDisabledBackground = "#605f6d4d",
135+
// TextPrimary = "#b2b0bf",
136+
// TextSecondary = "#92929f",
137+
// TextDisabled = "#ffffff33",
138+
// DrawerIcon = "#92929f",
139+
// DrawerText = "#92929f",
140+
// GrayLight = "#2a2833",
141+
// GrayLighter = "#1e1e2d",
142+
// Info = "#4a86ff",
143+
// Success = "#3dcb6c",
144+
// Warning = "#ffb545",
145+
// Error = "#ff3f5f",
146+
// LinesDefault = "#33323e",
147+
// TableLines = "#33323e",
148+
// Divider = "#292838",
149+
// OverlayLight = "#1e1e2d80",
89150
};
90151

91152
public string DarkLightModeButtonIcon => _isDarkMode switch
92153
{
93-
true => Icons.Material.Rounded.AutoMode,
154+
true => Icons.Material.Outlined.LightMode,
94155
false => Icons.Material.Outlined.DarkMode,
95156
};
96157
}

Pages/Books.razor

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
@page "/books"
2+
3+
<PageTitle>Buchempfehlungen</PageTitle>
4+
5+
6+
<MudStack Spacing="8" Class="mt-4" Style="max-width: 600px; margin-left: auto; margin-right: auto;" Justify="Justify.Center" AlignItems="AlignItems.Center">
7+
<BookComponent Image="prof_c_sharp_6.png"
8+
Title="Professionell entwickeln mit C# 6 und Visual Studio 2015"
9+
Description="Mit der Komplexität heutiger Software wachsen auch die Ansprüche an Ihren Code und Ihre Arbeit"
10+
Authors="Matthias Geirhos"
11+
Publisher="Rheinwerk"
12+
Isbn="978-3-8362-3929-5"
13+
NumberOfPages="1209" />
14+
<MudDivider Class="mud-width-full" />
15+
<BookComponent Image="c_sharp_6.png"
16+
Title="C# 6 mit Visual Studio 2015"
17+
Description="Das umfassende Handbuch: Spracheinführung, Objektorientierung, Programmiertechniken"
18+
Authors="Andreas Kühnel"
19+
Publisher="Rheinwerk"
20+
Isbn="978-3-8362-3714-7"
21+
NumberOfPages="1482" />
22+
<MudDivider Class="mud-width-full" />
23+
<BookComponent Image="regulaere_ausdruecke.jpg"
24+
Title="Reguläre Ausdrücke"
25+
Description="Reguläre Ausdrücke sind ein leistungsstarkes Mittel zur Verarbeitung von Texten und Daten"
26+
Authors="Jeffrey E. F. Friedl"
27+
Publisher="O'Reilly"
28+
Isbn="978-3-89721-720-1"
29+
NumberOfPages="560" />
30+
<MudDivider Class="mud-width-full" />
31+
<BookComponent Image="wpf.png"
32+
Title="Windows Presentation Foundation"
33+
Description="Das umfassende Handbuch zur WPF. Aktuell zu .NET 4.6 und Visual Studio 2015"
34+
Authors="Thomas Claudius Huber"
35+
Publisher="Rheinwerk"
36+
Isbn="978-3-8362-3756-7"
37+
NumberOfPages="1248" />
38+
<MudDivider Class="mud-width-full" />
39+
<BookComponent Image="mut_zur_typo.jpg"
40+
Title="Mut zur Typographie"
41+
Description="Ein Kurs für Desktop-Publishing"
42+
Authors="Jürgen Gulbins, Christine Kahrmann"
43+
Publisher="Springer Berlin"
44+
Isbn="978-3-540-67541-9"
45+
NumberOfPages="430" />
46+
<MudDivider Class="mud-width-full" />
47+
<BookComponent Image="der_ewige_krieg.jpg"
48+
Title="Der ewige Krieg"
49+
Description="Roman"
50+
Authors="Joe Haldeman"
51+
Publisher="Heyne"
52+
Isbn="978-3-453-16414-7"
53+
NumberOfPages="336" />
54+
</MudStack>
55+
56+
@code
57+
{
58+
59+
}

0 commit comments

Comments
 (0)