diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java index 90a2bd222d61..d0f0b5c84f59 100644 --- a/core/src/main/java/hudson/Functions.java +++ b/core/src/main/java/hudson/Functions.java @@ -1266,7 +1266,12 @@ public int compareTo(Tag that) { public static String getIconFilePath(Action a) { String name = a.getIconFileName(); - if (name == null) return null; + if (name == null) { + return null; + } + if (name.startsWith("symbol-")) { + return name; + } if (name.startsWith("/")) return name.substring(1); else diff --git a/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java b/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java index 70aad291b950..f47847ac2f88 100644 --- a/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java +++ b/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java @@ -99,11 +99,15 @@ public ContextMenu add(Action a) { String text = a.getDisplayName(); String base = Functions.getIconFilePath(a); if (base == null) return this; - String icon = Stapler.getCurrentRequest().getContextPath() + (base.startsWith("images/") ? Functions.getResourcePath() : "") + '/' + base; - String url = Functions.getActionUrl(req.findAncestor(ModelObject.class).getUrl(), a); - return add(url, icon, text); + if (base.startsWith("symbol-")) { + Icon icon = Functions.tryGetIcon(base); + return add(url, icon.getClassSpec(), text); + } else { + String icon = Stapler.getCurrentRequest().getContextPath() + (base.startsWith("images/") ? Functions.getResourcePath() : "") + '/' + base; + return add(url, icon, text); + } } public ContextMenu add(String url, String icon, String text) { diff --git a/core/src/main/java/org/jenkins/ui/icon/IconSet.java b/core/src/main/java/org/jenkins/ui/icon/IconSet.java index 0430353c558e..1b0559c55c87 100644 --- a/core/src/main/java/org/jenkins/ui/icon/IconSet.java +++ b/core/src/main/java/org/jenkins/ui/icon/IconSet.java @@ -77,16 +77,22 @@ private static String prependTitleIfRequired(String icon, String title) { // for Jelly @Restricted(NoExternalUse.class) - public static String getSymbol(String name, String title, String classes) { - if (SYMBOLS.containsKey(name)) { - String symbol = SYMBOLS.get(name); + public static String getSymbol(String name, String title, String tooltip, String classes) { + String translatedName = cleanName(name); + + if (SYMBOLS.containsKey(translatedName)) { + String symbol = SYMBOLS.get(translatedName); symbol = symbol.replaceAll("(class=\")[^&]*?(\")", "$1$2"); + symbol = symbol.replaceAll("(tooltip=\")[^&]*?(\")", ""); + if (!tooltip.isEmpty()) { + symbol = symbol.replaceAll(")[^&]*()", "$1$2"); symbol = symbol.replaceAll("(class=\")[^&]*?(\")", "$1$2"); + symbol = symbol.replaceAll("(tooltip=\")[^&]*?(\")", "$1$2"); + if (!tooltip.isEmpty()) { + symbol = symbol.replaceAll(" translations = new HashMap<>(); + translations.put("icon-application-certificate", "symbol-ribbon"); + translations.put("icon-document", "symbol-document-text"); + translations.put("icon-clipboard", "symbol-logs"); translations.put("icon-clock", "symbol-play"); translations.put("icon-edit-delete", "symbol-trash"); + translations.put("icon-fingerprint", "symbol-fingerprint"); + translations.put("icon-folder", "symbol-folder"); translations.put("icon-gear", "symbol-settings"); translations.put("icon-gear2", "symbol-settings"); + translations.put("icon-help", "symbol-help-circle"); + translations.put("icon-keys", "symbol-key"); + translations.put("icon-monitor", "symbol-terminal"); + translations.put("icon-new-package", "symbol-add"); + translations.put("icon-next", "symbol-arrow-right"); translations.put("icon-plugin", "symbol-plugins"); + translations.put("icon-previous", "symbol-arrow-left"); + translations.put("icon-search", "symbol-search"); + translations.put("icon-setting", "symbol-build"); + translations.put("icon-terminal", "symbol-terminal"); + translations.put("icon-text", "symbol-details"); translations.put("icon-up", "symbol-arrow-up"); - translations.put("icon-help", "symbol-help-circle"); + translations.put("icon-user", "symbol-people"); + + String cleanedTangoIcon = cleanName(tangoIcon); + return translations.getOrDefault(cleanedTangoIcon, null); + } - return translations.getOrDefault(tangoIcon, null); + private static String cleanName(String tangoIcon) { + if (tangoIcon != null) { + tangoIcon = tangoIcon.split(" ")[0]; + } + return tangoIcon; } } diff --git a/core/src/main/resources/hudson/PluginManager/sidepanel.groovy b/core/src/main/resources/hudson/PluginManager/sidepanel.groovy index 328452420adf..4e9eca335bda 100644 --- a/core/src/main/resources/hudson/PluginManager/sidepanel.groovy +++ b/core/src/main/resources/hudson/PluginManager/sidepanel.groovy @@ -30,7 +30,7 @@ l.side_panel { l.task(icon:"icon-up icon-md", href:rootURL+'/', title:_("Back to Dashboard")) l.task(icon:"symbol-settings", href:"${rootURL}/manage", title:_("Manage Jenkins")) if (!app.updateCenter.jobs.isEmpty()) { - l.task(icon:"icon-plugin icon-md", href:"${rootURL}/updateCenter/", title:_("Update Center")) + l.task(icon: "symbol-download", href:"${rootURL}/updateCenter/", title:_("Update Center")) } } } diff --git a/core/src/main/resources/hudson/diagnosis/MemoryUsageMonitor/index.jelly b/core/src/main/resources/hudson/diagnosis/MemoryUsageMonitor/index.jelly index fa1b767e279c..bb0efd378ea8 100644 --- a/core/src/main/resources/hudson/diagnosis/MemoryUsageMonitor/index.jelly +++ b/core/src/main/resources/hudson/diagnosis/MemoryUsageMonitor/index.jelly @@ -29,7 +29,6 @@ THE SOFTWARE.

- ${%JVM Memory Usage}

diff --git a/core/src/main/resources/hudson/logging/LogRecorder/configure.jelly b/core/src/main/resources/hudson/logging/LogRecorder/configure.jelly index 61aa94aa2fb4..da9966c39387 100644 --- a/core/src/main/resources/hudson/logging/LogRecorder/configure.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorder/configure.jelly @@ -29,8 +29,12 @@ THE SOFTWARE. + + + + + -

${%Configure log recorder}

${%Enter the name of the logger you want to enable}.

diff --git a/core/src/main/resources/hudson/logging/LogRecorder/index.jelly b/core/src/main/resources/hudson/logging/LogRecorder/index.jelly index 34e2525d0468..4bba5b2fbf78 100644 --- a/core/src/main/resources/hudson/logging/LogRecorder/index.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorder/index.jelly @@ -30,7 +30,7 @@ THE SOFTWARE. -

${it.displayName}

+

${it.displayName}

${entry.key.displayName}

diff --git a/core/src/main/resources/hudson/logging/LogRecorder/sidepanel.jelly b/core/src/main/resources/hudson/logging/LogRecorder/sidepanel.jelly index 35605d5a7cd7..928bc0633f97 100644 --- a/core/src/main/resources/hudson/logging/LogRecorder/sidepanel.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorder/sidepanel.jelly @@ -31,7 +31,7 @@ THE SOFTWARE. - + diff --git a/core/src/main/resources/hudson/logging/LogRecorderManager/all.jelly b/core/src/main/resources/hudson/logging/LogRecorderManager/all.jelly index 87d50ed6afd2..c13fd7923f22 100644 --- a/core/src/main/resources/hudson/logging/LogRecorderManager/all.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorderManager/all.jelly @@ -30,7 +30,7 @@ THE SOFTWARE. -

${%Jenkins Log}

+

${%Jenkins Log}

Log messages at a level lower than INFO are never recorded in the Jenkins log. Use log recorders to record these log messages.
diff --git a/core/src/main/resources/hudson/logging/LogRecorderManager/feeds.jelly b/core/src/main/resources/hudson/logging/LogRecorderManager/feeds.jelly index 1c4857bb49cc..6f4ccb7f8d08 100644 --- a/core/src/main/resources/hudson/logging/LogRecorderManager/feeds.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorderManager/feeds.jelly @@ -28,22 +28,19 @@ THE SOFTWARE.
- + ${%All} - + ${%SEVERE} - + ${%WARNING} diff --git a/core/src/main/resources/hudson/logging/LogRecorderManager/index.jelly b/core/src/main/resources/hudson/logging/LogRecorderManager/index.jelly index 7d3ee4e022fb..868e163837a1 100644 --- a/core/src/main/resources/hudson/logging/LogRecorderManager/index.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorderManager/index.jelly @@ -28,17 +28,19 @@ THE SOFTWARE. + + + + + ${%Add new log recorder} + + + + + + -
-
-

- ${%Log Recorders} - -

-
-
- @@ -72,13 +74,6 @@ THE SOFTWARE. - -
-

- -

-
-
diff --git a/core/src/main/resources/hudson/logging/LogRecorderManager/levels.jelly b/core/src/main/resources/hudson/logging/LogRecorderManager/levels.jelly index bb029bd5646a..c6b2610ba333 100644 --- a/core/src/main/resources/hudson/logging/LogRecorderManager/levels.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorderManager/levels.jelly @@ -27,14 +27,17 @@ THE SOFTWARE. --> - + + + + + + + + -

- ${%Logger Configuration} - -

- +
diff --git a/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel.jelly b/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel.jelly index 1fe04c8eb476..f74a2e7234af 100644 --- a/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel.jelly +++ b/core/src/main/resources/hudson/logging/LogRecorderManager/sidepanel.jelly @@ -32,12 +32,8 @@ THE SOFTWARE. - - - - - - + + diff --git a/core/src/main/resources/hudson/model/AbstractBuild/index.jelly b/core/src/main/resources/hudson/model/AbstractBuild/index.jelly index 3f1774061cc2..821b688883be 100644 --- a/core/src/main/resources/hudson/model/AbstractBuild/index.jelly +++ b/core/src/main/resources/hudson/model/AbstractBuild/index.jelly @@ -58,7 +58,7 @@ THE SOFTWARE. permission="${it.ARTIFACTS}" /> - + diff --git a/core/src/main/resources/hudson/model/AbstractBuild/tasks.jelly b/core/src/main/resources/hudson/model/AbstractBuild/tasks.jelly index f3a6157e79a3..51fea22735b1 100644 --- a/core/src/main/resources/hudson/model/AbstractBuild/tasks.jelly +++ b/core/src/main/resources/hudson/model/AbstractBuild/tasks.jelly @@ -28,8 +28,8 @@ THE SOFTWARE. - - + + diff --git a/core/src/main/resources/hudson/model/AbstractItem/confirm-rename.jelly b/core/src/main/resources/hudson/model/AbstractItem/confirm-rename.jelly index 86daf0d31b34..2eb3b30735ab 100644 --- a/core/src/main/resources/hudson/model/AbstractItem/confirm-rename.jelly +++ b/core/src/main/resources/hudson/model/AbstractItem/confirm-rename.jelly @@ -27,7 +27,7 @@ THE SOFTWARE. -

${%DescribeRename(it.pronoun, it.name)}

+

${%DescribeRename(it.pronoun, it.name)}

diff --git a/core/src/main/resources/hudson/model/AbstractProject/main.jelly b/core/src/main/resources/hudson/model/AbstractProject/main.jelly index 7d6d6fb4f802..90543b6420fa 100644 --- a/core/src/main/resources/hudson/model/AbstractProject/main.jelly +++ b/core/src/main/resources/hudson/model/AbstractProject/main.jelly @@ -38,7 +38,7 @@ THE SOFTWARE. ${act.displayName}
- + ${%Workspace} @@ -46,7 +46,7 @@ THE SOFTWARE. build="${it.lastSuccessfulBuild}" baseURL="lastSuccessfulBuild/" permission="${it.lastSuccessfulBuild.ARTIFACTS}"/> - + ${%Recent Changes} diff --git a/core/src/main/resources/hudson/model/AbstractProject/sidepanel.jelly b/core/src/main/resources/hudson/model/AbstractProject/sidepanel.jelly index b3259668e1a1..28132fb64541 100644 --- a/core/src/main/resources/hudson/model/AbstractProject/sidepanel.jelly +++ b/core/src/main/resources/hudson/model/AbstractProject/sidepanel.jelly @@ -45,10 +45,10 @@ THE SOFTWARE. - - - - + + + + diff --git a/core/src/main/resources/hudson/model/CauseAction/summary.jelly b/core/src/main/resources/hudson/model/CauseAction/summary.jelly index 1c7f6d0dff09..ccde699aee2a 100644 --- a/core/src/main/resources/hudson/model/CauseAction/summary.jelly +++ b/core/src/main/resources/hudson/model/CauseAction/summary.jelly @@ -24,7 +24,7 @@ THE SOFTWARE. - +

diff --git a/core/src/main/resources/hudson/model/Computer/builds.jelly b/core/src/main/resources/hudson/model/Computer/builds.jelly index 6da3169b97e5..805f32563ddc 100644 --- a/core/src/main/resources/hudson/model/Computer/builds.jelly +++ b/core/src/main/resources/hudson/model/Computer/builds.jelly @@ -28,7 +28,6 @@ THE SOFTWARE.

- ${%title(it.displayName)}

diff --git a/core/src/main/resources/hudson/model/Computer/sidepanel.jelly b/core/src/main/resources/hudson/model/Computer/sidepanel.jelly index 9e471add60d8..928ae5915984 100644 --- a/core/src/main/resources/hudson/model/Computer/sidepanel.jelly +++ b/core/src/main/resources/hudson/model/Computer/sidepanel.jelly @@ -33,12 +33,12 @@ THE SOFTWARE. - - - + + - + diff --git a/core/src/main/resources/hudson/model/DirectoryBrowserSupport/dir.jelly b/core/src/main/resources/hudson/model/DirectoryBrowserSupport/dir.jelly index d0afa4d63093..104bda035f73 100644 --- a/core/src/main/resources/hudson/model/DirectoryBrowserSupport/dir.jelly +++ b/core/src/main/resources/hudson/model/DirectoryBrowserSupport/dir.jelly @@ -33,13 +33,15 @@ THE SOFTWARE.

- + ${it.owner.name} / ${p.title} / - - + +
@@ -62,7 +64,7 @@ THE SOFTWARE.
@@ -87,16 +89,17 @@ THE SOFTWARE. - @@ -104,8 +107,8 @@ THE SOFTWARE.
${%Name} - + ${t.title} @@ -71,7 +73,7 @@ THE SOFTWARE. ${t.title} - + / ${h.humanReadableByteSize(x.getSize())} + - - + + - - ${%view} - + + + +
diff --git a/core/src/main/resources/hudson/model/Label/index.jelly b/core/src/main/resources/hudson/model/Label/index.jelly index a86440d0ccf8..f39235ebe467 100644 --- a/core/src/main/resources/hudson/model/Label/index.jelly +++ b/core/src/main/resources/hudson/model/Label/index.jelly @@ -28,7 +28,6 @@ THE SOFTWARE.

- ${it.name}

@@ -46,9 +45,7 @@ THE SOFTWARE. - - - + ${c.displayName} diff --git a/core/src/main/resources/hudson/model/Label/sidepanel.jelly b/core/src/main/resources/hudson/model/Label/sidepanel.jelly index 123e50bb3d31..1f5dcc9af35c 100644 --- a/core/src/main/resources/hudson/model/Label/sidepanel.jelly +++ b/core/src/main/resources/hudson/model/Label/sidepanel.jelly @@ -32,11 +32,11 @@ THE SOFTWARE. - + - + diff --git a/core/src/main/resources/hudson/model/LoadStatistics/main.jelly b/core/src/main/resources/hudson/model/LoadStatistics/main.jelly index 1c7c09790e18..fec30dee412b 100644 --- a/core/src/main/resources/hudson/model/LoadStatistics/main.jelly +++ b/core/src/main/resources/hudson/model/LoadStatistics/main.jelly @@ -27,7 +27,6 @@ THE SOFTWARE.

- ${%title(it.displayName)}

diff --git a/core/src/main/resources/hudson/model/NoFingerprintMatch/index.jelly b/core/src/main/resources/hudson/model/NoFingerprintMatch/index.jelly index 21ceb2d4f7e4..109a94a8113c 100644 --- a/core/src/main/resources/hudson/model/NoFingerprintMatch/index.jelly +++ b/core/src/main/resources/hudson/model/NoFingerprintMatch/index.jelly @@ -25,8 +25,7 @@ THE SOFTWARE. - - + @@ -34,8 +33,7 @@ THE SOFTWARE.

- - ${%No matching record found} + ${title}

diff --git a/core/src/main/resources/hudson/model/User/sidepanel.jelly b/core/src/main/resources/hudson/model/User/sidepanel.jelly index c2910e39bbd4..4093ab5ea00a 100644 --- a/core/src/main/resources/hudson/model/User/sidepanel.jelly +++ b/core/src/main/resources/hudson/model/User/sidepanel.jelly @@ -33,7 +33,7 @@ THE SOFTWARE. - + diff --git a/core/src/main/resources/hudson/model/View/sidepanel.jelly b/core/src/main/resources/hudson/model/View/sidepanel.jelly index 8b87279dc7e3..c5e00f427a20 100644 --- a/core/src/main/resources/hudson/model/View/sidepanel.jelly +++ b/core/src/main/resources/hudson/model/View/sidepanel.jelly @@ -40,7 +40,7 @@ THE SOFTWARE. - + @@ -51,7 +51,7 @@ THE SOFTWARE. - + @@ -60,7 +60,7 @@ THE SOFTWARE. - + diff --git a/core/src/main/resources/hudson/widgets/HistoryWidget/index.jelly b/core/src/main/resources/hudson/widgets/HistoryWidget/index.jelly index ef0e71d94b72..08a3143b052d 100644 --- a/core/src/main/resources/hudson/widgets/HistoryWidget/index.jelly +++ b/core/src/main/resources/hudson/widgets/HistoryWidget/index.jelly @@ -47,11 +47,15 @@ THE SOFTWARE. --> - - Atom feed ${%for all} + + + + Atom feed ${%for all} - + + + Atom feed ${%for failures} diff --git a/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck.jelly b/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck.jelly index 77379a58ea54..06258f85690e 100644 --- a/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck.jelly +++ b/core/src/main/resources/jenkins/model/Jenkins/fingerprintCheck.jelly @@ -31,7 +31,6 @@ THE SOFTWARE.

- ${%Check File Fingerprint}

diff --git a/core/src/main/resources/jenkins/model/Jenkins/projectRelationship.jelly b/core/src/main/resources/jenkins/model/Jenkins/projectRelationship.jelly index a0322e03b462..f6e70c66f84e 100644 --- a/core/src/main/resources/jenkins/model/Jenkins/projectRelationship.jelly +++ b/core/src/main/resources/jenkins/model/Jenkins/projectRelationship.jelly @@ -28,9 +28,15 @@ THE SOFTWARE. + + + + + + + -

${%Project Relationship}

@@ -48,7 +54,6 @@ THE SOFTWARE. diff --git a/core/src/main/resources/jenkins/model/RenameAction/action.jelly b/core/src/main/resources/jenkins/model/RenameAction/action.jelly index 992a1ce7cf91..6b9a1680abc4 100644 --- a/core/src/main/resources/jenkins/model/RenameAction/action.jelly +++ b/core/src/main/resources/jenkins/model/RenameAction/action.jelly @@ -26,6 +26,6 @@ THE SOFTWARE. - + diff --git a/core/src/main/resources/lib/hudson/artifactList.jelly b/core/src/main/resources/lib/hudson/artifactList.jelly index d4909b1731d0..60e17bf92376 100644 --- a/core/src/main/resources/lib/hudson/artifactList.jelly +++ b/core/src/main/resources/lib/hudson/artifactList.jelly @@ -41,7 +41,7 @@ THE SOFTWARE. - + ${caption}

diff --git a/core/src/main/resources/lib/hudson/editableDescription.jelly b/core/src/main/resources/lib/hudson/editableDescription.jelly index 4faef20c6b3e..33890930882a 100644 --- a/core/src/main/resources/lib/hudson/editableDescription.jelly +++ b/core/src/main/resources/lib/hudson/editableDescription.jelly @@ -43,7 +43,7 @@ THE SOFTWARE.

- + diff --git a/core/src/main/resources/lib/hudson/help.jelly b/core/src/main/resources/lib/hudson/help.jelly index faef6068b903..6fb1d427b1f0 100644 --- a/core/src/main/resources/lib/hudson/help.jelly +++ b/core/src/main/resources/lib/hudson/help.jelly @@ -33,10 +33,10 @@ THE SOFTWARE. The tooltip to display - Icon size, available are: small, medium, large, xlarge + Icon size, available are: small, medium, large, xlarge - - + + ? diff --git a/core/src/main/resources/lib/hudson/rssBar.jelly b/core/src/main/resources/lib/hudson/rssBar.jelly index 1735b831115e..c40d59d7335b 100644 --- a/core/src/main/resources/lib/hudson/rssBar.jelly +++ b/core/src/main/resources/lib/hudson/rssBar.jelly @@ -29,25 +29,19 @@ THE SOFTWARE. ${%Legend} - + Atom feed ${%for all} - + Atom feed ${%for failures} - + Atom feed ${%for just latest builds} diff --git a/core/src/main/resources/lib/hudson/scriptConsole.jelly b/core/src/main/resources/lib/hudson/scriptConsole.jelly index 1c7814018344..58e43fe3d3a6 100644 --- a/core/src/main/resources/lib/hudson/scriptConsole.jelly +++ b/core/src/main/resources/lib/hudson/scriptConsole.jelly @@ -27,23 +27,11 @@ THE SOFTWARE. --> - + - - - - - - - - -

- - ${%Script Console} - -

+

${%Script Console}

diff --git a/core/src/main/resources/lib/hudson/summary.jelly b/core/src/main/resources/lib/hudson/summary.jelly index 8f6f63cdc2ac..a9945322b455 100644 --- a/core/src/main/resources/lib/hudson/summary.jelly +++ b/core/src/main/resources/lib/hudson/summary.jelly @@ -44,20 +44,9 @@ THE SOFTWARE. -
+
-
- - - - - - - - - - + diff --git a/core/src/main/resources/lib/layout/icon.jelly b/core/src/main/resources/lib/layout/icon.jelly index e0eb926f1d61..3d9b909cb65d 100644 --- a/core/src/main/resources/lib/layout/icon.jelly +++ b/core/src/main/resources/lib/layout/icon.jelly @@ -46,7 +46,7 @@ THE SOFTWARE. title, deprecated use tooltip instead style tooltip - alt + alt, adds invisible text suitable for screen-readers for symbols, sets the alt attribute for normal images @@ -67,6 +67,7 @@ THE SOFTWARE. + diff --git a/core/src/main/resources/lib/layout/pane.jelly b/core/src/main/resources/lib/layout/pane.jelly index 5298a274f2e0..c1f55e13d102 100644 --- a/core/src/main/resources/lib/layout/pane.jelly +++ b/core/src/main/resources/lib/layout/pane.jelly @@ -30,7 +30,7 @@ THE SOFTWARE. The box is drawn as a table, and the body of this tag is expected to draw a series of <TR>s to fill in the contents of the box. - + Title of the box. Can include HTML. @@ -63,9 +63,8 @@ THE SOFTWARE. - - + + @@ -92,4 +91,4 @@ THE SOFTWARE. - \ No newline at end of file + diff --git a/core/src/main/resources/lib/layout/tabNewItem.jelly b/core/src/main/resources/lib/layout/tabNewItem.jelly index b85769c75b77..f0d98237cfb3 100644 --- a/core/src/main/resources/lib/layout/tabNewItem.jelly +++ b/core/src/main/resources/lib/layout/tabNewItem.jelly @@ -11,7 +11,7 @@ diff --git a/core/src/main/resources/lib/layout/task.jelly b/core/src/main/resources/lib/layout/task.jelly index bba181408104..5a7e61c9ffd9 100644 --- a/core/src/main/resources/lib/layout/task.jelly +++ b/core/src/main/resources/lib/layout/task.jelly @@ -171,7 +171,7 @@ THE SOFTWARE. - + diff --git a/core/src/test/java/org/jenkins/ui/icon/IconSetTest.java b/core/src/test/java/org/jenkins/ui/icon/IconSetTest.java index c37af4be4ff4..9d1027b871f9 100644 --- a/core/src/test/java/org/jenkins/ui/icon/IconSetTest.java +++ b/core/src/test/java/org/jenkins/ui/icon/IconSetTest.java @@ -1,7 +1,9 @@ package org.jenkins.ui.icon; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThanOrEqualTo; +import static org.hamcrest.Matchers.not; import java.util.Map; import org.junit.jupiter.api.Test; @@ -16,4 +18,47 @@ void testIconSetSize() { final Map coreIcons = IconSet.icons.getCoreIcons(); assertThat("icons", coreIcons.size(), greaterThanOrEqualTo(350)); } + + @Test + void getSymbol() { + String symbol = IconSet.getSymbol("download", "Title", "Tooltip", "class1 class2"); + + assertThat(symbol, containsString("Title")); + assertThat(symbol, containsString("tooltip=\"Tooltip\"")); + assertThat(symbol, containsString("class=\"class1 class2\"")); + } + + @Test + void getSymbol_cachedSymbolDoesntReturnAttributes() { + IconSet.getSymbol("download", "Title", "Tooltip", "class1 class2"); + String symbol = IconSet.getSymbol("download", "", "", ""); + + assertThat(symbol, not(containsString("Title"))); + assertThat(symbol, not(containsString("tooltip=\"Tooltip\""))); + assertThat(symbol, not(containsString("class=\"class1 class2\""))); + } + + @Test + void getSymbol_cachedSymbolAllowsSettingAllAttributes() { + IconSet.getSymbol("download", "Title", "Tooltip", "class1 class2"); + String symbol = IconSet.getSymbol("download", "Title2", "Tooltip2", "class3 class4"); + + assertThat(symbol, not(containsString("Title"))); + assertThat(symbol, not(containsString("tooltip=\"Tooltip\""))); + assertThat(symbol, not(containsString("class=\"class1 class2\""))); + assertThat(symbol, containsString("Title2")); + assertThat(symbol, containsString("tooltip=\"Tooltip2\"")); + assertThat(symbol, containsString("class=\"class3 class4\"")); + } + + /** + * YUI tooltips require that the attribute not be set, otherwise a white rectangle will show on hover + * TODO: This might be able to be removed when we move away from YUI tooltips to a better solution + */ + @Test + void getSymbol_notSettingTooltipDoesntAddTooltipAttribute() { + String symbol = IconSet.getSymbol("download", "Title", "", "class1 class2"); + + assertThat(symbol, not(containsString("tooltip"))); + } } diff --git a/test/src/test/java/lib/layout/IconTest.java b/test/src/test/java/lib/layout/IconTest.java index 478cf76da4be..c82f3410676c 100644 --- a/test/src/test/java/lib/layout/IconTest.java +++ b/test/src/test/java/lib/layout/IconTest.java @@ -94,12 +94,12 @@ public void testBallColorTd() throws Exception { DomElement ballColorAborted = p.getElementById("ballColorAborted"); List ballIcons = StreamSupport.stream(ballColorAborted.getChildElements().spliterator(), false).collect(Collectors.toList()); - assertIconToSvgOkay(ballIcons.get(0).getFirstElementChild(), "icon-aborted icon-lg"); + assertIconToSvgIconOkay(ballIcons.get(0).getFirstElementChild(), "icon-aborted icon-lg"); DomElement statusIcons = p.getElementById("statusIcons"); List statusIconsList = StreamSupport.stream(statusIcons.getChildElements().spliterator(), false).collect(Collectors.toList()); - assertIconToImageOkay(statusIconsList.get(0).getFirstElementChild(), "/images/svgs/user.svg", "icon-user icon-xlg"); + assertIconToSvgOkay(statusIconsList.get(0).getFirstElementChild().getNextElementSibling(), "icon-user icon-xlg"); assertIconToImageOkay(statusIconsList.get(1).getFirstElementChild(), "/plugin/12345/icons/s2.png"); } @@ -144,7 +144,7 @@ public void testTasks() throws Exception { assertIconToSymbolOkay(taskDivs.get(0).getElementsByTagName("svg").get(0)); // this is loading the png from cloudbees-folder plugin // when this is swapped to an SVG and the dep updated this test will need to change - assertIconToImageOkay(taskDivs.get(1).getElementsByTagName("img").get(0), "/images/svgs/folder.svg"); + assertIconToSvgOkay(taskDivs.get(1).getElementsByTagName("svg").get(0), "icon-folder icon-md"); assertIconToImageOkay(taskDivs.get(2).getElementsByTagName("img").get(0), "/images/svgs/package.svg"); assertIconToImageOkay(taskDivs.get(3).getElementsByTagName("img").get(0), "/images/svgs/package.svg"); assertIconToImageOkay(taskDivs.get(4).getElementsByTagName("img").get(0), "/images/svgs/package.svg"); @@ -175,7 +175,15 @@ private void assertIconToImageOkay(DomElement icon, String imgPath, String class } private void assertIconToSvgOkay(DomElement icon, String classSpec) { - assertThat("span", is(icon.getTagName())); + assertThat(icon.getTagName(), is("svg")); + + if (classSpec != null) { + assertThat(icon.getAttribute("class"), endsWith(classSpec)); + } + } + + private void assertIconToSvgIconOkay(DomElement icon, String classSpec) { + assertThat(icon.getTagName(), is("span")); if (classSpec != null) { assertThat(icon.getAttribute("class"), endsWith(classSpec)); } diff --git a/war/src/main/less/abstracts/theme.less b/war/src/main/less/abstracts/theme.less index e49df79a9b8c..87036fdeeb41 100644 --- a/war/src/main/less/abstracts/theme.less +++ b/war/src/main/less/abstracts/theme.less @@ -141,6 +141,7 @@ --btn-large-font-size: var(--font-size-sm); --btn-large-line-height: 1.25rem; // Button primary + --button-color--primary: var(--background); --btn-primary-bg: #063F61; --btn-primary-bg-hover: lighten(#063F61, 7.5%); --btn-primary-bg-active: lighten(#063F61, 12%); diff --git a/war/src/main/less/base-styles-v2.less b/war/src/main/less/base-styles-v2.less index 925f839bd2b1..51b03efde75b 100644 --- a/war/src/main/less/base-styles-v2.less +++ b/war/src/main/less/base-styles-v2.less @@ -41,6 +41,7 @@ html { @import './modules/badges'; @import './modules/breadcrumbs'; @import './modules/buttons'; +@import './modules/buttons-temp'; @import './modules/content-blocks'; @import './modules/icon-size'; @import './modules/icons'; diff --git a/war/src/main/less/base/layout-commons.less b/war/src/main/less/base/layout-commons.less index 282512e1c382..398227a4ca7c 100644 --- a/war/src/main/less/base/layout-commons.less +++ b/war/src/main/less/base/layout-commons.less @@ -63,8 +63,6 @@ body { } #side-panel { - padding: 1rem 0 2.5rem 0; - width: 300px; flex-shrink: 0; } diff --git a/war/src/main/less/base/style.less b/war/src/main/less/base/style.less index 918f91153bb6..be309b9cd985 100644 --- a/war/src/main/less/base/style.less +++ b/war/src/main/less/base/style.less @@ -589,13 +589,25 @@ div.behavior-loading { } .info { - color: var(--text-color); - font-weight: bold; - padding-left: 20px; - min-height: 16px; - background-image: url("../../images/16x16/go-next.png"); /* TODO: get a better icon */ - background-position: left center; - background-repeat: no-repeat; + position: relative; + color: var(--text-color); + font-weight: bold; + min-height: 16px; + padding-left: 30px; + + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 20px; + background: currentColor; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'%3E%3Ctitle%3EArrow Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='32' d='M268 112l144 144-144 144M392 256H100'/%3E%3C/svg%3E"); + mask-position: center; + mask-size: contain; + mask-repeat: no-repeat; + } } .icon16x16 { @@ -832,6 +844,11 @@ table.parameters > tbody:hover { #buildHistory .build-rss-all-icon, #buildHistory .build-rss-failed-icon { margin-right: 0.25rem; + + svg { + width: 16px; + height: 16px; + } } #buildHistoryPage { @@ -1040,9 +1057,16 @@ table.parameters > tbody:hover { } /* ========================= directory tree ========================= */ -.parentPath { - font-size: var(--font-size-base); - font-weight: bold; +.parentPath form { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 0.5rem; + + .jenkins-input { + display: inline-flex; + width: 300px; + } } .dirTree li { @@ -1054,18 +1078,20 @@ table.parameters > tbody:hover { } table.fileList { - margin-left: 2em; padding: 0; } -table.fileList td { - padding: 0; +table.fileList td:not(:first-of-type) { + padding: 0 1rem 0 0; + color: var(--text-color-secondary); + + svg { + color: var(--link-color) !important; + } } table.fileList td.fileSize { - padding-left: 2em; text-align: right; - color: #888; } @@ -1628,4 +1654,15 @@ svg.icon-xlg { display: none; } +.app-summary { + & > td:first-of-type { + img, + svg { + width: 48px !important; + height: 48px !important; + margin-right: 1rem; + } + } +} + /* -------------------------------------- */ diff --git a/war/src/main/less/modules/buttons-temp.less b/war/src/main/less/modules/buttons-temp.less new file mode 100644 index 000000000000..dc032fd11ca3 --- /dev/null +++ b/war/src/main/less/modules/buttons-temp.less @@ -0,0 +1,133 @@ +.jenkins-button { + appearance: none; + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + border: none; + outline: none; + margin: 0; + padding: 0.5rem 0.8rem; + font-size: 0.8rem; + font-weight: 500; + text-decoration: none !important; + background: transparent; + color: var(--text-color) !important; + z-index: 0; + border-radius: 6px; + cursor: pointer; + min-height: 36px; + text-shadow: 0 1px 0 var(--background); + white-space: nowrap; + gap: 1ch; + + &::before, + &::after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: -1; + opacity: 0.075; + border-radius: inherit; + transition: 0.2s ease; + } + + &::before { + background: currentColor; + } + + &::after { + box-shadow: inset 0 -1px 0 rgb(125, 125, 125), 0 0 0 10px transparent; + } + + &:hover { + &::before { + opacity: 0.1125; + } + } + + &:active, + &:focus { + &::before { + opacity: 0.15; + } + + &::after { + box-shadow: inset 0 -1px 0 rgb(125, 125, 125), 0 0 0 5px currentColor; + } + } + + svg { + width: 16px; + height: 16px; + } +} + +.jenkins-button--primary { + color: var(--button-color--primary) !important; + font-weight: 600; + text-shadow: none; + + &::before, + &::after { + color: var(--primary); + } + + &::before { + opacity: 1; + } + + &::after { + opacity: 0.2; + } + + &:hover { + &::before { + opacity: 0.9; + } + } + + &:active, + &:focus { + &::before { + opacity: 0.8; + } + } +} + +.jenkins-button--transparent { + &::before { + opacity: 0; + } + + &::after { + color: transparent; + box-shadow: inset 0 -1px 0 transparent, 0 0 0 10px transparent; + } + + &:hover, + &:active, + &:focus { + &::after { + color: currentColor; + } + } +} + +@variants: { + destructive: var(--red); +} + +each(@variants, { + .jenkins-button--@{key} { + color: @value !important; + + &::after { + background: rgba(125, 125, 125, 0.25); + opacity: 0.1; + } + } +}); diff --git a/war/src/main/less/modules/buttons.less b/war/src/main/less/modules/buttons.less index 116b27520b08..aac9e00dbd75 100644 --- a/war/src/main/less/modules/buttons.less +++ b/war/src/main/less/modules/buttons.less @@ -167,7 +167,13 @@ a.yui-button:visited { } .leading-icon { + display: flex; margin-right: 0.25rem; + + svg { + width: 16px; + height: 16px; + } } .trailing-icon { @@ -308,7 +314,12 @@ a.yui-button.icon-button.large-button { .jenkins-buttons-row { display: flex; align-items: center; - + + .jenkins-button { + margin-left: 0!important; + margin-right: 1rem!important; + } + .yui-button { margin-left: 0!important; margin-right: 0.5rem!important; @@ -318,10 +329,15 @@ a.yui-button.icon-button.large-button { margin-left: 0!important; margin-right: 1.5rem!important; } - + &--invert { justify-content: flex-end; - + + .jenkins-button { + margin-left: 1rem!important; + margin-right: 0!important; + } + .yui-button { margin-left: 0.5rem!important; margin-right: 0!important; @@ -331,5 +347,5 @@ a.yui-button.icon-button.large-button { margin-left: 1.5rem!important; margin-right: 0!important; } - } -} \ No newline at end of file + } +} diff --git a/war/src/main/less/modules/section.less b/war/src/main/less/modules/section.less index 14657daf256f..e596c58fa826 100644 --- a/war/src/main/less/modules/section.less +++ b/war/src/main/less/modules/section.less @@ -66,7 +66,7 @@ bottom: -10px; right: -10px; z-index: -1; - border-radius: 6px; + border-radius: 10px; transition: var(--standard-transition); opacity: 0; pointer-events: none; @@ -184,5 +184,6 @@ font-weight: 500; margin: 0; line-height: 1.66; + margin-right: 10px; } } diff --git a/war/src/main/less/modules/side-panel-tasks.less b/war/src/main/less/modules/side-panel-tasks.less index 3461249bd83f..ed2a8f472e59 100644 --- a/war/src/main/less/modules/side-panel-tasks.less +++ b/war/src/main/less/modules/side-panel-tasks.less @@ -1,138 +1,114 @@ -@import '../abstracts/theme.less'; - -#tasks { - margin-bottom: 20px; - display: inline-block; - width: 100%; -} - -#tasks .task { +#tasks, +.subtasks { display: flex; - align-items: center; - flex-wrap: wrap; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - position: relative; - font-size: var(--font-size-sm); - font-weight: 500; + flex-direction: column; + margin: 1.6rem 0 1.2rem 2rem; + gap: 5px; } -.task.disabled { - opacity: 0.5; - background-color: transparent; -} +.subtasks { + margin-top: 5px; + margin-bottom: 0; -.task-link-wrapper { - display: flex; - align-items: center; - width: 100%; - padding: 2px 0; + &:empty { + display: none; + } } -.task-link, -.task-disabled-link { - display: inline-flex; - flex: 1; - align-items: center; - padding: 0.5rem 1rem 0.5rem 1.25rem; - max-width: 100%; +#tasks .task { + margin: 0 0 0 -0.8rem; } -.task-link:link, -.task-link:visited { - color: var(--link-dark-color); +#tasks .task .task-link { + position: relative; + display: flex; + align-items: center; + justify-content: flex-start; + padding: 0.55rem 0.8rem; + gap: 0.75rem; + cursor: pointer; + z-index: 0; + font-weight: 500 !important; + font-size: 0.9rem; + color: var(--text-color) !important; + background: transparent; + outline: none; + border: none; text-decoration: none; - font-weight: 500; - &:hover, - &:focus { - text-decoration: none; - background-color: var(--task-link-bg-color--hover); + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: var(--text-color); + border-radius: 10px; + opacity: 0; + transition: 0.2s ease; + z-index: -1; } - &:active { - text-decoration: none; - background-color: var(--task-link-bg-color--active); + &::after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + border-radius: 10px; + opacity: 0.05; + transition: 0.2s ease; + box-shadow: 0 0 0 10px transparent; } - &:focus { - outline: 0; - // Use a box-shadow instead of an outline or a border because the alternatives - // are hidden behind the parent container - box-shadow: inset 0 0 0 3px var(--focus); + &:hover { + &::before { + opacity: 0.05; + } } -} -.task-link--active { - background-color: var(--task-link-bg-color--active); - position: relative; - - &::before { - position: absolute; - left: 0; - height: 100%; - content: ''; - border-left: 4px solid var(--primary-hover); + .task-icon-link { + display: inline-flex; + align-items: center; + justify-content: center; + margin: 0; + width: 1.4rem; + height: 1.4rem; + + svg, + img { + width: 100% !important; + height: 100% !important; + color: var(--text-color); + + * { + transition: stroke-width var(--standard-transition); + } + } } -} -.task-link--active:link, -.task-link--active:visited { - &:hover, + &:active, &:focus { - background-color: var(--task-link-bg-color--active); - } -} + &::before { + opacity: 0.1; + } -// Target only icons withink task link in order to keep backwards compatibility -.task .task-icon-link { - display: inline-flex; - align-items: center; - justify-content: center; - margin: 0; - margin-right: 0.5rem; - width: 1.5rem; - height: 1.5rem; - - svg { - width: 1.5rem; - height: 1.5rem; - color: var(--primary); + &::after { + box-shadow: 0 0 0 5px var(--text-color); + } } -} -// Reset the margin for the icon links -.task .task-icon-link img, -.task img.task-icon-link { - margin: 0; - // Dimensions have !important to override inline styles set by - height: 1.5rem !important; - width: 1.5rem !important; -} -.task-link-text { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - display: inline-block; -} + &--active { + font-weight: 600 !important; -.subtasks { - padding-left: 1.25rem; - width: 100%; -} - -.subtasks .task { - &:first-of-type { - border-top: 2px solid #eaeff2; - } + svg * { + stroke-width: 38px; + } - &:last-of-type { - border-bottom: 2px solid #eaeff2; + &::before { + opacity: 0.1 !important; + } } } -// Some styles should not be applied to tasks or subtasks in nested levels, -// such as border values -.subtasks .subtasks .task { - border: none; -} diff --git a/war/src/main/less/modules/side-panel-widgets.less b/war/src/main/less/modules/side-panel-widgets.less index 091b23e9664a..2d605345d7f0 100644 --- a/war/src/main/less/modules/side-panel-widgets.less +++ b/war/src/main/less/modules/side-panel-widgets.less @@ -38,8 +38,16 @@ #side-panel .pane-header .expand, #side-panel .pane-header .collapse { + display: flex; + align-items: center; + justify-content: center; margin-left: auto; padding-left: 0.5rem; + + svg { + width: 1rem; + height: 1rem; + } } #side-panel .pane-content { @@ -254,4 +262,4 @@ width: auto; margin-right: 1rem; } -} \ No newline at end of file +} diff --git a/war/src/main/less/modules/tabs.less b/war/src/main/less/modules/tabs.less index 3c26ceaaca64..da79165ff06a 100644 --- a/war/src/main/less/modules/tabs.less +++ b/war/src/main/less/modules/tabs.less @@ -18,7 +18,9 @@ .tabBar .tab a { position: relative; - display: block; + display: flex; + align-items: center; + justify-content: center; min-width: 3rem; text-decoration: none; margin: 2.5px; @@ -43,7 +45,7 @@ } } -.tabBar .tab .addTab .svg-icon { +.tabBar .tab .addTab svg { width: 1.25rem; height: 1.25rem; } diff --git a/war/src/main/resources/images/symbols/arrow-left.svg b/war/src/main/resources/images/symbols/arrow-left.svg new file mode 100644 index 000000000000..d0c89cb76fe4 --- /dev/null +++ b/war/src/main/resources/images/symbols/arrow-left.svg @@ -0,0 +1 @@ +Arrow Back \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/arrow-right.svg b/war/src/main/resources/images/symbols/arrow-right.svg new file mode 100644 index 000000000000..5d785e16f71b --- /dev/null +++ b/war/src/main/resources/images/symbols/arrow-right.svg @@ -0,0 +1 @@ +Arrow Forward \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/build-history.svg b/war/src/main/resources/images/symbols/build-history.svg new file mode 100644 index 000000000000..21eaad757398 --- /dev/null +++ b/war/src/main/resources/images/symbols/build-history.svg @@ -0,0 +1 @@ +File Tray Full \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/build.svg b/war/src/main/resources/images/symbols/build.svg new file mode 100644 index 000000000000..b3b3f7ba9c3d --- /dev/null +++ b/war/src/main/resources/images/symbols/build.svg @@ -0,0 +1 @@ +Build diff --git a/war/src/main/resources/images/symbols/changes.svg b/war/src/main/resources/images/symbols/changes.svg new file mode 100644 index 000000000000..18d5631ce9d0 --- /dev/null +++ b/war/src/main/resources/images/symbols/changes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/chevron-down.svg b/war/src/main/resources/images/symbols/chevron-down.svg new file mode 100644 index 000000000000..e4991bb6b8d0 --- /dev/null +++ b/war/src/main/resources/images/symbols/chevron-down.svg @@ -0,0 +1 @@ +Chevron Down \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/chevron-up.svg b/war/src/main/resources/images/symbols/chevron-up.svg new file mode 100644 index 000000000000..407ebb83c510 --- /dev/null +++ b/war/src/main/resources/images/symbols/chevron-up.svg @@ -0,0 +1 @@ +Chevron Up \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/details.svg b/war/src/main/resources/images/symbols/details.svg new file mode 100644 index 000000000000..66d015d49f6e --- /dev/null +++ b/war/src/main/resources/images/symbols/details.svg @@ -0,0 +1 @@ +Reader \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/document-text.svg b/war/src/main/resources/images/symbols/document-text.svg new file mode 100644 index 000000000000..0b209d59c85f --- /dev/null +++ b/war/src/main/resources/images/symbols/document-text.svg @@ -0,0 +1 @@ +Document Text diff --git a/war/src/main/resources/images/symbols/download.svg b/war/src/main/resources/images/symbols/download.svg new file mode 100644 index 000000000000..3c6d10447a23 --- /dev/null +++ b/war/src/main/resources/images/symbols/download.svg @@ -0,0 +1 @@ +Download \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/edit.svg b/war/src/main/resources/images/symbols/edit.svg new file mode 100644 index 000000000000..9ad3df57086f --- /dev/null +++ b/war/src/main/resources/images/symbols/edit.svg @@ -0,0 +1,8 @@ + + + Edit + + + + + \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/fingerprint.svg b/war/src/main/resources/images/symbols/fingerprint.svg new file mode 100644 index 000000000000..66096a542431 --- /dev/null +++ b/war/src/main/resources/images/symbols/fingerprint.svg @@ -0,0 +1 @@ +Finger Print \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/folder.svg b/war/src/main/resources/images/symbols/folder.svg new file mode 100644 index 000000000000..68e1781c9ab8 --- /dev/null +++ b/war/src/main/resources/images/symbols/folder.svg @@ -0,0 +1 @@ +Folder \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/id-card.svg b/war/src/main/resources/images/symbols/id-card.svg new file mode 100644 index 000000000000..31a8923b3ab1 --- /dev/null +++ b/war/src/main/resources/images/symbols/id-card.svg @@ -0,0 +1 @@ +Id Card \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/key.svg b/war/src/main/resources/images/symbols/key.svg new file mode 100644 index 000000000000..f87809a1f94f --- /dev/null +++ b/war/src/main/resources/images/symbols/key.svg @@ -0,0 +1 @@ +Key diff --git a/war/src/main/resources/images/symbols/list.svg b/war/src/main/resources/images/symbols/list.svg new file mode 100644 index 000000000000..6b6787776b54 --- /dev/null +++ b/war/src/main/resources/images/symbols/list.svg @@ -0,0 +1 @@ +List \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/logs.svg b/war/src/main/resources/images/symbols/logs.svg new file mode 100644 index 000000000000..005e5a8f956c --- /dev/null +++ b/war/src/main/resources/images/symbols/logs.svg @@ -0,0 +1 @@ +Clipboard \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/people.svg b/war/src/main/resources/images/symbols/people.svg index c3255be9a149..95fc9e081c6b 100644 --- a/war/src/main/resources/images/symbols/people.svg +++ b/war/src/main/resources/images/symbols/people.svg @@ -1 +1 @@ -ionicons-v5-j \ No newline at end of file + \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/person.svg b/war/src/main/resources/images/symbols/person.svg new file mode 100644 index 000000000000..8c9a022d48ff --- /dev/null +++ b/war/src/main/resources/images/symbols/person.svg @@ -0,0 +1 @@ +Person diff --git a/war/src/main/resources/images/symbols/project-relationship.svg b/war/src/main/resources/images/symbols/project-relationship.svg new file mode 100644 index 000000000000..109764752648 --- /dev/null +++ b/war/src/main/resources/images/symbols/project-relationship.svg @@ -0,0 +1 @@ +Scan Circle \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/ribbon.svg b/war/src/main/resources/images/symbols/ribbon.svg new file mode 100644 index 000000000000..bcb04e41a17c --- /dev/null +++ b/war/src/main/resources/images/symbols/ribbon.svg @@ -0,0 +1 @@ +Ribbon \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/rss.svg b/war/src/main/resources/images/symbols/rss.svg new file mode 100644 index 000000000000..c714a5e5fde0 --- /dev/null +++ b/war/src/main/resources/images/symbols/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/swap.svg b/war/src/main/resources/images/symbols/swap.svg new file mode 100644 index 000000000000..c8fe6f9d2f56 --- /dev/null +++ b/war/src/main/resources/images/symbols/swap.svg @@ -0,0 +1 @@ +Swap Horizontal diff --git a/war/src/main/resources/images/symbols/tag.svg b/war/src/main/resources/images/symbols/tag.svg new file mode 100644 index 000000000000..36d99916c141 --- /dev/null +++ b/war/src/main/resources/images/symbols/tag.svg @@ -0,0 +1 @@ +Pricetag \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/terminal.svg b/war/src/main/resources/images/symbols/terminal.svg index a9dfecd41d20..5a94a88d47a7 100644 --- a/war/src/main/resources/images/symbols/terminal.svg +++ b/war/src/main/resources/images/symbols/terminal.svg @@ -1 +1 @@ -ionicons-v5-l \ No newline at end of file +Terminal \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/trigger.svg b/war/src/main/resources/images/symbols/trigger.svg new file mode 100644 index 000000000000..2ec8d6dc6a4b --- /dev/null +++ b/war/src/main/resources/images/symbols/trigger.svg @@ -0,0 +1 @@ +Locate \ No newline at end of file diff --git a/war/src/main/resources/images/symbols/view.svg b/war/src/main/resources/images/symbols/view.svg new file mode 100644 index 000000000000..e823055df47b --- /dev/null +++ b/war/src/main/resources/images/symbols/view.svg @@ -0,0 +1 @@ +Eye \ No newline at end of file