diff --git a/web/app/admin/admin.component.scss b/web/app/admin/admin.component.scss index c64395d..5124dc2 100644 --- a/web/app/admin/admin.component.scss +++ b/web/app/admin/admin.component.scss @@ -1,60 +1,56 @@ -//$bgColor: #625F72; -//$hoverColor: #6E8ABC; -//$accentColor: #8ABBFF; +@import "../../style/themes/themes"; -$bgColor: #233046; -$hoverColor: #374752; -$accentColor: #DE6657; +@include themifyComponent() { + .adminNav { + width: 200px; + margin: 0; + padding: 0; + position: fixed; + top: 100px; + left: 0; + bottom: 0; + background-color: themed(adminBgColor); + } -.adminNav { - width: 200px; - margin: 0; - padding: 0; - position: fixed; - top: 120px; - left: 0; - bottom: 0; - background-color: $bgColor; -} + .adminNav li { + list-style: none; + background-color: themed(adminBgColor); + border-left: 5px solid themed(adminBgColor); + padding: 5px 5px 5px 11px; + color: themed(adminFgColor); + opacity: 0.5; + cursor: pointer; + } -.adminNav li { - list-style: none; - background-color: $bgColor; - border-left: 5px solid $bgColor; - padding: 5px 5px 5px 11px; - color: #fff; - opacity: 0.5; - cursor: pointer; -} + .adminNav li:hover, + .adminNav li.active { + opacity: 1; + background-color: themed(adminHoverColor); + border-left: 5px solid themed(adminHoverColor); + } -.adminNav li:hover, -.adminNav li.active { - opacity: 1; - background-color: $hoverColor; - border-left: 5px solid $hoverColor; -} + .adminNav li.active { + border-left: 5px solid themed(adminAccentColor); + } -.adminNav li.active { - border-left: 5px solid $accentColor; -} + .adminContent { + position: fixed; + top: 120px; + left: 200px; + bottom: 0; + right: 0; + padding: 15px; + overflow: auto; + } -.adminContent { - position: fixed; - top: 120px; - left: 200px; - bottom: 0; - right: 0; - padding: 15px; - overflow: auto; -} - -.version { - position: fixed; - bottom: 0; - left: 0; - width: 200px; - text-align: center; - color: #7d7d7d; - font-size: 11px; - font-family: monospace; + .version { + position: fixed; + bottom: 0; + left: 0; + width: 200px; + text-align: center; + color: themed(adminVersionColor); + font-size: 11px; + font-family: monospace; + } } \ No newline at end of file diff --git a/web/app/admin/neb/appservice-config/appservice-config.component.scss b/web/app/admin/neb/appservice-config/appservice-config.component.scss index 779f17d..7c411ea 100644 --- a/web/app/admin/neb/appservice-config/appservice-config.component.scss +++ b/web/app/admin/neb/appservice-config/appservice-config.component.scss @@ -1,6 +1,10 @@ -pre { - margin-top: 10px; - padding: 5px; - border: 1px solid #ccc; - background-color: #eee; +@import "../../../../style/themes/themes"; + +@include themifyComponent() { + pre { + margin-top: 10px; + padding: 5px; + border: 1px solid themed(appserviceConfigPreBorderColor); + background-color: themed(appserviceConfigPreBgColor); + } } \ No newline at end of file diff --git a/web/app/admin/sticker-packs/preview/preview.component.scss b/web/app/admin/sticker-packs/preview/preview.component.scss index a755e7a..7f85018 100644 --- a/web/app/admin/sticker-packs/preview/preview.component.scss +++ b/web/app/admin/sticker-packs/preview/preview.component.scss @@ -1,22 +1,26 @@ -.sticker { - margin: 20px; - padding: 5px; - background-color: #f6fbff; +@import "../../../../style/themes/themes"; - .caption { - display: inline-block; - vertical-align: middle; - margin-left: 20px; +@include themifyComponent() { + .sticker { + margin: 20px; + padding: 5px; + background-color: themed(stickerPreviewBgColor); - .name { - font-size: 1.1em; - font-weight: bold; - display: block; - } + .caption { + display: inline-block; + vertical-align: middle; + margin-left: 20px; - .description { - color: #7d7d7d; - display: block; + .name { + font-size: 1.1em; + font-weight: bold; + display: block; + } + + .description { + color: themed(stickerPreviewFgColor); + display: block; + } } } } \ No newline at end of file diff --git a/web/app/configs/stickerpicker/stickerpicker.component.scss b/web/app/configs/stickerpicker/stickerpicker.component.scss index 36ee5f5..a226755 100644 --- a/web/app/configs/stickerpicker/stickerpicker.component.scss +++ b/web/app/configs/stickerpicker/stickerpicker.component.scss @@ -1,37 +1,42 @@ -.pack { - display: flex; - margin: 20px; - padding: 5px; - background-color: #f6fbff; +@import "../../../style/themes/themes"; - .caption { - flex: 1; - margin-left: 20px; - padding-top: 20px; +@include themifyComponent() { + .pack { + display: flex; + margin: 20px; + padding: 5px; + background-color: themed(stickerpackBgColor); + color: themed(stickerpackFgColor); - .name { - font-size: 1.1em; - font-weight: bold; - display: block; - } + .caption { + flex: 1; + margin-left: 20px; + padding-top: 20px; - .description { - color: #7d7d7d; - display: block; - } + .name { + font-size: 1.1em; + font-weight: bold; + display: block; + } - .toggle-switch { - margin-top: 20px; - margin-right: 10px; - float: right; - } + .description { + color: themed(stickerpackDescriptionColor); + display: block; + } - .author, .license { - font-size: 0.8em; - color: #7d7d7d; + .toggle-switch { + margin-top: 20px; + margin-right: 10px; + float: right; + } - a { - color: #7d7d7d; + .author, .license { + font-size: 0.8em; + color: themed(stickerpackAuthorLicenseColor); + + a { + color: themed(stickerpackAuthorLicenseColor); + } } } } diff --git a/web/app/elements/spinner/spinner.component.scss b/web/app/elements/spinner/spinner.component.scss index 1a5c430..80c9e2a 100644 --- a/web/app/elements/spinner/spinner.component.scss +++ b/web/app/elements/spinner/spinner.component.scss @@ -1,2 +1,4 @@ // component styles are encapsulated and only applied to their components -@import "../../../../node_modules/spinkit/scss/spinners/11-folding-cube"; \ No newline at end of file +@import "../../../../node_modules/spinkit/scss/spinners/11-folding-cube"; + +// see app.scss for the spinner color stuff \ No newline at end of file diff --git a/web/app/home/home.component.scss b/web/app/home/home.component.scss index f72f470..631d632 100644 --- a/web/app/home/home.component.scss +++ b/web/app/home/home.component.scss @@ -1,176 +1,179 @@ // component styles are encapsulated and only applied to their components +@import "../../style/themes/themes"; -.spacer { - width: 85%; - display: block; - border-color: rgba(206, 222, 235, 0.85); - margin-top: 60px; - margin-bottom: 60px; -} - -.shadowed { - box-shadow: 0 20px 40px 20px rgba(206, 222, 235, 0.34); -} - -.info-box { - display: inline-block; - margin: auto; - background-color: #fff; - padding: 50px; - border: 1px solid rgba(143, 45, 86, 0.2); - - h3 { - margin-bottom: 20px; +@include themifyComponent() { + .spacer { + width: 85%; + display: block; + border-color: themed(promoSpacerColor); + margin-top: 60px; + margin-bottom: 60px; } -} -pre { - border: 1px solid rgba(143, 45, 86, 0.7); - padding: 5px; - width: 590px; -} + .shadowed { + box-shadow: 0 20px 40px 20px thtmed(promoShadowColor); + } -.footer { - color: white; - text-align: center; - padding: 50px; - background: linear-gradient(to right, #c95036, #8F2D56); + .info-box { + display: inline-block; + margin: auto; + background-color: themed(promoInfoBgColor); + padding: 50px; + border: 1px solid themed(promoInfoBorderColor); - a { - color: white; + h3 { + margin-bottom: 20px; + } + } + + pre { + border: 1px solid themed(promoPreBorderColor); + padding: 5px; + width: 590px; + } + + .footer { + color: themed(promoFooterFgColor); + text-align: center; + padding: 50px; + background: linear-gradient(to right, themed(promoGradientStartColor), themed(promoGradientEndColor)); + + a { + color: themed(promoFooterFgColor); + font-size: 0.9em; + margin-left: 20px; + } + } + + .links { + position: absolute; + right: 20px; + top: 20px; + } + + .links a { font-size: 0.9em; + color: themed(promoLinksColor); margin-left: 20px; } -} -.links { - position: absolute; - right: 20px; - top: 20px; -} - -.links a { - font-size: 0.9em; - color: #dadada; - margin-left: 20px; -} - -.hero { - color: white; - text-align: center; - background: linear-gradient(to right, #c95036, #8F2D56); -} - -.wrapper { - min-width: 700px; - max-width: 1500px; - padding: 20px; - margin: 70px auto auto; - display: flex; - flex-wrap: wrap; -} - -.made-for-matrix { - height: 45px; -} - -.made-for-matrix-anchor { - margin-left: 20px; -} - -.promo { .hero { - padding-top: 50px; - padding-bottom: 100px; - clip-path: polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 3vw)); + color: themed(promoHeroFgColor); + text-align: center; + background: linear-gradient(to right, themed(promoGradientStartColor), themed(promoGradientEndColor)); } - .logo { - padding: 20px 20px 40px; + .wrapper { + min-width: 700px; + max-width: 1500px; + padding: 20px; + margin: 70px auto auto; + display: flex; + flex-wrap: wrap; } - .banner { - font-size: 1.2em; - margin-top: 30px; - margin-bottom: 20px; + .made-for-matrix { + height: 45px; } - .try-dimension { - width: 695px; + .made-for-matrix-anchor { + margin-left: 20px; } - .screenshot { - display: inline-block; - margin: 0 70px; - - img { - width: 595px; + .promo { + .hero { + padding-top: 50px; + padding-bottom: 100px; + clip-path: polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 3vw)); } - } - .integrations { - display: block; - width: 100%; + .logo { + padding: 20px 20px 40px; + } - .title { + .banner { + font-size: 1.2em; + margin-top: 30px; + margin-bottom: 20px; + } + + .try-dimension { + width: 695px; + } + + .screenshot { + display: inline-block; + margin: 0 70px; + + img { + width: 595px; + } + } + + .integrations { display: block; - text-align: center; - margin-bottom: 40px; - } + width: 100%; - .intro { - font-size: 1.3em; - color: #868686; - text-align: center; - } + .title { + display: block; + text-align: center; + margin-bottom: 40px; + } - .integration-list { - display: flex; - flex-wrap: wrap; - justify-content: center; + .intro { + font-size: 1.3em; + color: themed(promoIntroColor); + text-align: center; + } - .integration { - width: 350px; - background-color: #ffffff; - padding: 20px; - margin: 15px; - border: 1px solid rgba(143, 45, 86, 0.2); + .integration-list { + display: flex; + flex-wrap: wrap; + justify-content: center; - img { - margin-right: 25px; - width: 48px; - vertical-align: middle; - } + .integration { + width: 350px; + background-color: themed(promoIntegrationBgColor); + padding: 20px; + margin: 15px; + border: 1px solid themed(promoIntegrationBorderColor); - span { - font-size: 1.2em; + img { + margin-right: 25px; + width: 48px; + vertical-align: middle; + } + + span { + font-size: 1.2em; + } } } } } -} -.non-promo { - .hero { - padding-top: 20px; - } + .non-promo { + .hero { + padding-top: 20px; + } - .logo { - padding: 20px 20px 40px; - height: 150px; - } + .logo { + padding: 20px 20px 40px; + height: 150px; + } - .welcome { - min-width: 700px; - max-width: 800px; - } + .welcome { + min-width: 700px; + max-width: 800px; + } - h4 { - margin-top: 45px; - margin-bottom: 20px; - } + h4 { + margin-top: 45px; + margin-bottom: 20px; + } - .footer { - margin-top: 100px; + .footer { + margin-top: 100px; + } } } \ No newline at end of file diff --git a/web/app/integration-bag/integration-bag.component.scss b/web/app/integration-bag/integration-bag.component.scss index 063ff49..50a70d5 100644 --- a/web/app/integration-bag/integration-bag.component.scss +++ b/web/app/integration-bag/integration-bag.component.scss @@ -1,55 +1,58 @@ // component styles are encapsulated and only applied to their components -.integration-bag { - display: flex; - flex-direction: row; - align-items: stretch; - flex-wrap: wrap; - justify-content: flex-start; -} +@import "../../style/themes/themes"; -.integration { - border: 1px solid #eee; - border-radius: 5px; - margin: 7px; - padding: 6px; - width: calc(325px - 14px); - position: relative; - cursor: pointer; -} +@include themifyComponent() { + .integration-bag { + display: flex; + flex-direction: row; + align-items: stretch; + flex-wrap: wrap; + justify-content: flex-start; + } -.integration .integration-arrow { - display: none; - position: absolute; - top: calc(50% - 12px); // icon happens to be 24px tall - right: 1px; - color: #bbb; -} + .integration { + border: 1px solid themed(integrationBorderColor); + margin: 7px; + padding: 6px; + width: calc(325px - 14px); + position: relative; + cursor: pointer; + } -.integration:hover { - box-shadow: 0 0 9px #888; -} + .integration .integration-arrow { + display: none; + position: absolute; + top: calc(50% - 12px); // icon happens to be 24px tall + right: 1px; + color: #bbb; + } -.integration:hover .integration-arrow { - display: block; -} + .integration:hover { + box-shadow: 0 0 5px 5px themed(integrationShadowColor); + } -.integration .integration-avatar { - width: 50px; - height: 50px; - float: left; -} + .integration:hover .integration-arrow { + display: block; + } -.integration .integration-name { - display: inline-block; - font-size: 1.1em; - font-weight: 100; - padding-left: 10px; -} + .integration .integration-avatar { + width: 50px; + height: 50px; + float: left; + } -.integration .integration-description { - display: block; - font-size: 0.8em; - margin-left: 60px; - margin-right: 5px; - color: #999; + .integration .integration-name { + display: inline-block; + font-size: 1.1em; + font-weight: 100; + padding-left: 10px; + } + + .integration .integration-description { + display: block; + font-size: 0.8em; + margin-left: 60px; + margin-right: 5px; + color: themed(integrationDescriptionColor); + } } \ No newline at end of file diff --git a/web/app/page-header/page-header.component.html b/web/app/page-header/page-header.component.html index a88a348..998218e 100644 --- a/web/app/page-header/page-header.component.html +++ b/web/app/page-header/page-header.component.html @@ -1,9 +1,11 @@ -
-
-

{{ pageName }}

- -
-
- +
+
+
+

{{ pageName }}

+ +
+
+ +
\ No newline at end of file diff --git a/web/app/page-header/page-header.component.scss b/web/app/page-header/page-header.component.scss index d5fdf50..8c45ee7 100644 --- a/web/app/page-header/page-header.component.scss +++ b/web/app/page-header/page-header.component.scss @@ -1,31 +1,40 @@ // component styles are encapsulated and only applied to their components -.header { - width: 100%; - margin-top: 30px; - border-top: 1px solid #e7eaec; - border-bottom: 1px solid #e7eaec; - background-color: #fff; -} +@import "../../style/themes/themes"; -.header .title { - margin: 0; - width: 83.333333%; // col-sm-10 - padding: 15px; - display: inline-block; -} +@include themifyComponent() { + .wrapper { + width: 100%; + padding-top: 10px; + background: linear-gradient(to right, themed(headerGradientStartColor), themed(headerGradientEndColor)); + } -.header .title .pageName { - font-weight: 100; - padding: 0; - margin: 0; -} + .header { + width: 100%; + border-top: 1px solid themed(headerBorderColor); + border-bottom: 1px solid themed(headerBorderColor); + background-color: themed(headerBgColor); + } -.header .quickAction { - padding: 0; - margin: 0; - float: right; - text-align: right; - display: inline-block; - width: 15.666667%; // col-sm-2 - position: relative; + .header .title { + margin: 0; + width: 83.333333%; // col-sm-10 + padding: 15px; + display: inline-block; + } + + .header .title .pageName { + font-weight: 100; + padding: 0; + margin: 0; + } + + .header .quickAction { + padding: 0; + margin: 0; + float: right; + text-align: right; + display: inline-block; + width: 15.666667%; // col-sm-2 + position: relative; + } } \ No newline at end of file diff --git a/web/app/riot/riot-home/home.component.scss b/web/app/riot/riot-home/home.component.scss index a74c21d..9973ff8 100644 --- a/web/app/riot/riot-home/home.component.scss +++ b/web/app/riot/riot-home/home.component.scss @@ -1,8 +1,12 @@ // component styles are encapsulated and only applied to their components -.stickerpacks { - position: relative; - top: -15px; - padding-left: 10px; - font-size: 0.8em; - color: #525252; +@import "../../../style/themes/themes"; + +@include themifyComponent() { + .stickerpacks { + position: relative; + top: -15px; + padding-left: 10px; + font-size: 0.8em; + color: themed(stickerpacksNotifFgColor); + } } \ No newline at end of file diff --git a/web/app/widget-wrappers/generic/generic.component.scss b/web/app/widget-wrappers/generic/generic.component.scss index c89693f..f91a59a 100644 --- a/web/app/widget-wrappers/generic/generic.component.scss +++ b/web/app/widget-wrappers/generic/generic.component.scss @@ -1,47 +1,51 @@ // component styles are encapsulated and only applied to their components -.control-page { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: 0; - padding: 0; - background-color: #eee; - color: #222; -} +@import "../../../style/themes/themes"; -.loading-badge { - text-align: center; - font-size: 20px; - position: relative; - top: calc(50% - 10px); -} +@include themifyComponent() { + .control-page { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 0; + padding: 0; + background-color: themed(genericControlBgColor); + color: themed(genericControlFgColor); + } -.embed-failed { - text-align: center; - position: relative; - height: 300px; - top: calc(50% - 150px); -} + .loading-badge { + text-align: center; + font-size: 20px; + position: relative; + top: calc(50% - 10px); + } -.embed-failed .ban { - font-size: 145px; - color: #bd362f; -} + .embed-failed { + text-align: center; + position: relative; + height: 300px; + top: calc(50% - 150px); + } -iframe { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; -} + .embed-failed .ban { + font-size: 145px; + color: themed(widgetBannedSymbolColor); + } -.toggleFullscreen { - position: fixed; - bottom: 10px; - right: 10px; + iframe { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + } + + .toggleFullscreen { + position: fixed; + bottom: 10px; + right: 10px; + } } \ No newline at end of file diff --git a/web/app/widget-wrappers/jitsi/jitsi.component.scss b/web/app/widget-wrappers/jitsi/jitsi.component.scss index 2fc96b3..553cb6c 100644 --- a/web/app/widget-wrappers/jitsi/jitsi.component.scss +++ b/web/app/widget-wrappers/jitsi/jitsi.component.scss @@ -1,29 +1,33 @@ // component styles are encapsulated and only applied to their components -#jitsiContainer { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - display: none; -} +@import "../../../style/themes/themes"; -.join-conference-wrapper { - display: table; - position: absolute; - height: 100%; - width: 100%; - background-color: #fff; -} +@include themifyComponent() { + #jitsiContainer { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: none; + } -.join-conference-boat { - display: table-cell; - vertical-align: middle; -} + .join-conference-wrapper { + display: table; + position: absolute; + height: 100%; + width: 100%; + background-color: themed(jitsiWelcomeBgColor); + } -.join-conference-prompt { - margin-left: auto; - margin-right: auto; - width: 90%; - text-align: center; + .join-conference-boat { + display: table-cell; + vertical-align: middle; + } + + .join-conference-prompt { + margin-left: auto; + margin-right: auto; + width: 90%; + text-align: center; + } } \ No newline at end of file diff --git a/web/app/widget-wrappers/sticker-picker/sticker-picker.component.scss b/web/app/widget-wrappers/sticker-picker/sticker-picker.component.scss index f0c5072..065e11e 100644 --- a/web/app/widget-wrappers/sticker-picker/sticker-picker.component.scss +++ b/web/app/widget-wrappers/sticker-picker/sticker-picker.component.scss @@ -1,80 +1,84 @@ // component styles are encapsulated and only applied to their components -.control-page { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: 0; - padding: 0; - background-color: #eee; - color: #222; -} +@import "../../../style/themes/themes"; -.loading-badge { - text-align: center; - font-size: 20px; - position: relative; - top: calc(50% - 10px); -} +@include themifyComponent() { + .control-page { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 0; + padding: 0; + background-color: themed(stickerPickerControlBgColor); + color: themed(stickerPickerControlFgColor); + } -.auth-error { - text-align: center; - position: relative; - height: 300px; - top: calc(50% - 150px); - color: #bd362f; -} + .loading-badge { + text-align: center; + font-size: 20px; + position: relative; + top: calc(50% - 10px); + } -.sticker-picker { - margin: 15px 15px 30px; + .auth-error { + text-align: center; + position: relative; + height: 300px; + top: calc(50% - 150px); + color: themed(stickerPickerErrorColor); + } - .sticker-pack { - .header { - margin-top: 15px; - margin-left: 3px; + .sticker-picker { + margin: 15px 15px 30px; - .title { - font-weight: 700; - color: #222222; - } + .sticker-pack { + .header { + margin-top: 15px; + margin-left: 3px; - .license { - font-size: 0.6em; - font-weight: 300; - color: #b5b5b5; - margin-top: 3px; - float: right; + .title { + font-weight: 700; + color: themed(stickerPickerTitleColor); + } - a { - color: #b5b5b5; + .license { + font-size: 0.6em; + font-weight: 300; + color: themed(stickerPickerLicenseColor); + margin-top: 3px; + float: right; + + a { + color: themed(stickerPickerLicenseColor); + } + } + + .author { + font-size: 0.6em; + font-weight: 300; + color: themed(stickerPickerAuthorColor); + display: block; + + a { + color: themed(stickerPickerAuthorColor); + } } } - .author { - font-size: 0.6em; - font-weight: 300; - color: #222222; - display: block; + .stickers { + display: flex; + flex-wrap: wrap; - a { - color: #222222; + .sticker { + padding: 5px; + margin: 2px; + cursor: pointer; + border-radius: 3px; + background-color: themed(stickerPickerStickerBgColor); + box-shadow: 0 2px 6px themed(stickerPickerShadowColor); } } } - - .stickers { - display: flex; - flex-wrap: wrap; - - .sticker { - padding: 5px; - margin: 2px; - cursor: pointer; - border-radius: 3px; - background-color: #fff; - box-shadow: 0 2px 6px hsla(0, 0%, 0%, 0.2); - } - } } } \ No newline at end of file diff --git a/web/public/img/avatars/circleci.png b/web/public/img/avatars/circleci.png deleted file mode 100644 index 53d3609..0000000 Binary files a/web/public/img/avatars/circleci.png and /dev/null differ diff --git a/web/public/img/avatars/customwidget.png b/web/public/img/avatars/customwidget.png index 66c79d6..edadd57 100644 Binary files a/web/public/img/avatars/customwidget.png and b/web/public/img/avatars/customwidget.png differ diff --git a/web/public/img/avatars/echo.png b/web/public/img/avatars/echo.png index 0718a5f..7b7fbcf 100644 Binary files a/web/public/img/avatars/echo.png and b/web/public/img/avatars/echo.png differ diff --git a/web/public/img/avatars/etherpad.png b/web/public/img/avatars/etherpad.png index 54bc208..996bfd1 100644 Binary files a/web/public/img/avatars/etherpad.png and b/web/public/img/avatars/etherpad.png differ diff --git a/web/public/img/avatars/giphy.png b/web/public/img/avatars/giphy.png index 00c57da..bf27824 100644 Binary files a/web/public/img/avatars/giphy.png and b/web/public/img/avatars/giphy.png differ diff --git a/web/public/img/avatars/github.png b/web/public/img/avatars/github.png index bd8e88a..93f5cb0 100644 Binary files a/web/public/img/avatars/github.png and b/web/public/img/avatars/github.png differ diff --git a/web/public/img/avatars/gitter.png b/web/public/img/avatars/gitter.png index 2f830c5..52d83b7 100644 Binary files a/web/public/img/avatars/gitter.png and b/web/public/img/avatars/gitter.png differ diff --git a/web/public/img/avatars/google.png b/web/public/img/avatars/google.png index 189c83d..5a23e0e 100644 Binary files a/web/public/img/avatars/google.png and b/web/public/img/avatars/google.png differ diff --git a/web/public/img/avatars/googlecalendar.png b/web/public/img/avatars/googlecalendar.png index c8dcd3a..da64c4c 100644 Binary files a/web/public/img/avatars/googlecalendar.png and b/web/public/img/avatars/googlecalendar.png differ diff --git a/web/public/img/avatars/googledocs.png b/web/public/img/avatars/googledocs.png index 98bac82..e45b020 100644 Binary files a/web/public/img/avatars/googledocs.png and b/web/public/img/avatars/googledocs.png differ diff --git a/web/public/img/avatars/grafana.png b/web/public/img/avatars/grafana.png index fc69a58..48c79b3 100644 Binary files a/web/public/img/avatars/grafana.png and b/web/public/img/avatars/grafana.png differ diff --git a/web/public/img/avatars/guggy.png b/web/public/img/avatars/guggy.png index 33af33c..cc993c4 100644 Binary files a/web/public/img/avatars/guggy.png and b/web/public/img/avatars/guggy.png differ diff --git a/web/public/img/avatars/imgur.png b/web/public/img/avatars/imgur.png index bb5fe7d..a236f43 100644 Binary files a/web/public/img/avatars/imgur.png and b/web/public/img/avatars/imgur.png differ diff --git a/web/public/img/avatars/irc.png b/web/public/img/avatars/irc.png index 9587c0f..a97aa81 100644 Binary files a/web/public/img/avatars/irc.png and b/web/public/img/avatars/irc.png differ diff --git a/web/public/img/avatars/jira.png b/web/public/img/avatars/jira.png deleted file mode 100644 index ba4a503..0000000 Binary files a/web/public/img/avatars/jira.png and /dev/null differ diff --git a/web/public/img/avatars/jitsi.png b/web/public/img/avatars/jitsi.png index b4fc75f..575c4c9 100644 Binary files a/web/public/img/avatars/jitsi.png and b/web/public/img/avatars/jitsi.png differ diff --git a/web/public/img/avatars/rssbot.png b/web/public/img/avatars/rssbot.png index a1b8ca9..3f883ed 100644 Binary files a/web/public/img/avatars/rssbot.png and b/web/public/img/avatars/rssbot.png differ diff --git a/web/public/img/avatars/spotify.png b/web/public/img/avatars/spotify.png index 9bd55da..7397787 100644 Binary files a/web/public/img/avatars/spotify.png and b/web/public/img/avatars/spotify.png differ diff --git a/web/public/img/avatars/telegram.png b/web/public/img/avatars/telegram.png index 6553bdf..37ca4a5 100644 Binary files a/web/public/img/avatars/telegram.png and b/web/public/img/avatars/telegram.png differ diff --git a/web/public/img/avatars/tradingview.png b/web/public/img/avatars/tradingview.png index 517de82..4fa6bba 100644 Binary files a/web/public/img/avatars/tradingview.png and b/web/public/img/avatars/tradingview.png differ diff --git a/web/public/img/avatars/travisci.png b/web/public/img/avatars/travisci.png index 114af6d..f3baa50 100644 Binary files a/web/public/img/avatars/travisci.png and b/web/public/img/avatars/travisci.png differ diff --git a/web/public/img/avatars/twitch.png b/web/public/img/avatars/twitch.png index 668e49a..a54f6b5 100644 Binary files a/web/public/img/avatars/twitch.png and b/web/public/img/avatars/twitch.png differ diff --git a/web/public/img/avatars/webhooks.png b/web/public/img/avatars/webhooks.png index 66b28c5..cfb02a7 100644 Binary files a/web/public/img/avatars/webhooks.png and b/web/public/img/avatars/webhooks.png differ diff --git a/web/public/img/avatars/wikipedia.png b/web/public/img/avatars/wikipedia.png index 7868eb9..6316948 100644 Binary files a/web/public/img/avatars/wikipedia.png and b/web/public/img/avatars/wikipedia.png differ diff --git a/web/public/img/avatars/youtube.png b/web/public/img/avatars/youtube.png index f4343a0..512d0b6 100644 Binary files a/web/public/img/avatars/youtube.png and b/web/public/img/avatars/youtube.png differ diff --git a/web/public/index.html b/web/public/index.html index dc9fa64..2e7fb44 100644 --- a/web/public/index.html +++ b/web/public/index.html @@ -2,7 +2,7 @@ - + Dimension @@ -16,11 +16,94 @@ - + + + - -Loading... + + + +
+ + + +
+
diff --git a/web/style/_riot.scss b/web/style/_riot.scss index 704ba1a..759b023 100644 --- a/web/style/_riot.scss +++ b/web/style/_riot.scss @@ -2,48 +2,62 @@ // In it's current position (as a component), the component-level stylesheet cannot access the // elements, so we specify it in a more generic location. -.dimension-breadcrumb { - .fluid-bread { - padding: 0; +@import "themes/themes"; + +.main-app { + @include themify() { + .dimension-breadcrumb { + .fluid-bread { + padding: 0; + background: transparent; + } + + .fluid-bread .container { + padding: 0; + margin: 0; + background: transparent; + } + + .fluid-bread .container .breadcrumb { + padding: 0; + margin: 0; + background: transparent; + } + + .fluid-bread .breadcrumb-item a:hover { + text-decoration: none; + } + + .fluid-bread .breadcrumb-item.active { + color: themed(activeBreadcrumbColor); + } + + font-size: 13px; + display: block; + padding-top: 4px; + background: transparent; + } + + .header .quickAction .closeButton .scalarClose { + position: absolute; + top: 19px; + right: 15px; + } + + .header .quickAction .adminButton { + position: absolute; + top: 19px; + right: 55px; + } + + .header .quickAction .headerButton { + font-size: 35px; + cursor: pointer; + color: themed(quickActionColor); + } + + .header .quickAction .headerButton:hover { + color: themed(quickActionHoverColor); + } } - - .fluid-bread .container { - padding: 0; - margin: 0; - } - - .fluid-bread .container .breadcrumb { - padding: 0; - margin: 0; - } - - .fluid-bread .breadcrumb-item a:hover { - text-decoration: none; - } - - font-size: 13px; - display: block; - padding-top: 4px; -} - -.header .quickAction .closeButton .scalarClose { - position: absolute; - top: 19px; - right: 15px; -} - -.header .quickAction .adminButton { - position: absolute; - top: 19px; - right: 55px; -} - -.header .quickAction .headerButton { - font-size: 35px; - cursor: pointer; - color: #ccc; -} - -.header .quickAction .headerButton:hover { - color: #888; } \ No newline at end of file diff --git a/web/style/app.scss b/web/style/app.scss index 86c0284..418c89d 100644 --- a/web/style/app.scss +++ b/web/style/app.scss @@ -1,19 +1,28 @@ // styles in src/style directory are applied to the whole page @import url('https://fonts.googleapis.com/css?family=Open+Sans:100|Roboto:300'); @import '../../node_modules/angular2-toaster/toaster'; +@import "themes/themes"; @import "components/ibox"; @import "components/dialog"; +@import "components/bootstrap_override"; @import "riot"; body { - background: #b0bbbf1f; - //background: #6268680d; margin: 0; padding: 0; - color: #333; font-family: 'Roboto', 'Open Sans', Arial, sans-serif; } +@include themifyRoot(){ + color: themed(defaultFgColor); + + // HACK: We specify the spinner color here because we can't use the mixin + // in the spinner's css due to angular scoping + .sk-cube:before { + background-color: themed(spinnerColor) !important; + } +} + // HACK: Work around dialog not showing up // ref: https://github.com/shlomiassaf/angular2-modal/issues/280 .fade.in { diff --git a/web/style/components/bootstrap_override.scss b/web/style/components/bootstrap_override.scss new file mode 100644 index 0000000..b77e082 --- /dev/null +++ b/web/style/components/bootstrap_override.scss @@ -0,0 +1,30 @@ +@import "../themes/themes"; + +.main-app { + @include themify(){ + a { + color: themed(anchorColor); + } + + table, td, th { + border-color: themed(tableBorderColor); + } + + code { + background-color: themed(codeBgColor); + } + + .text-muted { + color: themed(altMutedColor) !important; + } + + .form-control { + color: themed(formControlFgColor); + background-color: themed(formControlBgColor); + } + + .form-control::placeholder { + color: themed(formControlPlaceholderColor); + } + } +} \ No newline at end of file diff --git a/web/style/components/dialog.scss b/web/style/components/dialog.scss index 3e1ec50..6d4bad5 100644 --- a/web/style/components/dialog.scss +++ b/web/style/components/dialog.scss @@ -1,21 +1,27 @@ -.dialog { - .dialog-header { - border-bottom: 1px solid #ddd; - padding: 20px; +@import "../themes/themes"; - h4 { - margin: 0; +@include themifyRoot() { + .dialog { + background-color: themed(dialogBgColor); + color: themed(dialogFgColor); + + .dialog-header { + padding: 20px; + border-bottom: 1px solid themed(dialogBorderColor); + + h4 { + margin: 0; + } + } + + .dialog-content { + padding: 20px; + } + + .dialog-footer { + padding: 20px; + border-top: 1px solid themed(dialogFooterBorderColor); + background-color: themed(dialogFooterBackgroundColor); } } - - .dialog-content { - padding: 20px; - - } - - .dialog-footer { - padding: 20px; - border-top: 1px solid #bbb; - background-color: #ddd; - } -} \ No newline at end of file +} diff --git a/web/style/components/ibox.scss b/web/style/components/ibox.scss index 951fa2e..25940be 100644 --- a/web/style/components/ibox.scss +++ b/web/style/components/ibox.scss @@ -1,34 +1,40 @@ -.ibox { - background-color: #fff; - padding: 0; - margin-bottom: 30px; - box-shadow: 0 2px 4px hsla(0, 0%, 0%, 0.2); -} +@import "../themes/themes"; -.ibox .ibox-title { - padding: 5px; - border-bottom: 1px solid #e7eaec; - border-top: 2px solid #e7eaec; -} +.main-app { + @include themify() { + .ibox { + background-color: themed('containerBgColor'); + padding: 0; + margin-bottom: 30px; + box-shadow: 0 2px 4px themed('containerShadowColor'); + } -.ibox .ibox-title h5 { - display: inline; - font-size: 1.1em; - padding: 5px; - margin: 0; -} + .ibox .ibox-title { + padding: 5px; + border-bottom: 1px solid themed('containerBorderColor'); + border-top: 2px solid themed('containerBorderColor'); + } -.ibox .ibox-content { - padding: 15px; -} + .ibox .ibox-title h5 { + display: inline; + font-size: 1.1em; + padding: 5px; + margin: 0; + } -.ibox .ibox-title .ibox-icon { - float: right; - margin-top: 4px; - margin-right: 5px; - cursor: pointer; -} + .ibox .ibox-content { + padding: 15px; + } -.ibox .ibox-title.ibox-title-collapsible { - cursor: pointer; + .ibox .ibox-title .ibox-icon { + float: right; + margin-top: 4px; + margin-right: 5px; + cursor: pointer; + } + + .ibox .ibox-title.ibox-title-collapsible { + cursor: pointer; + } + } } \ No newline at end of file diff --git a/web/style/themes/_themes.scss b/web/style/themes/_themes.scss new file mode 100644 index 0000000..f7ac734 --- /dev/null +++ b/web/style/themes/_themes.scss @@ -0,0 +1,62 @@ +@import "light"; +@import "dark"; + +$themes: ( + dark: $theme_dark, + light: $theme_light, +); + +@mixin themify($themes: $themes) { + @each $theme, $map in $themes { + + .theme-#{$theme} & { + $theme-map: () !global; + @each $key, $submap in $map { + $value: map-get(map-get($themes, $theme), '#{$key}'); + $theme-map: map-merge($theme-map, ($key: $value)) !global; + } + + @content; + $theme-map: null !global; + } + + } +} + +@mixin themifyRoot($themes: $themes) { + @each $theme, $map in $themes { + + .theme-#{$theme} { + $theme-map: () !global; + @each $key, $submap in $map { + $value: map-get(map-get($themes, $theme), '#{$key}'); + $theme-map: map-merge($theme-map, ($key: $value)) !global; + } + + @content; + $theme-map: null !global; + } + + } +} + +@mixin themifyComponent($themes: $themes) { + @each $theme, $map in $themes { + + :host-context(.theme-#{$theme}) { + $theme-map: () !global; + @each $key, $submap in $map { + $value: map-get(map-get($themes, $theme), '#{$key}'); + $theme-map: map-merge($theme-map, ($key: $value)) !global; + } + + @content; + $theme-map: null !global; + } + + } +} + +@function themed($key) { + @return map-get($theme-map, $key); +} \ No newline at end of file diff --git a/web/style/themes/dark.scss b/web/style/themes/dark.scss new file mode 100644 index 0000000..698ee43 --- /dev/null +++ b/web/style/themes/dark.scss @@ -0,0 +1,85 @@ +$theme_dark: ( + bodyBgColor: rgba(47, 50, 51, 0.85), + defaultFgColor: #eaeaea, + headerColor: #f9f9f9, + mutedColor: #d6d6d6, + altMutedColor: #c4cdd4, + anchorColor: #82c5ff, + tableBorderColor: #1e1e1e, + codeBgColor: #323233, + spinnerColor: #d4d4d4, + formControlBgColor: #494b4e, + formControlFgColor: #fff, + formControlPlaceholderColor: #969696, + activeBreadcrumbColor: #afbfca, + + stickerpacksNotifBgColor: #525252, + stickerpackBgColor: #676a6d, + stickerpackFgColor: #eee, + stickerpackDescriptionColor: #dedddd, + stickerpackAuthorLicenseColor: #dedddd, + stickerPreviewBgColor: #676a6d, + stickerPreviewFgColor: #dedddd, + + headerBgColor: rgb(47, 47, 47), + headerBorderColor: #585858, + headerGradientStartColor: rgba(201, 80, 54, 0.7), + headerGradientEndColor: rgba(143, 45, 86, 0.7), + + containerBgColor: rgba(47, 47, 47, 0.66), + containerShadowColor: hsla(0, 0%, 0%, 0.2), + containerBorderColor: rgb(79, 79, 79), + + quickActionColor: #7b7b7b, + quickActionHoverColor: #fff, + + dialogBgColor: #464646, + dialogFgColor: #ececec, + dialogBorderColor: #212121, + dialogFooterBorderColor: #212121, + dialogFooterBackgroundColor: #2d2d2d, + + stickerPickerControlBgColor: #eee, + stickerPickerControlFgColor: #222, + stickerPickerErrorColor: #bd362f, + stickerPickerTitleColor: #222, + stickerPickerLicenseColor: #b5b5b5, + stickerPickerAuthorColor: #222, + stickerPickerStickerBgColor: #fff, + stickerPickerShadowColor: hsla(0, 0%, 0%, 0.2), + + jitsiWelcomeBgColor: #fff, + + genericControlBgColor: #eee, + genericControlFgColor: #222, + widgetBannedSymbolColor: #bd362f, + + integrationBorderColor: rgba(148, 148, 148, 0.19), + integrationShadowColor: rgba(89, 98, 105, 0.28), + integrationDescriptionColor: #bcc0c1, + + promoSpacerColor: rgba(206, 222, 235, 0.85), + promoShadowColor: rgba(206, 222, 235, 0.34), + promoInfoBgColor: #fff, + promoInfoBorderColor: rgba(143, 45, 86, 0.2), + promoPreBorderColor: rgba(143, 45, 86, 0.7), + promoFooterFgColor: #fff, + promoGradientStartColor: #c95036, + promoGradientEndColor: #8F2D56, + promoIntroColor: #868686, + promoIntegrationBgColor: #fff, + promoIntegrationBorderColor: rgba(143, 45, 86, 0.2), + promoLinksColor: #dadada, + promoHeroFgColor: #fff, + + adminBgColor: #233046, + adminFgColor: #fff, + adminHoverColor: #374752, + adminAccentColor: #DE6657, + adminVersionColor: #7d7d7d, + + appserviceConfigPreFgColor: #eff8ff, + appserviceConfigPreBorderColor: #717171, + appserviceConfigPreBgColor: #333, +); + diff --git a/web/style/themes/light.scss b/web/style/themes/light.scss new file mode 100644 index 0000000..e4d7a8c --- /dev/null +++ b/web/style/themes/light.scss @@ -0,0 +1,84 @@ +$theme_light: ( + bodyBgColor: rgba(176, 187, 191, 0.12), + defaultFgColor: #333, + headerColor: #333, + mutedColor: #999, + altMutedColor: #636c72, + anchorColor: #0275d8, + tableBorderColor: #eceeef, + codeBgColor: #f7f7f9, + spinnerColor: #333, + formControlBgColor: #fff, + formControlFgColor: #464a4c, + formControlPlaceholderColor: #7d8487, + activeBreadcrumbColor: #636c72, + + stickerpacksNotifFgColor: #525252, + stickerpackBgColor: #f6fbff, + stickerpackFgColor: #222, + stickerpackDescriptionColor: #7d7d7d, + stickerpackAuthorLicenseColor: #7d7d7d, + stickerPreviewBgColor: #f6fbff, + stickerPreviewFgColor: #7d7d7d, + + headerBgColor: #fff, + headerBorderColor: #e7eaec, + headerGradientStartColor: rgba(201, 80, 54, 0.7), + headerGradientEndColor: rgba(143, 45, 86, 0.7), + + containerBgColor: #fff, + containerShadowColor: hsla(0, 0%, 0%, 0.2), + containerBorderColor: #e7eaec, + + quickActionColor: #313131, + quickActionHoverColor: #0b0b0b, + + dialogBgColor: #fff, + dialogFgColor: #222, + dialogBorderColor: #ddd, + dialogFooterBorderColor: #bbb, + dialogFooterBackgroundColor: #ddd, + + stickerPickerControlBgColor: #eee, + stickerPickerControlFgColor: #222, + stickerPickerErrorColor: #bd362f, + stickerPickerTitleColor: #222, + stickerPickerLicenseColor: #b5b5b5, + stickerPickerAuthorColor: #222, + stickerPickerStickerBgColor: #fff, + stickerPickerShadowColor: hsla(0, 0%, 0%, 0.2), + + jitsiWelcomeBgColor: #fff, + + genericControlBgColor: #eee, + genericControlFgColor: #222, + widgetBannedSymbolColor: #bd362f, + + integrationBorderColor: rgba(143, 45, 86, 0.2), + integrationShadowColor: rgba(206, 222, 235, 0.34), + integrationDescriptionColor: #999, + + promoSpacerColor: rgba(206, 222, 235, 0.85), + promoShadowColor: rgba(206, 222, 235, 0.34), + promoInfoBgColor: #fff, + promoInfoBorderColor: rgba(143, 45, 86, 0.2), + promoPreBorderColor: rgba(143, 45, 86, 0.7), + promoFooterFgColor: #fff, + promoGradientStartColor: #c95036, + promoGradientEndColor: #8F2D56, + promoIntroColor: #868686, + promoIntegrationBgColor: #fff, + promoIntegrationBorderColor: rgba(143, 45, 86, 0.2), + promoLinksColor: #dadada, + promoHeroFgColor: #fff, + + adminBgColor: #233046, + adminFgColor: #fff, + adminHoverColor: #374752, + adminAccentColor: #DE6657, + adminVersionColor: #7d7d7d, + + appserviceConfigPreFgColor: rgb(41, 43, 44), + appserviceConfigPreBorderColor: #ccc, + appserviceConfigPreBgColor: #eee, +); \ No newline at end of file