Skip to content

Commit d0d0fab

Browse files
author
Frederik Wystup
committed
feat(ui): enhance project action buttons with SVG icons and improved styles
Added SVG icons to the project action buttons for better visual representation of actions such as "Open," "Stop," "Start," "Restart," and "Delete." Additionally, updated button styles, including hover effects and color adjustments for a more cohesive and modern appearance across different themes. These changes aim to improve user experience and clarity in button functionality.
1 parent dd48a5c commit d0d0fab

2 files changed

Lines changed: 61 additions & 27 deletions

File tree

frontend/app.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -961,21 +961,35 @@ class XaresAICoder {
961961
} else if (isRunning && project.workspaceUrl) {
962962
buttons += `
963963
<button class="btn-open" onclick="app.openWorkspace('${project.projectId}', '${project.workspaceUrl}')">
964+
<svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor">
965+
<path d="M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5z"/>
966+
<path d="M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0v-5z"/>
967+
</svg>
964968
Open Workspace
965969
</button>
966970
<button class="btn-warning" onclick="app.stopProject('${project.projectId}')">
971+
<svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor">
972+
<path d="M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5zm5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5z"/>
973+
</svg>
967974
Stop
968975
</button>
969976
`;
970977
} else if (isStopped) {
971978
buttons += `
972979
<button class="btn-success" onclick="app.startProject('${project.projectId}')">
980+
<svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor">
981+
<path d="m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z"/>
982+
</svg>
973983
Start
974984
</button>
975985
`;
976986
} else if (isError) {
977987
buttons += `
978988
<button class="btn-success" onclick="app.startProject('${project.projectId}')">
989+
<svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor">
990+
<path d="M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41zm-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9z"/>
991+
<path d="M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5.002 5.002 0 0 0 8 3zM3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9H3.1z"/>
992+
</svg>
979993
Restart
980994
</button>
981995
`;
@@ -985,6 +999,10 @@ class XaresAICoder {
985999
if (!isCreating) {
9861000
buttons += `
9871001
<button class="btn-danger" onclick="app.deleteProject('${project.projectId}', '${this.escapeHtml(project.projectName)}')">
1002+
<svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor">
1003+
<path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z"/>
1004+
<path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z"/>
1005+
</svg>
9881006
Delete
9891007
</button>
9901008
`;

frontend/style.css

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -671,12 +671,12 @@ body {
671671
border-color: var(--vscode-text-accent);
672672
}
673673

674-
/* Project Action Buttons */
674+
/* Project Action Buttons - Unified Professional Theme */
675675
.btn-open {
676676
display: flex;
677677
align-items: center;
678678
justify-content: center;
679-
gap: 8px;
679+
gap: 6px;
680680
padding: 8px 16px;
681681
background: var(--vscode-button-bg);
682682
color: white;
@@ -698,11 +698,11 @@ body {
698698
display: flex;
699699
align-items: center;
700700
justify-content: center;
701-
gap: 8px;
701+
gap: 6px;
702702
padding: 8px 16px;
703-
background: var(--vscode-success);
704-
color: white;
705-
border: none;
703+
background: rgba(79, 195, 247, 0.15);
704+
color: var(--vscode-text-accent);
705+
border: 1px solid rgba(79, 195, 247, 0.3);
706706
border-radius: 6px;
707707
font-size: 13px;
708708
font-weight: 500;
@@ -711,28 +711,32 @@ body {
711711
}
712712

713713
.btn-success:hover {
714-
background: #75c172;
714+
background: rgba(79, 195, 247, 0.25);
715+
border-color: var(--vscode-text-accent);
715716
transform: translateY(-1px);
716-
box-shadow: var(--shadow-sm);
717+
box-shadow: 0 2px 8px rgba(79, 195, 247, 0.2);
717718
}
718719

719720
:root[data-theme="light"] .btn-success {
720-
background: #28a745;
721+
background: rgba(3, 102, 214, 0.08);
722+
color: #0366d6;
723+
border-color: rgba(3, 102, 214, 0.3);
721724
}
722725

723726
:root[data-theme="light"] .btn-success:hover {
724-
background: #218838;
727+
background: rgba(3, 102, 214, 0.15);
728+
border-color: #0366d6;
725729
}
726730

727731
.btn-warning {
728732
display: flex;
729733
align-items: center;
730734
justify-content: center;
731-
gap: 8px;
735+
gap: 6px;
732736
padding: 8px 16px;
733-
background: var(--vscode-warning);
734-
color: #1e1e1e;
735-
border: none;
737+
background: rgba(133, 133, 133, 0.15);
738+
color: #a0a0a0;
739+
border: 1px solid rgba(133, 133, 133, 0.3);
736740
border-radius: 6px;
737741
font-size: 13px;
738742
font-weight: 500;
@@ -741,28 +745,34 @@ body {
741745
}
742746

743747
.btn-warning:hover {
744-
background: #b8960a;
748+
background: rgba(133, 133, 133, 0.25);
749+
border-color: #a0a0a0;
750+
color: #b8b8b8;
745751
transform: translateY(-1px);
746-
box-shadow: var(--shadow-sm);
752+
box-shadow: 0 2px 8px rgba(133, 133, 133, 0.2);
747753
}
748754

749755
:root[data-theme="light"] .btn-warning {
750-
background: #ffc107;
756+
background: rgba(88, 96, 105, 0.08);
757+
color: #586069;
758+
border-color: rgba(88, 96, 105, 0.3);
751759
}
752760

753761
:root[data-theme="light"] .btn-warning:hover {
754-
background: #e0a800;
762+
background: rgba(88, 96, 105, 0.15);
763+
border-color: #586069;
764+
color: #24292e;
755765
}
756766

757767
.btn-danger {
758768
display: flex;
759769
align-items: center;
760770
justify-content: center;
761-
gap: 8px;
771+
gap: 6px;
762772
padding: 8px 16px;
763-
background: var(--vscode-error);
764-
color: white;
765-
border: none;
773+
background: rgba(244, 135, 113, 0.12);
774+
color: #f48771;
775+
border: 1px solid rgba(244, 135, 113, 0.3);
766776
border-radius: 6px;
767777
font-size: 13px;
768778
font-weight: 500;
@@ -771,24 +781,30 @@ body {
771781
}
772782

773783
.btn-danger:hover {
774-
background: #e65c4a;
784+
background: rgba(244, 135, 113, 0.2);
785+
border-color: #f48771;
786+
color: #ff9580;
775787
transform: translateY(-1px);
776-
box-shadow: var(--shadow-sm);
788+
box-shadow: 0 2px 8px rgba(244, 135, 113, 0.25);
777789
}
778790

779791
:root[data-theme="light"] .btn-danger {
780-
background: #dc3545;
792+
background: rgba(215, 58, 73, 0.08);
793+
color: #d73a49;
794+
border-color: rgba(215, 58, 73, 0.3);
781795
}
782796

783797
:root[data-theme="light"] .btn-danger:hover {
784-
background: #c82333;
798+
background: rgba(215, 58, 73, 0.15);
799+
border-color: #d73a49;
800+
color: #cb2431;
785801
}
786802

787803
.btn-open:disabled,
788804
.btn-success:disabled,
789805
.btn-warning:disabled,
790806
.btn-danger:disabled {
791-
opacity: 0.6;
807+
opacity: 0.5;
792808
cursor: not-allowed;
793809
transform: none;
794810
box-shadow: none;

0 commit comments

Comments
 (0)