diff --git a/JSMR.UI.Blazor/Components/Icon.razor b/JSMR.UI.Blazor/Components/Icon.razor new file mode 100644 index 0000000..89eaa96 --- /dev/null +++ b/JSMR.UI.Blazor/Components/Icon.razor @@ -0,0 +1,34 @@ +@using JSMR.UI.Blazor.Enums + +
+ +@code { + [Parameter] + public Graphic Graphic { get; set; } + + [Parameter] + public SizeVarient Size { get; set; } = SizeVarient.Medium; + + [Parameter] + public IconVarient Varient { get; set; } = IconVarient.None; + + [Parameter] + public ColorVarient Color { get; set; } + + private string GetIconClasses() + { + string graphic = Varient == IconVarient.None + ? Graphic.ToString().ToLower() + : $"{Graphic.ToString().ToLower()}-{Varient.ToString().ToLower()}"; + + List classNames = + [ + $"j-icon", + $"j-icon-{graphic}", + $"j-icon-size-{Size.ToString().ToLower()}", + $"background-color-{Color.ToString().ToLower()}" + ]; + + return string.Join(" ", classNames); + } +} \ No newline at end of file diff --git a/JSMR.UI.Blazor/Components/InputPrefix.razor b/JSMR.UI.Blazor/Components/InputPrefix.razor new file mode 100644 index 0000000..4bca7eb --- /dev/null +++ b/JSMR.UI.Blazor/Components/InputPrefix.razor @@ -0,0 +1,24 @@ +@using JSMR.UI.Blazor.Enums + + +
+ +
+
+ +@code { + [Parameter] + public Graphic Graphic { get; set; } + + [Parameter] + public IconVarient IconVarient { get; set; } = IconVarient.None; + + [Parameter] + public ColorVarient Color { get; set; } = ColorVarient.Primary; + + [Parameter] + public ColorVarient BackgroundColor { get; set; } = ColorVarient.Black; + + [Parameter] + public string? Tooltip { get; set; } +} \ No newline at end of file diff --git a/JSMR.UI.Blazor/Components/JProduct.razor b/JSMR.UI.Blazor/Components/JProduct.razor index 30a8887..beaa2e6 100644 --- a/JSMR.UI.Blazor/Components/JProduct.razor +++ b/JSMR.UI.Blazor/Components/JProduct.razor @@ -1,5 +1,6 @@ @using JSMR.Application.VoiceWorks.Queries.Search @using JSMR.Domain.Enums +@using JSMR.UI.Blazor.Enums @using JSMR.UI.Blazor.Services @using System.Globalization @@ -54,26 +55,38 @@ } @*
*@
-
+ @if (Product.IsValid != true) { -
-
-
+ + } + @if (Product.OriginalProductId is not null) + { + } @if (Product.Favorite) { -
-
-
+ } @if (Product.HasTrial || Product.HasChobit) { -
-
-
+ } -
+ + @*
+ @if (Product.IsValid != true) + { + + } + @if (Product.Favorite) + { + + } + @if (Product.HasTrial || Product.HasChobit) + { + + } +
*@ diff --git a/JSMR.UI.Blazor/Components/ProductIndicator.razor b/JSMR.UI.Blazor/Components/ProductIndicator.razor new file mode 100644 index 0000000..1259f34 --- /dev/null +++ b/JSMR.UI.Blazor/Components/ProductIndicator.razor @@ -0,0 +1,22 @@ +@using JSMR.UI.Blazor.Enums + +
+ +
+ +@code { + [Parameter] + public Graphic Graphic { get; set; } + + [Parameter] + public IconVarient IconVarient { get; set; } + + [Parameter] + public ColorVarient Color { get; set; } + + [Parameter] + public ColorVarient BackgroundColor { get; set; } + + [Parameter] + public bool Clickable { get; set; } +} \ No newline at end of file diff --git a/JSMR.UI.Blazor/Components/VoiceWorkFilters.razor b/JSMR.UI.Blazor/Components/VoiceWorkFilters.razor index 44abb79..abb3e55 100644 --- a/JSMR.UI.Blazor/Components/VoiceWorkFilters.razor +++ b/JSMR.UI.Blazor/Components/VoiceWorkFilters.razor @@ -35,7 +35,11 @@ TItem="BitDropdownItem" TValue="Locale" Value="@Value.Locale" - ValueChanged="@(value => Update(Value with { Locale = value }))" /> + ValueChanged="@(value => Update(Value with { Locale = value }))"> + + + +
diff --git a/JSMR.UI.Blazor/Enums/ColorVarient.cs b/JSMR.UI.Blazor/Enums/ColorVarient.cs new file mode 100644 index 0000000..47503fe --- /dev/null +++ b/JSMR.UI.Blazor/Enums/ColorVarient.cs @@ -0,0 +1,14 @@ +namespace JSMR.UI.Blazor.Enums; + +public enum ColorVarient +{ + Primary, + Secondary, + Black, + Yellow, + Green, + Teal, + Blue, + Orange, + Pink +} \ No newline at end of file diff --git a/JSMR.UI.Blazor/Enums/Graphic.cs b/JSMR.UI.Blazor/Enums/Graphic.cs new file mode 100644 index 0000000..a485da5 --- /dev/null +++ b/JSMR.UI.Blazor/Enums/Graphic.cs @@ -0,0 +1,13 @@ +namespace JSMR.UI.Blazor.Enums; + +public enum Graphic +{ + None, + Star, + Bag, + Headphones, + Warning, + Heart, + Globe, + Translate +} \ No newline at end of file diff --git a/JSMR.UI.Blazor/Enums/IconVarient.cs b/JSMR.UI.Blazor/Enums/IconVarient.cs new file mode 100644 index 0000000..8ca9808 --- /dev/null +++ b/JSMR.UI.Blazor/Enums/IconVarient.cs @@ -0,0 +1,7 @@ +namespace JSMR.UI.Blazor.Enums; + +public enum IconVarient +{ + None, + Fill +} \ No newline at end of file diff --git a/JSMR.UI.Blazor/Enums/SizeVarient.cs b/JSMR.UI.Blazor/Enums/SizeVarient.cs new file mode 100644 index 0000000..7dccbbe --- /dev/null +++ b/JSMR.UI.Blazor/Enums/SizeVarient.cs @@ -0,0 +1,8 @@ +namespace JSMR.UI.Blazor.Enums; + +public enum SizeVarient +{ + Small, + Medium, + Large +} \ No newline at end of file diff --git a/JSMR.UI.Blazor/wwwroot/css/app.css b/JSMR.UI.Blazor/wwwroot/css/app.css index 4edfa43..036a5ab 100644 --- a/JSMR.UI.Blazor/wwwroot/css/app.css +++ b/JSMR.UI.Blazor/wwwroot/css/app.css @@ -352,6 +352,13 @@ code { } /* Input */ +.j-input-prefix { + display: flex; + align-items: center; + padding: .5em; + background-color: rgb(57, 79, 94); /* TODO: Move this out */ +} + .j-input { background: rgb(0,20,34); border: 1px solid #304562; @@ -545,7 +552,7 @@ code { } .j-product-indicator { - border-width: 1px; + border-width: 2px; border-style: solid; border-image: none; padding: 0.5rem; @@ -553,6 +560,15 @@ code { border-color: var(--product-title-text-color); } +.j-product-indicator-invalid { + border-color: #ffe073; + background: #272727; +} + +.j-product-indicator-invalid > .j-icon { + background-color: #ffe073; +} + .j-product-indicator-favorite { border-color: #f04885; background: #f048852b; @@ -610,6 +626,10 @@ code { mask-image: url("../svg/star-fill.svg"); } +.j-icon-star-fill { + mask-image: url("../svg/star-fill.svg"); +} + .j-icon-bag { mask-image: url("../svg/bag.svg"); } @@ -638,6 +658,14 @@ code { mask-image: url("../svg/warning-fill.svg"); } +.j-icon-globe { + mask-image: url("../svg/globe.svg"); +} + +.j-icon-translate { + mask-image: url("../svg/translate.svg"); +} + .j-icon-2 { background-repeat: no-repeat; background-position: center; @@ -660,4 +688,67 @@ code { .j-icon-2-flag-kr { background-image: url("../svg/flag-kr.svg"); +} + +/* Border Colors */ +.border-color-black { + border-color: var(--color-black); +} + +.border-color-yellow { + border-color: var(--color-yellow); +} + +.border-color-green { + border-color: var(--color-green); +} + +.border-color-teal { + border-color: var(--color-teal); +} + +.border-color-blue { + border-color: var(--color-blue); +} + +.border-color-orange { + border-color: var(--color-orange); +} + +.border-color-pink { + border-color: var(--color-pink); +} + +/* Background Colors */ +.background-color-black { + background-color: var(--color-black); +} + +.background-color-yellow { + background-color: var(--color-yellow); +} + +.background-color-green { + background-color: var(--color-green); +} + +.background-color-teal { + background-color: var(--color-teal); +} + +.background-color-blue { + background-color: var(--color-blue); +} + +.background-color-orange { + background-color: var(--color-orange); +} + +.background-color-pink { + background-color: var(--color-pink); +} + +/* Background Gradients */ +.background-gradient-pink { + background-image: linear-gradient(45deg, var(--color-dark-pink), var(--color-pink)) } \ No newline at end of file diff --git a/JSMR.UI.Blazor/wwwroot/css/theme-frozen.css b/JSMR.UI.Blazor/wwwroot/css/theme-frozen.css index 22c4de6..793e08f 100644 --- a/JSMR.UI.Blazor/wwwroot/css/theme-frozen.css +++ b/JSMR.UI.Blazor/wwwroot/css/theme-frozen.css @@ -39,6 +39,22 @@ --input-background-color: rgb(0,20,34); --input-focus-border-color: #64b5f6; --input-focus-box-shadow: 0 0 0 1px #93cbf9; + /* Colors */ + --color-primary: rgb(180,200, 214); + --color-secondary: rgb(200,220,234); + --color-black: #272727; + --color-yellow: #ffe073; + --color-green: #afe07d; + --color-teal: #6eecff; + --color-blue: #73c4ff; + --color-orange: #ffa773; + --color-pink: #e06894; + --color-dark-pink: #832044; + /* Background Colors */ + --background-color-primary: rgb(57, 79, 94); + --background-color-secondary: rgb(30, 53, 69); + + /* Official */ } /* diff --git a/JSMR.UI.Blazor/wwwroot/svg/globe.svg b/JSMR.UI.Blazor/wwwroot/svg/globe.svg new file mode 100644 index 0000000..a556544 --- /dev/null +++ b/JSMR.UI.Blazor/wwwroot/svg/globe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/JSMR.UI.Blazor/wwwroot/svg/translate.svg b/JSMR.UI.Blazor/wwwroot/svg/translate.svg new file mode 100644 index 0000000..7277fe0 --- /dev/null +++ b/JSMR.UI.Blazor/wwwroot/svg/translate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file