diff --git a/TuneRipper/App.razor b/TuneRipper/App.razor index a8a79e5..1681a97 100644 --- a/TuneRipper/App.razor +++ b/TuneRipper/App.razor @@ -1,6 +1,12 @@ - + + + Not found + +

Sorry, there's nothing at this address.

+
+
diff --git a/TuneRipper/Layout/MainLayout.razor b/TuneRipper/Layout/MainLayout.razor index 76eb725..0bc05ce 100644 --- a/TuneRipper/Layout/MainLayout.razor +++ b/TuneRipper/Layout/MainLayout.razor @@ -1,16 +1,5 @@ @inherits LayoutComponentBase -
- -
-
- About -
- -
- @Body -
-
+
+ @Body
diff --git a/TuneRipper/Layout/MainLayout.razor.css b/TuneRipper/Layout/MainLayout.razor.css index ecf25e5..c18a330 100644 --- a/TuneRipper/Layout/MainLayout.razor.css +++ b/TuneRipper/Layout/MainLayout.razor.css @@ -75,3 +75,14 @@ main { padding-right: 1.5rem !important; } } + +.main-container { + min-height: 100vh; + width: 100%; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + display: flex; + align-items: center; + justify-content: center; + padding: 20px; + box-sizing: border-box; +} diff --git a/TuneRipper/Layout/NavMenu.razor b/TuneRipper/Layout/NavMenu.razor deleted file mode 100644 index 27c9ddf..0000000 --- a/TuneRipper/Layout/NavMenu.razor +++ /dev/null @@ -1,39 +0,0 @@ - - - - -@code { - private bool collapseNavMenu = true; - - private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; - - private void ToggleNavMenu() - { - collapseNavMenu = !collapseNavMenu; - } -} diff --git a/TuneRipper/Layout/NavMenu.razor.css b/TuneRipper/Layout/NavMenu.razor.css deleted file mode 100644 index 617b89c..0000000 --- a/TuneRipper/Layout/NavMenu.razor.css +++ /dev/null @@ -1,83 +0,0 @@ -.navbar-toggler { - background-color: rgba(255, 255, 255, 0.1); -} - -.top-row { - min-height: 3.5rem; - background-color: rgba(0,0,0,0.4); -} - -.navbar-brand { - font-size: 1.1rem; -} - -.bi { - display: inline-block; - position: relative; - width: 1.25rem; - height: 1.25rem; - margin-right: 0.75rem; - top: -1px; - background-size: cover; -} - -.bi-house-door-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); -} - -.bi-plus-square-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E"); -} - -.bi-list-nested-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); -} - -.nav-item { - font-size: 0.9rem; - padding-bottom: 0.5rem; -} - - .nav-item:first-of-type { - padding-top: 1rem; - } - - .nav-item:last-of-type { - padding-bottom: 1rem; - } - - .nav-item ::deep a { - color: #d7d7d7; - border-radius: 4px; - height: 3rem; - display: flex; - align-items: center; - line-height: 3rem; - } - -.nav-item ::deep a.active { - background-color: rgba(255,255,255,0.37); - color: white; -} - -.nav-item ::deep a:hover { - background-color: rgba(255,255,255,0.1); - color: white; -} - -@media (min-width: 641px) { - .navbar-toggler { - display: none; - } - - .collapse { - /* Never collapse the sidebar for wide screens */ - display: block; - } - - .nav-scrollable { - /* Allow sidebar to scroll for tall menus */ - height: calc(100vh - 3.5rem); - overflow-y: auto; - } -} diff --git a/TuneRipper/Pages/Counter.razor b/TuneRipper/Pages/Counter.razor deleted file mode 100644 index ef23cb3..0000000 --- a/TuneRipper/Pages/Counter.razor +++ /dev/null @@ -1,18 +0,0 @@ -@page "/counter" - -Counter - -

Counter

- -

Current count: @currentCount

- - - -@code { - private int currentCount = 0; - - private void IncrementCount() - { - currentCount++; - } -} diff --git a/TuneRipper/Pages/Home.razor b/TuneRipper/Pages/Home.razor index 9001e0b..ab4c3a6 100644 --- a/TuneRipper/Pages/Home.razor +++ b/TuneRipper/Pages/Home.razor @@ -1,7 +1,75 @@ @page "/" -Home +TuneRipper - YouTube to MP3 Downloader -

Hello, world!

+
+
+ +

TuneRipper

+

Convert YouTube videos to MP3 instantly

+
+ +
+
+ + +
+ + @if (!string.IsNullOrWhiteSpace(outputMessage)) + { +
+

@outputMessage

+
+ } +
+ +
+
+ ⚡ + Fast Conversion +
+
+ 🎧 + High Quality +
+
+ 🆓 + Completely Free +
+
+
-Welcome to your new app. +@code { + private string youtubeUrl = ""; + private string outputMessage = ""; + + private async Task DownloadMp3() + { + if (!string.IsNullOrWhiteSpace(youtubeUrl)) + { + outputMessage = $"Processing YouTube URL: {youtubeUrl}"; + + // Simulate processing delay + await Task.Delay(1000); + + outputMessage += "\n✅ Ready to download! (This is test functionality)"; + } + } + + private async Task HandleKeyPress(KeyboardEventArgs e) + { + if (e.Key == "Enter" && !string.IsNullOrWhiteSpace(youtubeUrl)) + { + await DownloadMp3(); + } + } +} diff --git a/TuneRipper/Pages/Home.razor.css b/TuneRipper/Pages/Home.razor.css new file mode 100644 index 0000000..01f27fa --- /dev/null +++ b/TuneRipper/Pages/Home.razor.css @@ -0,0 +1,183 @@ +.hero-section { + background: rgba(255, 255, 255, 0.95); + backdrop-filter: blur(10px); + border-radius: 20px; + padding: 40px; + box-shadow: 0 20px 60px rgba(0, 0, 0, 0.1); + text-align: center; + max-width: 600px; + width: 100%; + margin: 0 auto; +} + +.logo-container { + margin-bottom: 40px; +} + +.logo { + width: 120px; + height: 120px; + object-fit: contain; + margin-bottom: 20px; + filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.1)); +} + +.app-title { + font-size: 2.5rem; + font-weight: 700; + color: #2d3748; + margin: 0 0 10px 0; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.app-subtitle { + font-size: 1.2rem; + color: #718096; + margin: 0 0 30px 0; + font-weight: 400; +} + +.download-form { + margin-bottom: 40px; +} + +.input-container { + display: flex; + flex-direction: column; + gap: 20px; + margin-bottom: 20px; +} + +.url-input { + padding: 18px 24px; + font-size: 1.1rem; + border: 2px solid #e2e8f0; + border-radius: 12px; + background: #ffffff; + color: #2d3748; + transition: all 0.3s ease; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); +} + +.url-input:focus { + outline: none; + border-color: #667eea; + box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); + transform: translateY(-1px); +} + +.url-input::placeholder { + color: #a0aec0; +} + +.download-btn { + padding: 18px 32px; + font-size: 1.1rem; + font-weight: 600; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: white; + border: none; + border-radius: 12px; + cursor: pointer; + transition: all 0.3s ease; + box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); + display: flex; + align-items: center; + justify-content: center; + gap: 10px; +} + +.download-btn:hover:not(:disabled) { + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4); +} + +.download-btn:disabled { + opacity: 0.6; + cursor: not-allowed; + transform: none; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.btn-icon { + font-size: 1.2rem; +} + +.output-message { + background: #f7fafc; + border: 1px solid #e2e8f0; + border-radius: 8px; + padding: 16px; + margin-top: 20px; + text-align: left; +} + +.output-message p { + margin: 0; + color: #4a5568; + font-family: 'Courier New', monospace; + font-size: 0.9rem; + white-space: pre-line; +} + +.features { + display: flex; + justify-content: center; + gap: 40px; + flex-wrap: wrap; +} + +.feature { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + color: #4a5568; +} + +.feature-icon { + font-size: 2rem; + margin-bottom: 8px; +} + +.feature span:last-child { + font-weight: 500; + font-size: 0.9rem; +} + +@media (min-width: 640px) { + .input-container { + flex-direction: row; + align-items: stretch; + } + + .url-input { + flex: 1; + } + + .download-btn { + min-width: 180px; + } +} + +@media (max-width: 639px) { + .hero-section { + padding: 30px 20px; + margin: 10px; + } + + .app-title { + font-size: 2rem; + } + + .features { + gap: 30px; + } + + .feature { + min-width: 100px; + } +} \ No newline at end of file diff --git a/TuneRipper/Pages/NotFound.razor b/TuneRipper/Pages/NotFound.razor deleted file mode 100644 index 917ada1..0000000 --- a/TuneRipper/Pages/NotFound.razor +++ /dev/null @@ -1,5 +0,0 @@ -@page "/not-found" -@layout MainLayout - -

Not Found

-

Sorry, the content you are looking for does not exist.

\ No newline at end of file diff --git a/TuneRipper/Pages/Weather.razor b/TuneRipper/Pages/Weather.razor deleted file mode 100644 index 3ea2b1c..0000000 --- a/TuneRipper/Pages/Weather.razor +++ /dev/null @@ -1,57 +0,0 @@ -@page "/weather" -@inject HttpClient Http - -Weather - -

Weather

- -

This component demonstrates fetching data from the server.

- -@if (forecasts == null) -{ -

Loading...

-} -else -{ - - - - - - - - - - - @foreach (var forecast in forecasts) - { - - - - - - - } - -
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
-} - -@code { - private WeatherForecast[]? forecasts; - - protected override async Task OnInitializedAsync() - { - forecasts = await Http.GetFromJsonAsync("sample-data/weather.json"); - } - - public class WeatherForecast - { - public DateOnly Date { get; set; } - - public int TemperatureC { get; set; } - - public string? Summary { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - } -} diff --git a/TuneRipper/wwwroot/apple-touch-icon.png b/TuneRipper/wwwroot/apple-touch-icon.png new file mode 100644 index 0000000..a3ea90c Binary files /dev/null and b/TuneRipper/wwwroot/apple-touch-icon.png differ diff --git a/TuneRipper/wwwroot/css/app.css b/TuneRipper/wwwroot/css/app.css index fe44b1d..7d62c37 100644 --- a/TuneRipper/wwwroot/css/app.css +++ b/TuneRipper/wwwroot/css/app.css @@ -1,5 +1,18 @@ +* { + box-sizing: border-box; +} + html, body { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + margin: 0; + padding: 0; + height: 100%; + overflow-x: hidden; +} + +#app { + height: 100vh; + width: 100vw; } h1:focus { @@ -20,10 +33,6 @@ a, .btn-link { box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; } -.content { - padding-top: 1.1rem; -} - .valid.modified:not([type=checkbox]) { outline: 1px solid #26b050; } @@ -58,7 +67,7 @@ a, .btn-link { } .blazor-error-boundary { - background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDg2IDY2LjAxODMgMjYzLjU4NiA2Ni4wMTgzIDk2LjMzNzIgMjYzLjU4NiA2Ni4xMDI4IDgyLjg1MTUgMjYwLjQwNyA2Ni4yNjU4IDg4LjQ2NzgYMjY2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; padding: 1rem 1rem 1rem 3.7rem; color: white; } diff --git a/TuneRipper/wwwroot/favicon-16x16.png b/TuneRipper/wwwroot/favicon-16x16.png new file mode 100644 index 0000000..6a5da72 Binary files /dev/null and b/TuneRipper/wwwroot/favicon-16x16.png differ diff --git a/TuneRipper/wwwroot/favicon-32x32.png b/TuneRipper/wwwroot/favicon-32x32.png new file mode 100644 index 0000000..041bdac Binary files /dev/null and b/TuneRipper/wwwroot/favicon-32x32.png differ diff --git a/TuneRipper/wwwroot/icon-192.png b/TuneRipper/wwwroot/icon-192.png index 166f56d..57837a5 100644 Binary files a/TuneRipper/wwwroot/icon-192.png and b/TuneRipper/wwwroot/icon-192.png differ diff --git a/TuneRipper/wwwroot/icon-512.png b/TuneRipper/wwwroot/icon-512.png new file mode 100644 index 0000000..cb435ae Binary files /dev/null and b/TuneRipper/wwwroot/icon-512.png differ diff --git a/TuneRipper/wwwroot/images/logo.png b/TuneRipper/wwwroot/images/logo.png new file mode 100644 index 0000000..04bdbff Binary files /dev/null and b/TuneRipper/wwwroot/images/logo.png differ diff --git a/TuneRipper/wwwroot/index.html b/TuneRipper/wwwroot/index.html index f18cec9..2e19494 100644 --- a/TuneRipper/wwwroot/index.html +++ b/TuneRipper/wwwroot/index.html @@ -9,7 +9,13 @@ - + + + + + + + diff --git a/TuneRipper/wwwroot/manifest.json b/TuneRipper/wwwroot/manifest.json new file mode 100644 index 0000000..7631c8d --- /dev/null +++ b/TuneRipper/wwwroot/manifest.json @@ -0,0 +1,23 @@ +{ + "name": "TuneRipper", + "short_name": "TuneRipper", + "description": "TuneRipper - Your Music Application", + "start_url": "/", + "display": "standalone", + "theme_color": "#512bd4", + "background_color": "#ffffff", + "icons": [ + { + "src": "icon-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "icon-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any maskable" + } + ] +} \ No newline at end of file