diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml b/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml
index 32ef267ba8..d7d1dee90c 100644
--- a/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml
+++ b/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml
@@ -18,6 +18,7 @@
+
diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml
new file mode 100644
index 0000000000..ab726e6e19
--- /dev/null
+++ b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml.cs
new file mode 100644
index 0000000000..78c1fb1d66
--- /dev/null
+++ b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml.cs
@@ -0,0 +1,127 @@
+using System.Linq;
+using Content.Client.Administration.UI.CustomControls;
+using Content.Shared.Administration;
+using Content.Shared.Roles;
+using JetBrains.Annotations;
+using Robust.Client.AutoGenerated;
+using Robust.Client.Console;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface.CustomControls;
+using Robust.Client.UserInterface.XAML;
+using Robust.Shared.Utility;
+using Robust.Client.Graphics;
+using Robust.Client.UserInterface;
+using Robust.Shared.Prototypes;
+using static Robust.Client.UserInterface.Controls.LineEdit;
+using Content.Shared.Players.PlayTimeTracking;
+
+namespace Content.Client.Administration.UI.Tabs.AdminTab;
+
+[GenerateTypedNameReferences]
+[UsedImplicitly]
+public sealed partial class HoursPanel : DefaultWindow
+{
+ private enum Roles
+ {
+ Overall,
+
+ //Write in alphabetical order!
+
+ AtmosphericTechnician,
+ Bartender,
+ Bomzh,
+ Borg,
+ Botanist,
+ Boxer,
+ Brigmedic,
+ Captain,
+ CargoTechnician,
+ Chaplain,
+ Chef,
+ Chemist,
+ ChiefEngineer,
+ ChiefMedicalOfficer,
+ Clown,
+ Detective,
+ HeadOfPersonnel,
+ HeadOfSecurity,
+ Inspector,
+ Janitor,
+ Lawyer,
+ Librarian,
+ Maid,
+ MedicalDoctor,
+ MedicalIntern,
+ Mime,
+ Musician,
+ Paramedic,
+ Passenger,
+ Psychologist,
+ Quartermaster,
+ Reporter,
+ ResearchAssistant,
+ ResearchDirector,
+ SalvageSpecialist,
+ Scientist,
+ SecurityCadet,
+ SecurityOfficer,
+ SeniorEngineer,
+ SeniorOfficer,
+ SeniorPhysician,
+ SeniorResearcher,
+ ServiceWorker,
+ StationEngineer,
+ TechnicalAssistant,
+ Visitor,
+ Warden,
+ Zookeeper
+ }
+
+
+ public HoursPanel()
+ {
+ RobustXamlLoader.Load(this);
+ PlayerList.OnSelectionChanged += OnPlayerSelectionChanged;
+ HourButton.OnPressed += _ => AddMinutes(60);
+ MinutesLine.OnTextChanged += UpdateButtonsText;
+
+ foreach (var proto in IoCManager.Resolve().EnumeratePrototypes())
+ {
+
+ }
+
+ }
+ private bool TryGetMinutes(string str, out uint minutes)
+ {
+ minutes = 0;
+ return string.IsNullOrWhiteSpace(str) || uint.TryParse(str, out minutes);
+ }
+ private void AddMinutes(uint add)
+ {
+ if (!TryGetMinutes(MinutesLine.Text, out var minutes))
+ return;
+
+ MinutesLine.Text = $"{minutes + add}";
+ UpdateButtons(minutes + add);
+ }
+ private void UpdateButtonsText(LineEditEventArgs obj)
+ {
+ if (!TryGetMinutes(obj.Text, out var minutes))
+ return;
+
+ UpdateButtons(minutes);
+ }
+ private void UpdateButtons(uint minutes)
+ {
+ HourButton.Text = $"+1h ({minutes / 60})";
+ }
+ private void OnNamesChanged()
+ {
+ SubmitButton.Disabled = string.IsNullOrEmpty(PlayerNameLine.Text);
+ }
+ private void OnPlayerSelectionChanged(PlayerInfo? player)
+ {
+ PlayerNameLine.Text = player?.Username ?? string.Empty;
+ OnNamesChanged();
+ }
+}