diff --git a/BlazorApp/Components/Pages/Developers.razor b/BlazorApp/Components/Pages/Developers.razor index be3fea6..ef4711b 100644 --- a/BlazorApp/Components/Pages/Developers.razor +++ b/BlazorApp/Components/Pages/Developers.razor @@ -119,8 +119,14 @@
- - + + + + @foreach (var tz in _timezones) + { + + } +
@@ -164,26 +170,27 @@ - - @if (_application.Role == ApplicationRole.Developer) - { -
-

Skills & Experience

-

Tell us about your technical background — languages, frameworks, and any open-source contributions.

-
- -
-
- } - - +
-

Why SilverLabs?

-

What draws you to privacy-first development? What do you hope to contribute?

+

What You Bring

+

Tell us about your skills and what you'd bring to the team.

+ + @if (_application.Role == ApplicationRole.Developer) + { +
+ + + Languages, frameworks, tools, and any open-source contributions +
+ } +
+ + placeholder="@(_application.Role == ApplicationRole.Developer + ? "What areas interest you? Architecture, frontend, backend, DevOps, security..." + : "What devices/platforms can you test on? What kind of testing experience do you have?")" rows="4" />
@@ -249,6 +256,11 @@ private readonly string[] _availablePlatforms = { "Windows", "macOS", "Linux", "Android", "iOS", "Other" }; + private static readonly List<(string Id, string Label)> _timezones = TimeZoneInfo.GetSystemTimeZones() + .OrderBy(tz => tz.BaseUtcOffset) + .Select(tz => (tz.Id, $"(UTC{(tz.BaseUtcOffset >= TimeSpan.Zero ? "+" : "")}{tz.BaseUtcOffset:hh\\:mm}) {tz.DisplayName}")) + .ToList(); + private static readonly System.Text.RegularExpressions.Regex UsernamePattern = new(@"^[a-zA-Z0-9_-]{3,30}$", System.Text.RegularExpressions.RegexOptions.Compiled); diff --git a/BlazorApp/Models/DeveloperApplication.cs b/BlazorApp/Models/DeveloperApplication.cs index a254fee..3f51768 100644 --- a/BlazorApp/Models/DeveloperApplication.cs +++ b/BlazorApp/Models/DeveloperApplication.cs @@ -36,8 +36,8 @@ public class DeveloperApplication [Compare("Password", ErrorMessage = "Passwords do not match")] public string ConfirmPassword { get; set; } = string.Empty; - [Required(ErrorMessage = "Please tell us why you want to join")] - [StringLength(2000, MinimumLength = 20, ErrorMessage = "Motivation must be between 20 and 2000 characters")] + [Required(ErrorMessage = "Please tell us how you'll contribute")] + [StringLength(2000, MinimumLength = 20, ErrorMessage = "Please write at least 20 characters")] public string Motivation { get; set; } = string.Empty; }