├── src
├── main
│ ├── webapp
│ │ ├── resources
│ │ │ ├── fonts
│ │ │ │ ├── Roboto-Copyright.txt
│ │ │ │ ├── roboto-v30-latin-300.eot
│ │ │ │ ├── roboto-v30-latin-300.ttf
│ │ │ │ ├── roboto-v30-latin-300.woff
│ │ │ │ ├── roboto-v30-latin-300.woff2
│ │ │ │ ├── roboto-v30-latin-500.eot
│ │ │ │ ├── roboto-v30-latin-500.ttf
│ │ │ │ ├── roboto-v30-latin-500.woff
│ │ │ │ ├── roboto-v30-latin-500.woff2
│ │ │ │ ├── roboto-v30-latin-700.eot
│ │ │ │ ├── roboto-v30-latin-700.ttf
│ │ │ │ ├── roboto-v30-latin-700.woff
│ │ │ │ ├── roboto-v30-latin-700.woff2
│ │ │ │ ├── roboto-v30-latin-regular.eot
│ │ │ │ ├── roboto-v30-latin-regular.ttf
│ │ │ │ ├── roboto-mono-v22-latin-300.eot
│ │ │ │ ├── roboto-mono-v22-latin-300.ttf
│ │ │ │ ├── roboto-mono-v22-latin-300.woff
│ │ │ │ ├── roboto-mono-v22-latin-300.woff2
│ │ │ │ ├── roboto-mono-v22-latin-500.eot
│ │ │ │ ├── roboto-mono-v22-latin-500.ttf
│ │ │ │ ├── roboto-mono-v22-latin-500.woff
│ │ │ │ ├── roboto-mono-v22-latin-500.woff2
│ │ │ │ ├── roboto-mono-v22-latin-700.eot
│ │ │ │ ├── roboto-mono-v22-latin-700.ttf
│ │ │ │ ├── roboto-mono-v22-latin-700.woff
│ │ │ │ ├── roboto-mono-v22-latin-700.woff2
│ │ │ │ ├── roboto-v30-latin-regular.woff
│ │ │ │ ├── roboto-v30-latin-regular.woff2
│ │ │ │ ├── roboto-mono-v22-latin-regular.eot
│ │ │ │ ├── roboto-mono-v22-latin-regular.ttf
│ │ │ │ ├── roboto-mono-v22-latin-regular.woff
│ │ │ │ ├── roboto-mono-v22-latin-regular.woff2
│ │ │ │ ├── Roboto-Mono-Copyright.txt
│ │ │ │ ├── License.txt
│ │ │ │ └── roboto-v30-latin-500.svg
│ │ │ ├── images
│ │ │ │ ├── skip_previous.svg
│ │ │ │ ├── skip_next.svg
│ │ │ │ ├── expand_less.svg
│ │ │ │ ├── expand_more.svg
│ │ │ │ ├── warning.svg
│ │ │ │ ├── arrow_back.svg
│ │ │ │ ├── arrow_forward.svg
│ │ │ │ ├── folder.svg
│ │ │ │ ├── delete.svg
│ │ │ │ ├── remove_circle.svg
│ │ │ │ ├── storage.svg
│ │ │ │ ├── error.svg
│ │ │ │ ├── file.svg
│ │ │ │ ├── flag.svg
│ │ │ │ ├── chart-areaspline.svg
│ │ │ │ ├── computer.svg
│ │ │ │ ├── check_circle.svg
│ │ │ │ ├── insert_chart.svg
│ │ │ │ ├── folder-move.svg
│ │ │ │ ├── save.svg
│ │ │ │ ├── domain.svg
│ │ │ │ ├── pencil.svg
│ │ │ │ ├── info_outline.svg
│ │ │ │ ├── play_circle_outline.svg
│ │ │ │ ├── feedback.svg
│ │ │ │ ├── add_circle_outline.svg
│ │ │ │ ├── compare.svg
│ │ │ │ ├── build.svg
│ │ │ │ ├── folder-remove.svg
│ │ │ │ ├── power_settings_new.svg
│ │ │ │ ├── computer_new.svg
│ │ │ │ ├── history.svg
│ │ │ │ ├── package-down.svg
│ │ │ │ ├── refresh.svg
│ │ │ │ ├── rss-box.svg
│ │ │ │ ├── assignment.svg
│ │ │ │ ├── lock.svg
│ │ │ │ ├── play-pause.svg
│ │ │ │ ├── autorenew.svg
│ │ │ │ ├── weather-cloudy.svg
│ │ │ │ ├── help_outline.svg
│ │ │ │ ├── extension.svg
│ │ │ │ ├── stop.svg
│ │ │ │ ├── computer_offline.svg
│ │ │ │ ├── server-network.svg
│ │ │ │ ├── assignment_late.svg
│ │ │ │ ├── pipe.svg
│ │ │ │ ├── people.svg
│ │ │ │ ├── replay.svg
│ │ │ │ ├── content-copy.svg
│ │ │ │ ├── file-multiple.svg
│ │ │ │ ├── file-document.svg
│ │ │ │ ├── file-plus.svg
│ │ │ │ ├── timer-sand.svg
│ │ │ │ ├── file-document-multiple.svg
│ │ │ │ ├── file-table.svg
│ │ │ │ ├── laptop-off.svg
│ │ │ │ ├── comment-arrow-right.svg
│ │ │ │ ├── git.svg
│ │ │ │ ├── plus-network.svg
│ │ │ │ ├── account-arrow-left.svg
│ │ │ │ ├── clipboard-check.svg
│ │ │ │ ├── bug_report.svg
│ │ │ │ ├── tag-text.svg
│ │ │ │ ├── weather-sunny.svg
│ │ │ │ ├── clipboard-pulse.svg
│ │ │ │ ├── restart.svg
│ │ │ │ ├── weather-rainy.svg
│ │ │ │ ├── devices.svg
│ │ │ │ ├── harddisk.svg
│ │ │ │ ├── settings.svg
│ │ │ │ ├── weather-pouring.svg
│ │ │ │ ├── weather-partlycloudy.svg
│ │ │ │ ├── github-circle.svg
│ │ │ │ ├── owl.svg
│ │ │ │ ├── source-repository-multiple.svg
│ │ │ │ ├── file-cog.svg
│ │ │ │ ├── fingerprint.svg
│ │ │ │ └── docker.svg
│ │ │ └── less
│ │ │ │ ├── light-theme.less
│ │ │ │ └── core-theme.less
│ │ ├── theme-grey.css
│ │ ├── theme-lime.css
│ │ ├── theme-red.css
│ │ ├── theme-amber.css
│ │ ├── theme-green.css
│ │ ├── theme-indigo.css
│ │ ├── theme-purple.css
│ │ ├── theme-yellow.css
│ │ ├── theme-light-blue.css
│ │ └── material-theme.css
│ ├── config
│ │ ├── wro.properties
│ │ └── wro.xml
│ ├── resources
│ │ └── index.jelly
│ └── java
│ │ └── io
│ │ └── jenkins
│ │ └── plugins
│ │ └── materialtheme
│ │ ├── AbstractMaterialThemeDescriptor.java
│ │ ├── AbstractMaterialTheme.java
│ │ ├── MaterialGreyThemeManagerFactory.java
│ │ ├── MaterialIndigoThemeManagerFactory.java
│ │ ├── MaterialLightBlueThemeManagerFactory.java
│ │ ├── MaterialRedThemeManagerFactory.java
│ │ ├── MaterialLimeThemeManagerFactory.java
│ │ ├── MaterialAmberThemeManagerFactory.java
│ │ ├── MaterialGreenThemeManagerFactory.java
│ │ ├── MaterialPurpleThemeManagerFactory.java
│ │ ├── MaterialYellowThemeManagerFactory.java
│ │ └── MaterialThemeRootAction.java
└── test
│ ├── resources
│ └── io
│ │ └── jenkins
│ │ └── plugins
│ │ └── materialtheme
│ │ └── jcasc
│ │ ├── materialred
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ ├── materialamber
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ ├── materialgreen
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ ├── materialgrey
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ ├── materiallime
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ ├── materialindigo
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ ├── materialpurple
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ ├── materialyellow
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ │ └── materiallightblue
│ │ ├── ConfigurationAsCodeExport.yml
│ │ └── ConfigurationAsCode.yml
│ └── java
│ └── io
│ └── jenkins
│ └── plugins
│ └── materialtheme
│ └── jcasc
│ ├── materialred
│ └── MaterialRedThemeJcascTest.java
│ ├── materialgrey
│ └── MaterialGreyThemeJcascTest.java
│ ├── materiallime
│ └── MaterialLimeThemeJcascTest.java
│ ├── materialamber
│ └── MaterialAmberThemeJcascTest.java
│ ├── materialgreen
│ └── MaterialGreenThemeJcascTest.java
│ ├── materialindigo
│ └── MaterialIndigoThemeJcascTest.java
│ ├── materialpurple
│ └── MaterialPurpleThemeJcascTest.java
│ ├── materialyellow
│ └── MaterialYellowThemeJcascTest.java
│ └── materiallightblue
│ └── MaterialLightBlueThemeJcascTest.java
├── .mvn
├── maven.config
└── extensions.xml
├── .gitignore
├── screenshots
├── red_main_large.png
├── red_main_small.png
├── grey_main_large.png
├── grey_main_small.png
├── indigo_main_large.png
├── indigo_main_small.png
├── light_blue_main_large.png
└── light_blue_main_small.png
├── .github
├── dependabot.yml
└── workflows
│ ├── cd.yml
│ └── jenkins-security-scan.yml
├── Jenkinsfile
├── License
├── README.md
└── pom.xml
/src/main/webapp/resources/fonts/Roboto-Copyright.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.mvn/maven.config:
--------------------------------------------------------------------------------
1 | -Pconsume-incrementals
2 | -Pmight-produce-incrementals
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
2 | work/
3 | *.iml
4 | .idea/
5 | light-theme.css
6 | .DS_Store
7 |
--------------------------------------------------------------------------------
/src/main/config/wro.properties:
--------------------------------------------------------------------------------
1 | preProcessors=cssImport
2 | postProcessors=lessCss
3 | debug=true
4 |
--------------------------------------------------------------------------------
/src/main/resources/index.jelly:
--------------------------------------------------------------------------------
1 |
2 |
3 | Material Theme plugin.
4 |
5 |
--------------------------------------------------------------------------------
/screenshots/red_main_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/red_main_large.png
--------------------------------------------------------------------------------
/screenshots/red_main_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/red_main_small.png
--------------------------------------------------------------------------------
/screenshots/grey_main_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/grey_main_large.png
--------------------------------------------------------------------------------
/screenshots/grey_main_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/grey_main_small.png
--------------------------------------------------------------------------------
/screenshots/indigo_main_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/indigo_main_large.png
--------------------------------------------------------------------------------
/screenshots/indigo_main_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/indigo_main_small.png
--------------------------------------------------------------------------------
/screenshots/light_blue_main_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/light_blue_main_large.png
--------------------------------------------------------------------------------
/screenshots/light_blue_main_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/screenshots/light_blue_main_small.png
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "maven"
4 | directory: "/"
5 | schedule:
6 | interval: "weekly"
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialred/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-red"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialamber/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-amber"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialgreen/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-green"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialgrey/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-grey"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materiallime/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-lime"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialindigo/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-indigo"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialpurple/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-purple"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialyellow/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-yellow"
3 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materiallightblue/ConfigurationAsCodeExport.yml:
--------------------------------------------------------------------------------
1 | disableUserThemes: true
2 | theme: "material-light-blue"
3 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-300.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-300.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-300.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-300.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-300.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-300.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-300.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-300.woff2
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-500.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-500.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-500.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-500.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-500.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-500.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-500.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-500.woff2
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-700.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-700.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-700.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-700.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-700.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-700.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-700.woff2
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-regular.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-regular.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-300.woff2
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-500.woff2
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-700.woff2
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-regular.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-v30-latin-regular.woff2
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/skip_previous.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-grey.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-grey], .app-theme-picker__picker[data-theme=material-grey] {
2 | --material-primary: #9E9E9E;
3 | --material-secondary: #696666;
4 | }
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.eot
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.ttf
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/skip_next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-lime.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-lime], .app-theme-picker__picker[data-theme=material-lime] {
2 | --material-primary: #AFB42B;
3 | --material-secondary: #D3D75B;
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-red.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-red], .app-theme-picker__picker[data-theme=material-red] {
2 | --material-primary: #f44336;
3 | --material-secondary: #e76056;
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.woff
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jenkinsci/material-theme-plugin/HEAD/src/main/webapp/resources/fonts/roboto-mono-v22-latin-regular.woff2
--------------------------------------------------------------------------------
/src/main/webapp/theme-amber.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-amber], .app-theme-picker__picker[data-theme=material-amber] {
2 | --material-primary: #FF6F00;
3 | --material-secondary: #FF9A4D;
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-green.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-green], .app-theme-picker__picker[data-theme=material-green] {
2 | --material-primary: #43A047;
3 | --material-secondary: #65AA69;
4 | }
5 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialgrey/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-grey"
6 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materiallime/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-lime"
6 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialred/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-red"
6 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/expand_less.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/expand_more.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/warning.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-indigo.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-indigo], .app-theme-picker__picker[data-theme=material-indigo] {
2 | --material-primary: #3f51b5;
3 | --material-secondary: #606FC7;
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-purple.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-purple], .app-theme-picker__picker[data-theme=material-purple] {
2 | --material-primary: #9C27B0;
3 | --material-secondary: #C758DA;
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-yellow.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-yellow], .app-theme-picker__picker[data-theme=material-yellow] {
2 | --material-primary: #FFC107;
3 | --material-secondary: #F4C24F;
4 | }
5 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialamber/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-amber"
6 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialgreen/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-green"
6 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialindigo/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-indigo"
6 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialpurple/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-purple"
6 |
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materialyellow/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-yellow"
6 |
--------------------------------------------------------------------------------
/src/main/webapp/theme-light-blue.css:
--------------------------------------------------------------------------------
1 | [data-theme=material-light-blue], .app-theme-picker__picker[data-theme=material-light-blue] {
2 | --material-primary: #4ac3f7;
3 | --material-secondary: #3ca2cf;
4 | }
--------------------------------------------------------------------------------
/src/test/resources/io/jenkins/plugins/materialtheme/jcasc/materiallightblue/ConfigurationAsCode.yml:
--------------------------------------------------------------------------------
1 | ---
2 | unclassified:
3 | themeManager:
4 | disableUserThemes: true
5 | theme: "material-light-blue"
6 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/arrow_back.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/arrow_forward.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/folder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/config/wro.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | /resources/less/light-theme.less
4 | /resources/less/core-theme.less
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/delete.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/remove_circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/storage.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/error.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/file.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/flag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/chart-areaspline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/computer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/check_circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/insert_chart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/Roboto-Mono-Copyright.txt:
--------------------------------------------------------------------------------
1 | RobotoMono[wght].ttf: Copyright 2015 The Roboto Mono Project Authors (https://github.com/googlefonts/robotomono)
2 | RobotoMono-Italic[wght].ttf: Copyright 2015 The Roboto Mono Project Authors (https://github.com/googlefonts/robotomono)
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/folder-move.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/save.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/domain.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/pencil.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/info_outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/play_circle_outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/feedback.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Jenkinsfile:
--------------------------------------------------------------------------------
1 | /*
2 | See the documentation for more options:
3 | https://github.com/jenkins-infra/pipeline-library/
4 | */
5 |
6 | buildPlugin(useContainerAgent: true, configurations: [
7 | [ platform: "linux", jdk: "8", jenkins: null ],
8 | [ platform: "linux", jdk: "11", jenkins: null ]
9 | ])
10 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/add_circle_outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/compare.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/build.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/folder-remove.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/power_settings_new.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/computer_new.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/history.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/package-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/refresh.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/rss-box.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/assignment.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/play-pause.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/autorenew.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/weather-cloudy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/help_outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/extension.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/stop.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/computer_offline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/server-network.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/assignment_late.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/pipe.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/people.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/less/light-theme.less:
--------------------------------------------------------------------------------
1 | // Default Colors
2 | @color-primary: #26a69a;
3 | @color-bg: #fff;
4 | @color-text: #444;
5 | @color-link: #26a69a;
6 | @color-grey: #9E9E9E;
7 | @color-green: #43A047;
8 | @color-yellow: #FFC107;
9 | @color-purple: #9C27B0;
10 | @color-lime: #AFB42B;
11 | @color-amber: #FF6F00;
12 | @color-red: #F44336;
13 | @color-white: #fff;
14 | @color-black: #263238;
15 | @color-selection: #80CBC4;
16 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/replay.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.mvn/extensions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | io.jenkins.tools.incrementals
4 | git-changelist-maven-extension
5 | 1.4
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/content-copy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/file-multiple.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/file-document.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/file-plus.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/workflows/cd.yml:
--------------------------------------------------------------------------------
1 | # Note: additional setup is required, see https://www.jenkins.io/redirect/continuous-delivery-of-plugins
2 |
3 | name: cd
4 | on:
5 | workflow_dispatch:
6 | check_run:
7 | types:
8 | - completed
9 |
10 | jobs:
11 | maven-cd:
12 | uses: jenkins-infra/github-reusable-workflows/.github/workflows/maven-cd.yml@v1
13 | secrets:
14 | MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
15 | MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }}
16 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/timer-sand.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/file-document-multiple.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/file-table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/workflows/jenkins-security-scan.yml:
--------------------------------------------------------------------------------
1 | name: Jenkins Security Scan
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | types: [ opened, synchronize, reopened ]
8 | workflow_dispatch:
9 |
10 | permissions:
11 | security-events: write
12 | contents: read
13 | actions: read
14 |
15 | jobs:
16 | security-scan:
17 | uses: jenkins-infra/jenkins-security-scan/.github/workflows/jenkins-security-scan.yaml@v2
18 | with:
19 | java-cache: 'maven'
20 | java-version: 11
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/laptop-off.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/comment-arrow-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/git.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/plus-network.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/AbstractMaterialThemeDescriptor.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import io.jenkins.plugins.thememanager.ThemeManagerFactoryDescriptor;
4 |
5 | public abstract class AbstractMaterialThemeDescriptor extends ThemeManagerFactoryDescriptor {
6 | public static final String ID = "material";
7 |
8 | @Override
9 | public String getThemeId() {
10 | return ID;
11 | }
12 |
13 | @Override
14 | public boolean isNamespaced() {
15 | return true;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/account-arrow-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/clipboard-check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/bug_report.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/tag-text.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/weather-sunny.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/clipboard-pulse.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/restart.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/weather-rainy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/devices.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/AbstractMaterialTheme.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import io.jenkins.plugins.thememanager.Theme;
4 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
5 | import java.util.Arrays;
6 |
7 | public class AbstractMaterialTheme extends ThemeManagerFactory {
8 |
9 | public static final String BASE_CSS = "light-theme.css";
10 | public static final String CUSTOMISED_CSS = "material-theme.css";
11 |
12 | @Override
13 | public Theme getTheme() {
14 | return Theme.builder().withCssUrls(
15 | Arrays.asList(toAssetUrl(BASE_CSS), getCssUrl(), toAssetUrl(CUSTOMISED_CSS)))
16 | .build();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/harddisk.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/settings.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/weather-pouring.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/weather-partlycloudy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/github-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/owl.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/License:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Afonso F
4 | Copyright (c) 2020 Tim Brown
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/source-repository-multiple.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/file-cog.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialGreyThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialGreyThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_GREY_CSS = "theme-grey.css";
12 | public static final String MATERIAL_GREY_SYMBOL = "material-grey";
13 |
14 | @DataBoundConstructor
15 | public MaterialGreyThemeManagerFactory() {
16 | }
17 |
18 |
19 | @Extension
20 | @Symbol(MATERIAL_GREY_SYMBOL)
21 | public static class MaterialGreyThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
22 |
23 | @NonNull
24 | @Override
25 | public String getDisplayName() {
26 | return "Material - Grey";
27 | }
28 |
29 | @Override
30 | public ThemeManagerFactory getInstance() {
31 | return new MaterialGreyThemeManagerFactory();
32 | }
33 |
34 | @Override
35 | public String getThemeCssSuffix() {
36 | return MATERIAL_GREY_CSS;
37 | }
38 |
39 | @Override
40 | public String getThemeKey() {
41 | return ID + "-grey";
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialIndigoThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialIndigoThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_INDIGO_CSS = "theme-indigo.css";
12 | public static final String MATERIAL_INDIGO_SYMBOL = "material-indigo";
13 |
14 | @DataBoundConstructor
15 | public MaterialIndigoThemeManagerFactory() {
16 | }
17 |
18 |
19 | @Extension
20 | @Symbol(MATERIAL_INDIGO_SYMBOL)
21 | public static class MaterialIndigoThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
22 |
23 | @NonNull
24 | @Override
25 | public String getDisplayName() {
26 | return "Material - Indigo";
27 | }
28 |
29 | @Override
30 | public ThemeManagerFactory getInstance() {
31 | return new MaterialIndigoThemeManagerFactory();
32 | }
33 |
34 | @Override
35 | public String getThemeCssSuffix() {
36 | return MATERIAL_INDIGO_CSS;
37 | }
38 |
39 | @Override
40 | public String getThemeKey() {
41 | return ID + "-indigo";
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialLightBlueThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialLightBlueThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_LIGHT_BLUE_CSS = "theme-light-blue.css";
12 | public static final String MATERIAL_LIGTH_BLUE_SYMBOL = "material-light-blue";
13 |
14 | @DataBoundConstructor
15 | public MaterialLightBlueThemeManagerFactory() {
16 | }
17 |
18 |
19 | @Extension
20 | @Symbol(MATERIAL_LIGTH_BLUE_SYMBOL)
21 | public static class MaterialLightBlueThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
22 |
23 | @NonNull
24 | @Override
25 | public String getDisplayName() {
26 | return "Material - Light Blue";
27 | }
28 |
29 | @Override
30 | public ThemeManagerFactory getInstance() {
31 | return new MaterialLightBlueThemeManagerFactory();
32 | }
33 |
34 | @Override
35 | public String getThemeCssSuffix() {
36 | return MATERIAL_LIGHT_BLUE_CSS;
37 | }
38 |
39 | @Override
40 | public String getThemeKey() {
41 | return ID + "-light-blue";
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialRedThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialRedThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_RED_CSS = "theme-red.css";
12 | public static final String MATERIAL_RED_SYMBOL = "material-red";
13 |
14 | @DataBoundConstructor
15 | public MaterialRedThemeManagerFactory() {
16 | }
17 |
18 | @Extension
19 | @Symbol(MATERIAL_RED_SYMBOL)
20 | public static class MaterialRedThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
21 |
22 | @NonNull
23 | @Override
24 | public String getDisplayName() {
25 | return "Material - Red";
26 | }
27 |
28 | @Override
29 | public ThemeManagerFactory getInstance() {
30 | return new MaterialRedThemeManagerFactory();
31 | }
32 |
33 | @Override
34 | public String getThemeCssSuffix() {
35 | return MATERIAL_RED_CSS;
36 | }
37 |
38 | @Override
39 | public String getThemeKey() {
40 | return ID + "-red";
41 | }
42 |
43 | @Override
44 | public boolean isNamespaced() {
45 | return true;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialLimeThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialLimeThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_LIME_CSS = "theme-lime.css";
12 | public static final String MATERIAL_LIME_SYMBOL = "material-lime";
13 |
14 | @DataBoundConstructor
15 | public MaterialLimeThemeManagerFactory() {
16 | }
17 |
18 | @Extension
19 | @Symbol(MATERIAL_LIME_SYMBOL)
20 | public static class MaterialLimeThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
21 |
22 | @NonNull
23 | @Override
24 | public String getDisplayName() {
25 | return "Material - Lime";
26 | }
27 |
28 | @Override
29 | public ThemeManagerFactory getInstance() {
30 | return new MaterialLimeThemeManagerFactory();
31 | }
32 |
33 | @Override
34 | public String getThemeCssSuffix() {
35 | return MATERIAL_LIME_CSS;
36 | }
37 |
38 | @Override
39 | public String getThemeKey() {
40 | return ID + "-lime";
41 | }
42 |
43 | @Override
44 | public boolean isNamespaced() {
45 | return true;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialAmberThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialAmberThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_AMBER_CSS = "theme-amber.css";
12 | public static final String MATERIAL_AMBER_SYMBOL = "material-amber";
13 |
14 | @DataBoundConstructor
15 | public MaterialAmberThemeManagerFactory() {
16 | }
17 |
18 | @Extension
19 | @Symbol(MATERIAL_AMBER_SYMBOL)
20 | public static class MaterialAmberThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
21 |
22 | @NonNull
23 | @Override
24 | public String getDisplayName() {
25 | return "Material - Amber";
26 | }
27 |
28 | @Override
29 | public ThemeManagerFactory getInstance() {
30 | return new MaterialAmberThemeManagerFactory();
31 | }
32 |
33 | @Override
34 | public String getThemeCssSuffix() {
35 | return MATERIAL_AMBER_CSS;
36 | }
37 |
38 | @Override
39 | public String getThemeKey() {
40 | return ID + "-amber";
41 | }
42 |
43 | @Override
44 | public boolean isNamespaced() {
45 | return true;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialGreenThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialGreenThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_GREEN_CSS = "theme-green.css";
12 | public static final String MATERIAL_GREEN_SYMBOL = "material-green";
13 |
14 | @DataBoundConstructor
15 | public MaterialGreenThemeManagerFactory() {
16 | }
17 |
18 | @Extension
19 | @Symbol(MATERIAL_GREEN_SYMBOL)
20 | public static class MaterialGreenThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
21 |
22 | @NonNull
23 | @Override
24 | public String getDisplayName() {
25 | return "Material - Green";
26 | }
27 |
28 | @Override
29 | public ThemeManagerFactory getInstance() {
30 | return new MaterialGreenThemeManagerFactory();
31 | }
32 |
33 | @Override
34 | public String getThemeCssSuffix() {
35 | return MATERIAL_GREEN_CSS;
36 | }
37 |
38 | @Override
39 | public String getThemeKey() {
40 | return ID + "-green";
41 | }
42 |
43 | @Override
44 | public boolean isNamespaced() {
45 | return true;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialPurpleThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialPurpleThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_PURPLE_CSS = "theme-purple.css";
12 | public static final String MATERIAL_PURPLE_SYMBOL = "material-purple";
13 |
14 | @DataBoundConstructor
15 | public MaterialPurpleThemeManagerFactory() {
16 | }
17 |
18 | @Extension
19 | @Symbol(MATERIAL_PURPLE_SYMBOL)
20 | public static class MaterialPurpleThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
21 |
22 | @NonNull
23 | @Override
24 | public String getDisplayName() {
25 | return "Material - Purple";
26 | }
27 |
28 | @Override
29 | public ThemeManagerFactory getInstance() {
30 | return new MaterialPurpleThemeManagerFactory();
31 | }
32 |
33 | @Override
34 | public String getThemeCssSuffix() {
35 | return MATERIAL_PURPLE_CSS;
36 | }
37 |
38 | @Override
39 | public String getThemeKey() {
40 | return ID + "-purple";
41 | }
42 |
43 | @Override
44 | public boolean isNamespaced() {
45 | return true;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialYellowThemeManagerFactory.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import edu.umd.cs.findbugs.annotations.NonNull;
4 | import hudson.Extension;
5 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
6 | import org.jenkinsci.Symbol;
7 | import org.kohsuke.stapler.DataBoundConstructor;
8 |
9 | public class MaterialYellowThemeManagerFactory extends AbstractMaterialTheme {
10 |
11 | public static final String MATERIAL_YELLOW_CSS = "theme-yellow.css";
12 | public static final String MATERIAL_YELLOW_SYMBOL = "material-yellow";
13 |
14 | @DataBoundConstructor
15 | public MaterialYellowThemeManagerFactory() {
16 | }
17 |
18 | @Extension
19 | @Symbol(MATERIAL_YELLOW_SYMBOL)
20 | public static class MaterialYellowThemeManagerFactoryDescriptor extends AbstractMaterialThemeDescriptor {
21 |
22 | @NonNull
23 | @Override
24 | public String getDisplayName() {
25 | return "Material - Yellow";
26 | }
27 |
28 | @Override
29 | public ThemeManagerFactory getInstance() {
30 | return new MaterialYellowThemeManagerFactory();
31 | }
32 |
33 | @Override
34 | public String getThemeCssSuffix() {
35 | return MATERIAL_YELLOW_CSS;
36 | }
37 |
38 | @Override
39 | public String getThemeKey() {
40 | return ID + "-yellow";
41 | }
42 |
43 | @Override
44 | public boolean isNamespaced() {
45 | return true;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/fingerprint.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materialred/MaterialRedThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materialred;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialRedThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialRedThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialRedThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materialgrey/MaterialGreyThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materialgrey;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialGreyThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialGreyThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialGreyThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materiallime/MaterialLimeThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materiallime;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialLimeThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialLimeThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialLimeThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materialamber/MaterialAmberThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materialamber;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialAmberThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialAmberThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialAmberThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materialgreen/MaterialGreenThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materialgreen;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialGreenThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialGreenThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialGreenThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materialindigo/MaterialIndigoThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materialindigo;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialIndigoThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialIndigoThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialIndigoThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materialpurple/MaterialPurpleThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materialpurple;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialPurpleThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialPurpleThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialPurpleThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materialyellow/MaterialYellowThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materialyellow;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialYellowThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialYellowThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialYellowThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/test/java/io/jenkins/plugins/materialtheme/jcasc/materiallightblue/MaterialLightBlueThemeJcascTest.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme.jcasc.materiallightblue;
2 |
3 | import io.jenkins.plugins.casc.ConfigurationContext;
4 | import io.jenkins.plugins.casc.ConfiguratorRegistry;
5 | import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
6 | import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
7 | import io.jenkins.plugins.casc.model.CNode;
8 | import io.jenkins.plugins.thememanager.ThemeManagerFactory;
9 | import io.jenkins.plugins.thememanager.ThemeManagerPageDecorator;
10 | import org.junit.ClassRule;
11 | import org.junit.Test;
12 | import io.jenkins.plugins.materialtheme.MaterialLightBlueThemeManagerFactory;
13 |
14 | import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
15 | import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
16 | import static io.jenkins.plugins.casc.misc.Util.toYamlString;
17 | import static org.hamcrest.MatcherAssert.assertThat;
18 | import static org.hamcrest.Matchers.instanceOf;
19 | import static org.hamcrest.Matchers.is;
20 | import static org.junit.Assert.assertNotNull;
21 |
22 | public class MaterialLightBlueThemeJcascTest {
23 |
24 | @ClassRule
25 | @ConfiguredWithCode("ConfigurationAsCode.yml")
26 | public static JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
27 |
28 | @Test
29 | public void testConfig() {
30 | ThemeManagerPageDecorator decorator = ThemeManagerPageDecorator.get();
31 |
32 | ThemeManagerFactory theme = decorator.getTheme();
33 | assertNotNull(theme);
34 |
35 | assertThat(decorator.isDisableUserThemes(), is(true));
36 | assertThat(theme, instanceOf(MaterialLightBlueThemeManagerFactory.class));
37 | }
38 |
39 | @Test
40 | public void testExport() throws Exception {
41 | ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
42 | CNode yourAttribute = getUnclassifiedRoot(context).get("themeManager");
43 |
44 | String exported = toYamlString(yourAttribute);
45 |
46 | String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");
47 |
48 | assertThat(exported, is(expected));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/images/docker.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/java/io/jenkins/plugins/materialtheme/MaterialThemeRootAction.java:
--------------------------------------------------------------------------------
1 | package io.jenkins.plugins.materialtheme;
2 |
3 | import hudson.Extension;
4 | import hudson.Plugin;
5 | import hudson.model.UnprotectedRootAction;
6 | import jenkins.model.Jenkins;
7 | import org.kohsuke.stapler.StaplerRequest;
8 | import org.kohsuke.stapler.StaplerResponse;
9 |
10 | import javax.servlet.ServletException;
11 | import java.io.IOException;
12 | import java.util.Arrays;
13 |
14 | import static io.jenkins.plugins.materialtheme.AbstractMaterialTheme.BASE_CSS;
15 | import static io.jenkins.plugins.materialtheme.AbstractMaterialTheme.CUSTOMISED_CSS;
16 | import static io.jenkins.plugins.materialtheme.MaterialIndigoThemeManagerFactory.MATERIAL_INDIGO_CSS;
17 | import static io.jenkins.plugins.materialtheme.MaterialRedThemeManagerFactory.MATERIAL_RED_CSS;
18 | import static io.jenkins.plugins.materialtheme.MaterialGreyThemeManagerFactory.MATERIAL_GREY_CSS;
19 | import static io.jenkins.plugins.materialtheme.MaterialLightBlueThemeManagerFactory.MATERIAL_LIGHT_BLUE_CSS;
20 | import static io.jenkins.plugins.materialtheme.MaterialGreenThemeManagerFactory.MATERIAL_GREEN_CSS;
21 | import static io.jenkins.plugins.materialtheme.MaterialYellowThemeManagerFactory.MATERIAL_YELLOW_CSS;
22 | import static io.jenkins.plugins.materialtheme.MaterialPurpleThemeManagerFactory.MATERIAL_PURPLE_CSS;
23 | import static io.jenkins.plugins.materialtheme.MaterialLimeThemeManagerFactory.MATERIAL_LIME_CSS;
24 | import static io.jenkins.plugins.materialtheme.MaterialAmberThemeManagerFactory.MATERIAL_AMBER_CSS;
25 |
26 | @Extension
27 | public class MaterialThemeRootAction implements UnprotectedRootAction {
28 | @Override
29 | public String getIconFileName() {
30 | return null;
31 | }
32 |
33 | @Override
34 | public String getDisplayName() {
35 | return null;
36 | }
37 |
38 | @Override
39 | public String getUrlName() {
40 | return "theme-material";
41 | }
42 |
43 | private static final String css_files[] = new String[] {
44 | BASE_CSS,
45 | MATERIAL_INDIGO_CSS,
46 | MATERIAL_RED_CSS,
47 | MATERIAL_GREY_CSS,
48 | MATERIAL_LIGHT_BLUE_CSS,
49 | MATERIAL_GREEN_CSS,
50 | MATERIAL_YELLOW_CSS,
51 | MATERIAL_PURPLE_CSS,
52 | MATERIAL_LIME_CSS,
53 | MATERIAL_AMBER_CSS,
54 | CUSTOMISED_CSS
55 | };
56 |
57 | public void doDynamic(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
58 | String cssFile = req.getRestOfPath();
59 | if (cssFile.startsWith("/")) {
60 | cssFile = cssFile.substring(1);
61 | }
62 | if (!Arrays.asList(css_files).contains(cssFile)) {
63 | rsp.sendError(404);
64 | return;
65 | }
66 | final Plugin plugin = Jenkins.get().getPlugin("material-theme");
67 | if (plugin == null) {
68 | rsp.sendError(404);
69 | return;
70 | }
71 | plugin.doDynamic(req, rsp);
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # A Material Theme plugin for Jenkins.
2 |
3 | [](https://ci.jenkins.io/job/Plugins/job/material-theme-plugin/job/master/)
4 | [](https://gitter.im/jenkinsci/ux-sig?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
5 | [](https://github.com/jenkinsci/material-theme-plugin/releases/)
6 | [](https://plugins.jenkins.io/material-theme)
7 | [](https://plugins.jenkins.io/material-theme)
8 |
9 | ## Description
10 | This a port of Afonso F's Jenkins material theme (http://afonsof.com/jenkins-material-theme/) to use Theme Manager plugin (https://github.com/jenkinsci/theme-manager-plugin#configuring-the-plugin).
11 | This should allow Jenkins administrators to easily switch themes and allow users to select their own theme.
12 |
13 | ## Screenshots
14 | 'Red':
15 |
16 | [](screenshots/red_main_large.png)
17 |
18 | 'Indigo':
19 |
20 | [](screenshots/indigo_main_large.png)
21 |
22 | 'Grey':
23 |
24 | [](screenshots/grey_main_large.png)
25 |
26 | 'Light Blue':
27 |
28 | [](screenshots/light_blue_main_large.png)
29 |
30 | ## Installation
31 | To install this theme search for 'Material theme' in your Jenkins update center.
32 |
33 | ## Configuration
34 | Go to the "Configure System" page, search for 'Built-in Themes' and select 'Material - Indigo' or 'Material - Red'
35 |
36 | Or with the [configuration-as-code](https://github.com/jenkinsci/configuration-as-code-plugin) plugin:
37 |
38 | ```yaml
39 | unclassified:
40 | themeManager:
41 | disableUserThemes: true
42 | theme: "material-indigo" # or 'material-red' or 'material-grey' or 'material-light-blue'
43 | ```
44 |
45 | ## Running (development)
46 | To build and run this plugin you should only need to run:
47 | ```
48 | mvn clean hpi:run
49 | ```
50 |
51 | ## Development tools
52 | Here is a list of the tools (and versions) I have in my development enviornment - outside of those handeled in the pom.xml.
53 | Java 11
54 | Maven 3.5
55 |
56 |
57 | ## Releasing
58 | To release a new version of this plugin, please follow these steps:
59 | https://www.jenkins.io/doc/developer/publishing/releasing/
60 |
61 | ## Disclaimer
62 | I am not a front-end web or Java developer. The CCS in the project has mostly been copied from http://afonsof.com/jenkins-material-theme/. The Java in this project has modified from the dark theme plugin (https://github.com/jenkinsci/dark-theme-plugin).
63 |
64 | ## Future work
65 | - Add the ability for users to define custom theme pallets.
66 | - Need to add tests to check:
67 | - That when a theme is loaded through the UI, that the correct theme is loaded.
68 |
69 | ## Thanks to
70 | - [Jenkins Material Theme][jenkins-material-theme] for the original theme.
71 | - [jenkins-contrib-theme][jenkins-contrib-theme] for the core theme
72 | - [Google][google] for the the material design inspiration and the icons
73 | - [Material Design Icons][material-design-icons] for some extra icons
74 | - [Theme Manager][theme-manager-plugin] for the base plugin.
75 | - [Dark Theme for Jenkins][dark-theme-plugin] for a good example of using the theme manager.
76 |
77 | [jenkins-contrib-theme]: https://github.com/jenkins-contrib-themes/jenkins-core-theme
78 | [google]: https://www.google.com/design/spec/material-design/introduction.html
79 | [material-design-icons]: https://materialdesignicons.com/
80 | [jenkins-material-theme]: https://github.com/afonsof/jenkins-material-theme
81 | [theme-manager-plugin]: https://plugins.jenkins.io/theme-manager/
82 | [dark-theme-plugin]: https://plugins.jenkins.io/dark-theme/
83 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4.0.0
4 |
5 | org.jenkins-ci.plugins
6 | plugin
7 | 4.47
8 |
9 |
10 | io.jenkins.plugins
11 | material-theme
12 | ${revision}${changelist}
13 | hpi
14 |
15 | 0.5.2
16 | -SNAPSHOT
17 | jenkinsci/material-theme-plugin
18 | 2.346.1
19 | @{project.version}
20 | true
21 |
22 | Material Theme
23 | https://github.com/jenkinsci/material-theme-plugin
24 |
25 |
26 |
27 | io.jenkins.tools.bom
28 | bom-2.346.x
29 | 1607.va_c1576527071
30 | import
31 | pom
32 |
33 |
34 |
35 |
36 |
37 |
38 | io.jenkins.plugins
39 | theme-manager
40 | 1.5
41 |
42 |
43 | io.jenkins
44 | configuration-as-code
45 | test
46 |
47 |
48 | io.jenkins.configuration-as-code
49 | test-harness
50 | test
51 |
52 |
53 |
54 |
55 |
56 | MIT License
57 | https://opensource.org/licenses/MIT
58 |
59 |
60 |
61 |
62 |
63 | timbrown5
64 | Tim Brown
65 |
66 |
67 |
68 |
69 | scm:git:https://github.com/${gitHubRepo}.git
70 | scm:git:git@github.com:${gitHubRepo}.git
71 | https://github.com/${gitHubRepo}
72 | ${scmTag}
73 |
74 |
75 |
76 |
77 | repo.jenkins-ci.org
78 | https://repo.jenkins-ci.org/public/
79 |
80 |
81 |
82 |
83 | repo.jenkins-ci.org
84 | https://repo.jenkins-ci.org/public/
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 | ro.isdc.wro4j
93 | wro4j-maven-plugin
94 | 1.7.0
95 |
96 | ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory
97 | ${basedir}/src/main/config/wro.xml
98 | ${basedir}/src/main/config/wro.properties
99 | light-theme
100 | ${project.build.directory}/../src/main/webapp/
101 | ${basedir}/src/main/webapp/
102 | true
103 |
104 |
105 |
106 |
107 | run
108 |
109 | generate-resources
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/License.txt:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
203 |
--------------------------------------------------------------------------------
/src/main/webapp/material-theme.css:
--------------------------------------------------------------------------------
1 | /* roboto-300 - latin */
2 | @font-face {
3 | font-family: 'Roboto';
4 | font-style: normal;
5 | font-weight: 300;
6 | src: url('../plugin/material-theme/resources/fonts/roboto-v30-latin-300.eot'); /* IE9 Compat Modes */
7 | src: local(''),
8 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
9 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
10 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-300.woff') format('woff'), /* Modern Browsers */
11 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
12 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-300.svg#Roboto') format('svg'); /* Legacy iOS */
13 | }
14 |
15 | /* roboto-regular - latin */
16 | @font-face {
17 | font-family: 'Roboto';
18 | font-style: normal;
19 | font-weight: 400;
20 | src: url('../plugin/material-theme/resources/fonts/roboto-v30-latin-regular.eot'); /* IE9 Compat Modes */
21 | src: local(''),
22 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
23 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
24 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-regular.woff') format('woff'), /* Modern Browsers */
25 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
26 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */
27 | }
28 |
29 | /* roboto-500 - latin */
30 | @font-face {
31 | font-family: 'Roboto';
32 | font-style: normal;
33 | font-weight: 500;
34 | src: url('../plugin/material-theme/resources/fonts/roboto-v30-latin-500.eot'); /* IE9 Compat Modes */
35 | src: local(''),
36 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
37 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-500.woff2') format('woff2'), /* Super Modern Browsers */
38 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-500.woff') format('woff'), /* Modern Browsers */
39 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */
40 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-500.svg#Roboto') format('svg'); /* Legacy iOS */
41 | }
42 |
43 | /* roboto-700 - latin */
44 | @font-face {
45 | font-family: 'Roboto';
46 | font-style: normal;
47 | font-weight: 700;
48 | src: url('../plugin/material-theme/resources/fonts/roboto-v30-latin-700.eot'); /* IE9 Compat Modes */
49 | src: local(''),
50 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
51 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
52 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-700.woff') format('woff'), /* Modern Browsers */
53 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
54 | url('../plugin/material-theme/resources/fonts/roboto-v30-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */
55 | }
56 |
57 | /* roboto-mono-300 - latin */
58 | @font-face {
59 | font-family: 'Roboto Mono';
60 | font-style: normal;
61 | font-weight: 300;
62 | src: url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-300.eot'); /* IE9 Compat Modes */
63 | src: local(''),
64 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
65 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
66 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-300.woff') format('woff'), /* Modern Browsers */
67 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
68 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-300.svg#RobotoMono') format('svg'); /* Legacy iOS */
69 | }
70 |
71 | /* roboto-mono-regular - latin */
72 | @font-face {
73 | font-family: 'Roboto Mono';
74 | font-style: normal;
75 | font-weight: 400;
76 | src: url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-regular.eot'); /* IE9 Compat Modes */
77 | src: local(''),
78 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
79 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
80 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-regular.woff') format('woff'), /* Modern Browsers */
81 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
82 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-regular.svg#RobotoMono') format('svg'); /* Legacy iOS */
83 | }
84 |
85 | /* roboto-mono-500 - latin */
86 | @font-face {
87 | font-family: 'Roboto Mono';
88 | font-style: normal;
89 | font-weight: 500;
90 | src: url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-500.eot'); /* IE9 Compat Modes */
91 | src: local(''),
92 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
93 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-500.woff2') format('woff2'), /* Super Modern Browsers */
94 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-500.woff') format('woff'), /* Modern Browsers */
95 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */
96 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-500.svg#RobotoMono') format('svg'); /* Legacy iOS */
97 | }
98 |
99 | /* roboto-mono-700 - latin */
100 | @font-face {
101 | font-family: 'Roboto Mono';
102 | font-style: normal;
103 | font-weight: 700;
104 | src: url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-700.eot'); /* IE9 Compat Modes */
105 | src: local(''),
106 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
107 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
108 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-700.woff') format('woff'), /* Modern Browsers */
109 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
110 | url('../plugin/material-theme/resources/fonts/roboto-mono-v22-latin-700.svg#RobotoMono') format('svg'); /* Legacy iOS */
111 | }
112 |
113 | [data-theme=material-red], .app-theme-picker__picker[data-theme=material-red],
114 | [data-theme=material-indigo], .app-theme-picker__picker[data-theme=material-indigo],
115 | [data-theme=material-grey], .app-theme-picker__picker[data-theme=material-grey] ,
116 | [data-theme=material-light-blue], .app-theme-picker__picker[data-theme=material-light-blue],
117 | [data-theme=material-green], .app-theme-picker__picker[data-theme=material-green],
118 | [data-theme=material-yellow], .app-theme-picker__picker[data-theme=material-yellow],
119 | [data-theme=material-purple], .app-theme-picker__picker[data-theme=material-purple],
120 | [data-theme=material-lime], .app-theme-picker__picker[data-theme=material-lime],
121 | [data-theme=material-amber], .app-theme-picker__picker[data-theme=material-amber]
122 | {
123 | /* Font */
124 | --font-family-sans: Roboto !important;
125 |
126 | /* Header */
127 | --header-bg-classic: var(--material-primary);
128 | --header-link-bg-classic-hover: var(--material-secondary);
129 | --header-link-bg-classic-active: var(--material-secondary);
130 |
131 | /* links */
132 | --link-color: var(--material-primary);
133 | --link-color--hover: var(--material-secondary);
134 | --link-color--active: var(--material-secondary);
135 |
136 | /* Pane */
137 | --pane-link-color: var(--material-primary);
138 | --pane-link-color--visited: var(--material-primary);
139 |
140 | /* Buttons */
141 | --btn-primary-bg: var(--material-primary);
142 | --btn-primary-bg-hover: var(--material-secondary);
143 | --btn-primary-bg-active: var(--primary-active);
144 | --btn-secondary-color: var(--material-primary);
145 | --btn-secondary-bg: var(--btn-text-color);
146 | --btn-secondary-border: var(--material-primary);
147 | --btn-text-color: var(--white);
148 | --btn-link-bg--hover: var(--very-light-grey);
149 | --btn-link-bg--active: var(--light-grey);
150 |
151 | /* Table */
152 | --bigtable-header-bg: var(--light-grey);
153 | --bigtable-header-border-color: var(--light-grey);
154 | --bigtable-header-text-color: var(--dark-grey);
155 | --bigtable-row-border-color: var(--light-grey);
156 | /* Remove if you don't light the alternating coloured rows */
157 | --even-row-color: var(--very-light-grey);
158 | --table-striped-bg--hover: var(--very-light-grey);
159 |
160 | /* Tab bar widget */
161 | --tab-link-border-color: var(--light-grey);
162 | --tab-link-text-color: var(--dark-grey);
163 | --tab-link-checked-bg: var(--light-grey);
164 | --tab-link-checked-text-color: var(--dark-grey);
165 | --tab-link-bg--hover: var(--light-grey);
166 | --tab-link-bg--active: var(--light-grey);
167 | --tab-link-bg: var(--very-light-grey);
168 | }
169 |
170 | /* Manually change some header settings (these aren't available through theme.less */
171 | [data-theme=material-red] #header,
172 | [data-theme=material-indigo] #header,
173 | [data-theme=material-grey] #header,
174 | [data-theme=material-light-blue] #header,
175 | [data-theme=material-green] #header,
176 | [data-theme=material-yellow] #header,
177 | [data-theme=material-purple] #header,
178 | [data-theme=material-lime] #header,
179 | [data-theme=material-amber] #header
180 | {
181 | height: 64px;
182 | text-transform: uppercase;
183 | padding: 12px 10px;
184 | }
185 |
186 | /* Change tab background so tabs don't float when there are multiple rows
187 | this doesn't look great, but I think it's less bad than when it's left white. */
188 | [data-theme=material-red] .tabBarFrame,
189 | [data-theme=material-indigo] .tabBarFrame,
190 | [data-theme=material-grey] .tabBarFrame,
191 | [data-theme=material-light-blue] .tabBarFrame,
192 | [data-theme=material-green] .tabBarFrame,
193 | [data-theme=material-yellow] .tabBarFrame,
194 | [data-theme=material-purple] .tabBarFrame,
195 | [data-theme=material-lime] .tabBarFrame,
196 | [data-theme=material-amber] .tabBarFrame
197 | {
198 | position: relative;
199 | background: var(--very-light-grey);
200 | }
201 |
202 | [data-theme=material-red] .yui-button button,
203 | [data-theme=material-indigo] .yui-button button,
204 | [data-theme=material-grey] .yui-button button,
205 | [data-theme=material-light-blue] .yui-button button,
206 | [data-theme=material-green] .yui-button button,
207 | [data-theme=material-yellow] .yui-button button,
208 | [data-theme=material-purple] .yui-button button,
209 | [data-theme=material-lime] .yui-button button,
210 | [data-theme=material-amber] .yui-button button
211 | {
212 | text-transform: uppercase;
213 | }
214 |
215 | [data-theme=material-red] a, [data-theme=material-red] a:link, [data-theme=material-red] a:hover, [data-theme=material-red] a:visited,
216 | [data-theme=material-indigo] a, [data-theme=material-indigo] a:link, [data-theme=material-indigo] a:hover, [data-theme=material-indigo] a:visited,
217 | [data-theme=material-grey] a, [data-theme=material-grey] a:link, [data-theme=material-grey] a:hover, [data-theme=material-grey] a:visited,
218 | [data-theme=material-light-blue] a, [data-theme=material-light-blue] a:link, [data-theme=material-light-blue] a:hover, [data-theme=material-light-blue] a:visited,
219 | [data-theme=material-green] a, [data-theme=material-green] a:link, [data-theme=material-green] a:hover, [data-theme=material-green] a:visited,
220 | [data-theme=material-yellow] a, [data-theme=material-yellow] a:link, [data-theme=material-yellow] a:hover, [data-theme=material-yellow] a:visited,
221 | [data-theme=material-purple] a, [data-theme=material-purple] a:link, [data-theme=material-purple] a:hover, [data-theme=material-purple] a:visited,
222 | [data-theme=material-lime] a, [data-theme=material-lime] a:link, [data-theme=material-lime] a:hover, [data-theme=material-lime] a:visited,
223 | [data-theme=material-amber] a, [data-theme=material-amber] a:link, [data-theme=material-amber] a:hover, [data-theme=material-amber] a:visited
224 | {
225 | text-decoration: none!important;
226 | }
227 |
228 | [data-theme=material-red] .jenkins_ver:after,
229 | [data-theme=material-indigo] .jenkins_ver:after,
230 | [data-theme=material-grey] .jenkins_ver:after,
231 | [data-theme=material-light-blue] .jenkins_ver:after,
232 | [data-theme=material-green] .jenkins_ver:after,
233 | [data-theme=material-yellow] .jenkins_ver:after,
234 | [data-theme=material-purple] .jenkins_ver:after,
235 | [data-theme=material-lime] .jenkins_ver:after,
236 | [data-theme=material-amber] .jenkins_ver:after
237 | {
238 | margin-left: 15px;
239 | content:"Material Theme Plugin"
240 | }
241 |
242 | /* Console readablity improvements */
243 | [data-theme=material-red] .console-output,
244 | [data-theme=material-indigo] .console-output,
245 | [data-theme=material-grey] .console-output,
246 | [data-theme=material-light-blue] .console-output,
247 | [data-theme=material-green] .console-output,
248 | [data-theme=material-yellow] .console-output,
249 | [data-theme=material-purple] .console-output,
250 | [data-theme=material-lime] .console-output,
251 | [data-theme=material-amber] .console-output
252 | {
253 | padding: 10px 20px;
254 | }
255 |
256 | [data-theme=material-red] .console-output, [data-theme=material-red] .console-output *,
257 | [data-theme=material-indigo] .console-output, [data-theme=material-indigo] .console-output *,
258 | [data-theme=material-grey] .console-output, [data-theme=material-grey] .console-output *,
259 | [data-theme=material-light-blue] .console-output, [data-theme=material-light-blue] .console-output *,
260 | [data-theme=material-green] .console-output, [data-theme=material-green] .console-output *,
261 | [data-theme=material-yellow] .console-output, [data-theme=material-yellow] .console-output *,
262 | [data-theme=material-purple] .console-output, [data-theme=material-purple] .console-output *,
263 | [data-theme=material-lime] .console-output, [data-theme=material-lime] .console-output *,
264 | [data-theme=material-amber] .console-output, [data-theme=material-amber] .console-output *
265 | {
266 | position: relative;
267 | font-family: Roboto Mono,monospace!important;
268 | font-size: 14px;
269 | background: #263238;
270 | cursor: text;
271 | }
272 |
273 | [data-theme=material-red] pre.console-output,
274 | [data-theme=material-indigo] pre.console-output,
275 | [data-theme=material-grey] pre.console-output,
276 | [data-theme=material-light-blue] pre.console-output,
277 | [data-theme=material-green] pre.console-output,
278 | [data-theme=material-yellow] pre.console-output,
279 | [data-theme=material-purple] pre.console-output,
280 | [data-theme=material-lime] pre.console-output,
281 | [data-theme=material-amber] pre.console-output
282 | {
283 | color: #e9eded!important;
284 | }
285 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/less/core-theme.less:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2016 Afonso F
2 | [data-theme=material-red],
3 | [data-theme=material-indigo],
4 | [data-theme=material-grey],
5 | [data-theme=material-light-blue],
6 | [data-theme=material-green],
7 | [data-theme=material-yellow],
8 | [data-theme=material-purple],
9 | [data-theme=material-lime],
10 | [data-theme=material-amber]
11 | {
12 | // Copied from functions.less
13 | // Change to use masks - so we can change svg icon color
14 | .icon-img(@url, @icon-color) {
15 | display: inline !important;
16 | background-color: @icon-color !important;
17 | mask-image: url(@url) !important;
18 | mask-repeat: no-repeat !important;
19 | // Backwards compatibility (inc. Chrome) for masks
20 | -webkit-mask-image: url(@url) !important;
21 | -webkit-mask-repeat: no-repeat;
22 | }
23 |
24 | // Generated by https://codepen.io/sosuke/pen/Pjoqqp
25 | .icon(@size) { // outer mixin
26 | @icon-size: @size;
27 | padding-left: @icon-size !important;
28 | padding-top: @icon-size !important;
29 | height: 0 !important;
30 | width: 0 !important;
31 | mask-size: @icon-size @icon-size !important;
32 | // Backwards compatibility (inc. Chrome) for mask size
33 | -webkit-mask-size: @icon-size @icon-size !important;
34 | background-size: 100% 100% !important;
35 | font-size: 0 !important;
36 | }
37 |
38 | .shadow1() {
39 | box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
40 | }
41 |
42 | // Global font
43 | #main-panel > pre {
44 | font-family: Roboto Mono, monospace !important;
45 | }
46 |
47 | // Animations
48 | @keyframes keyframes-rotate {
49 | from {
50 | transform: rotate(0deg);
51 | }
52 | to {
53 | transform: rotate(360deg);
54 | }
55 | }
56 |
57 | .animate-rotate() {
58 | animation: keyframes-rotate 2s linear infinite;
59 | }
60 |
61 | @keyframes keyframes-pulse {
62 | 0% {
63 | opacity: 1;
64 | }
65 | 50% {
66 | opacity: 0;
67 | }
68 | 100% {
69 | opacity: 1;
70 | }
71 | }
72 |
73 | .animate-pulse() {
74 | animation: keyframes-pulse ease-in-out 2s;
75 | animation-iteration-count: infinite;
76 | transform-origin: 50% 50%;
77 | animation-fill-mode: forwards;
78 | }
79 |
80 | // Default Sizes
81 | @size-sm: 18px;
82 | @size-md: 24px;
83 | @size-lg: 36px;
84 | @size-xl: 48px;
85 |
86 | // Src
87 | // Reminder: Each selector using `.icon-img` must be declared bellow using .icon-size too
88 |
89 | .icon-new-package, [src$='new-package.png'] {
90 | .icon-img('../plugin/material-theme/resources/images/add_circle_outline.svg', @color-grey);
91 | }
92 |
93 | .icon-user, [src$='user.png'] {
94 | .icon-img('../plugin/material-theme/resources/images/people.svg', @color-grey);
95 | }
96 |
97 | .icon-notepad, [src$='notepad.png'] {
98 | .icon-img('../plugin/material-theme/resources/images/history.svg', @color-grey);
99 | }
100 |
101 | .icon-setting, [src$='setting.png'], .icon-gear2, [src$='gear2.png'] {
102 | .icon-img('../plugin/material-theme/resources/images/settings.svg', @color-grey);
103 | }
104 |
105 | .icon-up, .task-icon-link[href='/'] img {
106 | .icon-img('../plugin/material-theme/resources/images/arrow_back.svg', @color-grey);
107 | }
108 |
109 | .icon-edit-delete {
110 | .icon-img('../plugin/material-theme/resources/images/delete.svg', @color-grey);
111 | }
112 |
113 | .icon-fingerprint, [src$='fingerprint.png'] {
114 | .icon-img('../plugin/material-theme/resources/images/fingerprint.svg', @color-grey);
115 | }
116 |
117 | .icon-graph, [src$='graph.png'] {
118 | .icon-img('../plugin/material-theme/resources/images/insert_chart.svg', @color-grey);
119 | }
120 |
121 | .icon-collapse {
122 | .icon-img('../plugin/material-theme/resources/images/expand_less.svg', @color-grey);
123 | }
124 |
125 | .icon-expand {
126 | .icon-img('../plugin/material-theme/resources/images/expand_more.svg', @color-grey);
127 | }
128 |
129 | .icon-help, [src$='help.png'] {
130 | .icon-img('../plugin/material-theme/resources/images/help_outline.svg', @color-grey);
131 | }
132 |
133 | .icon-secure, .icon-lock, [src$='secure.png'] {
134 | .icon-img('../plugin/material-theme/resources/images/lock.svg', @color-grey);
135 | }
136 |
137 | .icon-plugin, [src$='plugin.png'] {
138 | .icon-img('../plugin/material-theme/resources/images/extension.svg', @color-grey);
139 | }
140 |
141 | .icon-system-log-out, [src$='system-log-out.png'] {
142 | .icon-img('../plugin/material-theme/resources/images/power_settings_new.svg', @color-grey);
143 | }
144 |
145 | .icon-refresh, [src$='refresh.png'] {
146 | .icon-img('../plugin/material-theme/resources/images/refresh.svg', @color-grey);
147 | }
148 |
149 | .icon-computer, [src$='computer.png'] {
150 | .icon-img('../plugin/material-theme/resources/images/computer.svg', @color-grey);
151 | }
152 |
153 | .icon-computer-x {
154 | .icon-img('../plugin/material-theme/resources/images/computer_offline.svg', @color-grey);
155 | }
156 |
157 | .icon-new-computer {
158 | .icon-img('../plugin/material-theme/resources/images/computer_new.svg', @color-grey);
159 | }
160 |
161 | .icon-clipboard, [src$='clipboard.png'] {
162 | .icon-img('../plugin/material-theme/resources/images/assignment.svg', @color-grey);
163 | }
164 |
165 | .icon-monitor, [src$='monitor.png'] {
166 | .icon-img('../plugin/material-theme/resources/images/chart-areaspline.svg', @color-grey);
167 | }
168 |
169 | .icon-network, [src$='network.png'] {
170 | .icon-img('../plugin/material-theme/resources/images/server-network.svg', @color-grey);
171 | }
172 |
173 | .icon-document, .icon-text {
174 | .icon-img('../plugin/material-theme/resources/images/file.svg', @color-grey);
175 | }
176 |
177 | .icon-folder, [src$='folder.png'], [src$='/directory16.png'] {
178 | .icon-img('../plugin/material-theme/resources/images/folder.svg', @color-grey);
179 | }
180 |
181 | .icon-clock, .icon-clock-anime, [src$='clock.png'] {
182 | .icon-img('../plugin/material-theme/resources/images/play_circle_outline.svg', @color-grey);
183 | }
184 |
185 | .icon-folder-delete, [src$='edit-delete.png'] {
186 | .icon-img('../plugin/material-theme/resources/images/folder-remove.svg', @color-grey);
187 | }
188 |
189 | .icon-previous {
190 | .icon-img('../plugin/material-theme/resources/images/skip_previous.svg', @color-grey);
191 | }
192 |
193 | .icon-next {
194 | .icon-img('../plugin/material-theme/resources/images/skip_next.svg', @color-grey);
195 | }
196 |
197 | .icon-save, [src$='/save.png'] {
198 | .icon-img('../plugin/material-theme/resources/images/save.svg', @color-grey);
199 | }
200 |
201 | .icon-package, [src$='package.gif'] {
202 | .icon-img('../plugin/material-theme/resources/images/package-down.svg', @color-grey);
203 | }
204 |
205 | .icon-search, [src$='search.png'] {
206 | .icon-img('../plugin/material-theme/resources/images/info_outline.svg', @color-grey);
207 | }
208 |
209 | .icon-stop {
210 | .icon-img('../plugin/material-theme/resources/images/stop.svg', @color-grey);
211 | }
212 |
213 | [src$='/move.png'] {
214 | .icon-img('../plugin/material-theme/resources/images/folder-move.svg', @color-grey);
215 | }
216 |
217 | [src$='/atom.gif'] {
218 | .icon(@size-md);
219 | .icon-img('../plugin/material-theme/resources/images/rss-box.svg', @color-yellow);
220 | }
221 |
222 | [src$='confighistory.png'] {
223 | .icon-img('../plugin/material-theme/resources/images/build.svg', @color-grey);
224 | }
225 |
226 | [src$='domain.png'] {
227 | .icon(@size-xl);
228 | .icon-img('../plugin/material-theme/resources/images/domain.svg', @color-grey);
229 | }
230 |
231 | #description-link img, .icon-gear, [src$='gear.png'] {
232 | .icon-img('../plugin/material-theme/resources/images/pencil.svg', @color-grey);
233 | }
234 |
235 | .icon-go-next {
236 | .icon-img('../plugin/material-theme/resources/images/arrow_forward.svg', @color-grey);
237 | }
238 |
239 | [src$='diskusage48.png'] {
240 | .icon(@size-xl);
241 | .icon-img('../plugin/material-theme/resources/images/storage.svg', @color-grey);
242 | }
243 |
244 | [src$='git-32x32.png'] {
245 | // Force the 32x32 logo to be 24x24 - as it is much bigger that the others in the build menu.
246 | .icon(@size-md);
247 | .icon-img('../plugin/material-theme/resources/images/git.svg', @color-grey);
248 | }
249 |
250 | [src$='git-48x48.png'] {
251 | .icon(@size-xl);
252 | .icon-img('../plugin/material-theme/resources/images/git.svg', @color-grey);
253 | }
254 |
255 | [src$='logov3.png'] {
256 | .icon-img('../plugin/material-theme/resources/images/github-circle.svg', @color-grey);
257 | }
258 |
259 | [src$='findbugs-24x24.png'], [src$='findbugs-48x48.png'] {
260 | .icon-img('../plugin/material-theme/resources/images/bug_report.svg', @color-grey);
261 | }
262 |
263 | [src$='dry-24x24.png'], [src$='dry-48x48.png'] {
264 | .icon-img('../plugin/material-theme/resources/images/compare.svg', @color-grey);
265 | }
266 |
267 | [src$='checkstyle-24x24.png'], [src$='checkstyle-48x48.png'] {
268 | .icon-img('../plugin/material-theme/resources/images/flag.svg', @color-grey);
269 | }
270 |
271 | [src$='pmd-24x24.png'], [src$='pmd-48x48.png'] {
272 | .icon-img('../plugin/material-theme/resources/images/feedback.svg', @color-grey);
273 | }
274 |
275 | [src$='tasks-24x24.png'], [src$='tasks-48x48.png'] {
276 | .icon-img('../plugin/material-theme/resources/images/assignment_late.svg', @color-grey);
277 | }
278 |
279 | [src$='analysis-24x24.png'], [src$='analysis-48x48.png'],
280 | [src$='go-24x24.png'], [src$='go-48x48.png'],
281 | [src$='idea-24x24.png'], [src$='idea-48x48.png'],
282 | [src$='java-24x24.png'], [src$='java-48x48.png'],
283 | [src$='resharper-24x24.png'], [src$='resharper-48x48.png'],
284 | [src$='scala-24x24.png'], [src$='scala-48x48.png'],
285 | [src$='warnings-24x24.png'], [src$='warnings-48x48.png'] {
286 | .icon-img('../plugin/material-theme/resources/images/warning.svg', @color-grey);
287 | }
288 |
289 | // Size
290 | .icon-new-package, [src$='new-package.png'],
291 | .icon-user, [src$='user.png'],
292 | .icon-notepad, [src$='notepad.png'],
293 | .icon-setting, [src$='setting.png'],
294 | .icon-gear2, [src$='gear2.png'],
295 | .icon-up,
296 | .icon-edit-delete,
297 | .icon-fingerprint, [src$='fingerprint.png'],
298 | .icon-graph, [src$='graph.png'],
299 | .icon-collapse,
300 | .icon-expand,
301 | .icon-help, [src$='help.png'],
302 | .icon-secure, .icon-lock, [src$='secure.png'],
303 | .icon-plugin, [src$='plugin.png'],
304 | .icon-system-log-out, [src$='system-log-out.png'],
305 | .icon-refresh, [src$='refresh.png'],
306 | .icon-computer, [src$='computer.png'],
307 | .icon-computer-x,
308 | .icon-new-computer,
309 | .icon-clipboard, [src$='clipboard.png'],
310 | .icon-monitor, [src$='monitor.png'],
311 | .icon-network, [src$='network.png'],
312 | .icon-document, .icon-text,
313 | .icon-folder, [src$='folder.png'], [src$='/directory16.png'],
314 | .icon-clock, .icon-clock-anime, [src$='clock.png'],
315 | .icon-folder-delete, [src$='edit-delete.png'],
316 | .icon-previous,
317 | .icon-next,
318 | .icon-save, [src$='/save.png'],
319 | .icon-package, [src$='package.gif'],
320 | .icon-search, [src$='search.png'],
321 | .icon-stop,
322 | [src$='/move.png'],
323 | [src$='/atom.gif'],
324 | [src$='confighistory.png'],
325 | [src$='domain.png'],
326 | #description-link img, .icon-gear, [src$='gear.png'],
327 | .icon-go-next,
328 | [src$='diskusage48.png'],
329 | [src$='findbugs-24x24.png'], [src$='findbugs-48x48.png'],
330 | [src$='checkstyle-24x24.png'], [src$='checkstyle-48x48.png'],
331 | [src$='analysis-24x24.png'], [src$='analysis-48x48.png'],
332 | [src$='go-24x24.png'], [src$='go-48x48.png'],
333 | [src$='idea-24x24.png'], [src$='idea-48x48.png'],
334 | [src$='java-24x24.png'], [src$='java-48x48.png'],
335 | [src$='resharper-24x24.png'], [src$='resharper-48x48.png'],
336 | [src$='scala-24x24.png'], [src$='scala-48x48.png'],
337 | [src$='warnings-24x24.png'], [src$='warnings-48x48.png'],
338 | [src$='dry-24x24.png'], [src$='dry-48x48.png'],
339 | [src$='pmd-24x24.png'], [src$='pmd-48x48.png'],
340 | [src$='tasks-24x24.png'], [src$='tasks-48x48.png'],
341 | [src$='logov3.png'] {
342 |
343 | &.icon-xlg, &[src*='48x'], &.icon48x48 {
344 | .icon(@size-xl);
345 | }
346 |
347 | &.icon-lg, &[src*='32x'], &.icon32x32, &[style*='width: 32p'], &[width="32"] {
348 | .icon(@size-lg);
349 | }
350 |
351 | &.icon-md, &[src*='24x'], &.icon24x24, &[style*='width: 24p'], &[width="24"] {
352 | .icon(@size-md);
353 | }
354 |
355 | &.icon-sm, &[src*='16x'], &.icon16x16, &[style*='width: 16p'], &[width="16"] {
356 | .icon(@size-sm);
357 | }
358 | }
359 |
360 | #header {
361 | .icon-help {
362 | filter: brightness(10000);
363 | }
364 | }
365 |
366 | // Hacks
367 |
368 | [src*='www.gravatar.com'] {
369 | height: auto !important;
370 | width: auto !important;
371 | padding: 0 !important;
372 | }
373 |
374 | .task-icon-link[href='/'] {
375 | img {
376 | padding: 36px 0 0 36px !important;
377 | filter: brightness(10000);
378 | }
379 | }
380 |
381 |
382 | // Extensions - Added since port to Theme Manage
383 | // Multi-branch Pipelines
384 | .icon-pipeine-multibranch-project, [src$='pipelinemultibranchproject.png'] {
385 | .icon-img('../plugin/material-theme/resources/images/source-repository-multiple.svg', @color-grey);
386 | }
387 |
388 | // Lockable Resources
389 | .icon-device,
390 | [src$='device-24x24.png'], [src$='device-48x48.png'] {
391 | .icon-img('../plugin/material-theme/resources/images/devices.svg', @color-grey);
392 | }
393 |
394 | // Document (Manage Old Data)
395 | .icon-document, [src$='document.png'] {
396 | .icon-img('../plugin/material-theme/resources/images/file-document.svg', @color-grey);
397 | }
398 |
399 | // Disk (Disk Usage)
400 | .icon-disk, [src$='disk.png'] {
401 | .icon(@size-xl);
402 | .icon-img('../plugin/material-theme/resources/images/harddisk.svg', @color-grey);
403 | }
404 |
405 | // Docker
406 | .icon-docker, [src$='docker.png'] {
407 | // Set default size, as path doesn't contain one (for the regular expressions in Extension sizes)
408 | .icon(@size-xl);
409 | .icon-img('../plugin/material-theme/resources/images/docker.svg', @color-grey);
410 | }
411 |
412 | // Health pulse (monitor)
413 | .icon-monitor, [src$='monitor.gif'] {
414 | .icon-img('../plugin/material-theme/resources/images/clipboard-pulse.svg', @color-grey);
415 | }
416 |
417 | // Pause build
418 | [src$='pause.png'] {
419 | .icon-img('../plugin/material-theme/resources/images/play-pause.svg', @color-grey);
420 | }
421 |
422 | // Replay build
423 | .icon-repo, [src$='redo.png'] {
424 | .icon-img('../plugin/material-theme/resources/images/replay.svg', @color-grey);
425 | }
426 |
427 | // Parameters
428 | .icon-document-properties, [src$='document-properties.png'] {
429 | .icon-img('../plugin/material-theme/resources/images/file-cog.svg', @color-grey);
430 | }
431 |
432 | // Computer User offline
433 | .icon-computer-user-offline, [src$="computer-user-offline.png"] {
434 | .icon-img('../plugin/material-theme/resources/images/laptop-off.svg', @color-grey);
435 | }
436 |
437 |
438 | // Remove the background from icons on the New Item page.
439 | div.icon {
440 | height: 0% !important;
441 | width: 0% !important;
442 | content: none;
443 | border: none !important;
444 | left: 0px !important;
445 | top: 7px !important;
446 | }
447 |
448 | // Create item menu
449 | // Freestyle Project
450 | .icon-freestyle-project, [src$='freestyleproject.png'] {
451 | .icon(@size-xl);
452 | .icon-img('../plugin/material-theme/resources/images/file-plus.svg', @color-grey);
453 | }
454 |
455 | // Multi-configuration project
456 | [src$='matrixproject.png'] {
457 | .icon(@size-xl);
458 | .icon-img('../plugin/material-theme/resources/images/file-table.svg', @color-grey);
459 | }
460 |
461 | // External Job
462 | [src$='externaljob.png'] {
463 | .icon(@size-xl);
464 | .icon-img('../plugin/material-theme/resources/images/plus-network.svg', @color-grey);
465 | }
466 |
467 | // Maven
468 | .icon-maven-moduleset, [src$='mavenmoduleset.png'] {
469 | .icon(@size-xl);
470 | .icon-img('../plugin/material-theme/resources/images/owl.svg', @color-grey);
471 | }
472 |
473 | // Multi-job project - not used yet (need to replace div)
474 | .div.default-icon {
475 | .icon(@size-xl);
476 | .icon-img('../plugin/material-theme/resources/images/file-document-multiple.svg', @color-grey);
477 | }
478 |
479 | // Pipeline
480 | [src$='pipelinejob.png'] {
481 | .icon(@size-xl);
482 | .icon-img('../plugin/material-theme/resources/images/pipe.svg', @color-grey);
483 | }
484 |
485 | // Job submenu
486 | // Claim
487 | [src$='claim.png'] {
488 | .icon(@size-md);
489 | .icon-img('../plugin/material-theme/resources/images/account-arrow-left.svg', @color-grey);
490 | }
491 |
492 | // Copy job
493 | [src$='copy.png'] {
494 | .icon(@size-xl);
495 | .icon-img('../plugin/material-theme/resources/images/content-copy.svg', @color-grey);
496 | }
497 |
498 | // Restart from stage
499 | [src$='restart-stage.png'] {
500 | .icon(@size-md);
501 | .icon-img('../plugin/material-theme/resources/images/restart.svg', @color-grey);
502 | }
503 |
504 | // Test Results Analyser
505 | [src$='test-results-analyzer/images/icon.png'] {
506 | .icon(@size-md);
507 | .icon-img('../plugin/material-theme/resources/images/clipboard-check.svg', @color-grey);
508 | }
509 |
510 | // General
511 | // Orange-Square
512 | .icon-orange-square, [src$='orange-square.png'], [src$='orange-square.svg'] {
513 | .icon-img('../plugin/material-theme/resources/images/comment-arrow-right.svg', @color-grey);
514 | }
515 |
516 | // Hour glass
517 | .icon-hourglass, [src$='hourglass.png'], [src$='hourglass.svg'], [src$='hourglass.gif'] {
518 | .icon-img('../plugin/material-theme/resources/images/timer-sand.svg', @color-grey);
519 | }
520 |
521 | // Attribute (label/tag)
522 | .icon-attribute, [src$='attribute.png'] {
523 | .icon-img('../plugin/material-theme/resources/images/tag-text.svg', @color-grey);
524 | }
525 |
526 | // Extension sizes
527 | .div.default-icon,
528 | .icon-attribute, [src$='attribute.png'],
529 | .icon-computer-user-offline, [src$="computer-user-offline.png"],
530 | .icon-config, [src$='logo-head.svg'], [src$='matrixproject.png'],
531 | [src$='copy.png'],
532 | .icon-device, [src$='device-24x24.png'], [src$='device-48x48.png'],
533 | .icon-disk, [src$='disk.png'],
534 | .icon-docker, [src$='docker.png'],
535 | .icon-document, [src$='document.png'],
536 | .icon-document-properties, [src$='document-properties.png'],
537 | .icon-freestyle-project, [src$='freestyleproject.png'],
538 | .icon-hourglass, [src$='hourglass.png'], [src$='hourglass.svg'], [src$='hourglass.gif'],
539 | .icon-maven-moduleset, [src$='mavenmoduleset.png'],
540 | .icon-monitor, [src$='monitor.gif'], [src$='systemmonitor.png'],
541 | .icon-orange-square, [src$='orange-square.png'], [src$='orange-square.svg'],
542 | [src$='pause.png'], [src$='48x48/pipelinejob.png'],
543 | .icon-pipeine-multibranch-project, [src$='pipelinemultibranchproject.png'],
544 | [src$='pipelinejob.png'],
545 | .icon-repo, [src$='redo.png'],
546 | [src$='test-results-analyzer/images/icon.png'] {
547 | // Replace icons with ones with the appropriate size.
548 | // This relies on:
549 | // - the size being set by a class (e.g. icon-xlg, icon48x48)
550 | // - being path of original image path
551 | // - the original page setting the size explicitly.
552 | &.icon-xlg, &[src*='48x'], &.icon48x48 {
553 | .icon(@size-xl);
554 | }
555 |
556 | &.icon-lg, &[src*='32x'], &.icon32x32, &[style*='width: 32p'], &[width="32"] {
557 | .icon(@size-lg);
558 | }
559 |
560 | &.icon-md, &[src*='24x'], &.icon24x24, &[style*='width: 24p'], &[width="24"] {
561 | .icon(@size-md);
562 | }
563 |
564 | &.icon-sm, &[src*='16x'], &.icon16x16, &[style*='width: 16p'], &[width="16"] {
565 | .icon(@size-sm);
566 | }
567 | }
568 | }
569 |
--------------------------------------------------------------------------------
/src/main/webapp/resources/fonts/roboto-v30-latin-500.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
306 |
--------------------------------------------------------------------------------