diff --git a/app/javascript/flavours/glitch/features/getting_started/index.js b/app/javascript/flavours/glitch/features/getting_started/index.js index b283274e3..100ffd16a 100644 --- a/app/javascript/flavours/glitch/features/getting_started/index.js +++ b/app/javascript/flavours/glitch/features/getting_started/index.js @@ -38,6 +38,7 @@ const messages = defineMessages({ lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, lists_subheading: { id: 'column_subheading.lists', defaultMessage: 'Lists' }, misc: { id: 'navigation_bar.misc', defaultMessage: 'Misc' }, + recommendations: { id: 'navigation_bar.recommendations', defaultMessage: 'Recommendations' }, menu: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, profile_directory: { id: 'getting_started.directory', defaultMessage: 'Profile directory' }, radyoodtu: { id: 'navigation_bar.radio1', defaultMessage: 'Radyo ODTU' }, @@ -158,6 +159,8 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); navItems.push(); } + navItems.push(); + navItems.push(); listItems = listItems.concat([ @@ -187,10 +190,9 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2);

- - + diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index fc29ccf5c..373e0fbce 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -21,6 +21,8 @@ const NavigationPanel = ({ onOpenSettings }) => ( {profile_directory && } + + @@ -42,7 +44,6 @@ const NavigationPanel = ({ onOpenSettings }) => (

: FG


- diff --git a/app/javascript/skins/glitch/flat-clean/common.scss b/app/javascript/skins/glitch/flat-clean/common.scss index 0c81303ff..8b0f727d2 100644 --- a/app/javascript/skins/glitch/flat-clean/common.scss +++ b/app/javascript/skins/glitch/flat-clean/common.scss @@ -1 +1,2 @@ @import 'flavours/glitch/styles/flatClean'; +@import 'fix'; diff --git a/app/javascript/skins/glitch/flat-clean/fix.scss b/app/javascript/skins/glitch/flat-clean/fix.scss new file mode 100644 index 000000000..e91c18506 --- /dev/null +++ b/app/javascript/skins/glitch/flat-clean/fix.scss @@ -0,0 +1,37 @@ +#premotd { + box-shadow: 0 0 2px #000 !important; + margin-top: 30px !important; + padding: 7px !important; + color: #666 !important; + border-radius: 6px !important; +} + +.drawer--account .acct { + display: block !important; + color: #000000 !important; +} + +.column-link--transparent .icon-with-badge__badge { + border-width: 0px !important; +} + +.status.status-direct { + box-shadow: 0 0 2px #a81717 !important; +} + +.navigation-panel hr { + border-top: 1px solid #9baec8 !important; +} + +hr { + border-radius: 0px !important; + border-color: transparent !important !important; + height: 1px !important; +} + +.column-link { + display: block !important; + font-size: 16px !important; + padding: 15px !important; + text-decoration: none !important; +} diff --git a/app/javascript/skins/glitch/metulayf/common.scss b/app/javascript/skins/glitch/metulayf/common.scss index 8ed17e883..bc0c25d36 100644 --- a/app/javascript/skins/glitch/metulayf/common.scss +++ b/app/javascript/skins/glitch/metulayf/common.scss @@ -1,2 +1,3 @@ @import 'variables'; +@import 'fix'; @import 'flavours/glitch/styles/index'; diff --git a/app/javascript/skins/glitch/metulayf/fix.scss b/app/javascript/skins/glitch/metulayf/fix.scss new file mode 100644 index 000000000..e8af215af --- /dev/null +++ b/app/javascript/skins/glitch/metulayf/fix.scss @@ -0,0 +1,525 @@ +.status { + /*box-shadow: 0 0 2px #a81717 !important;*/ + background: #0c0c0caa !important; + margin: 8px !important; + border-bottom: 0px !important; + padding: 10px 14px !important; + position: relative !important; + height: auto !important; + cursor: auto !important; + opacity: 1 !important; + -webkit-animation: fade .15s linear !important; + animation: fade .15s linear !important; +} + +.autosuggest-input label .autosuggest-textarea__textarea, .compose-form__autosuggest-wrapper label .autosuggest-textarea__textarea { + display: block !important; + box-sizing: border-box !important; + margin: 0 !important; + border: 0 !important; + border-radius: 4px 4px 0 0 !important; + padding: 10px 32px 0 10px !important; + width: 100% !important; + min-height: 100px !important; + outline: 0 !important; + color: #edfcf5 !important; + background: #080808 !important; + } + +.composer--options-wrapper { + background-color: #0c0c0c !important; +} + +#premotd { + background-color: #080808 !important; + box-shadow: 0 0 2px #a81717 !important; +} + +.column-header>button { + margin: 0 !important; + border: 0 !important; + padding: 15px !important; + color: inherit !important; + background: #0c0c0c !important; +} + + +column-header__button { +background-color: #0c0c0c !important; +} +.column-link--transparent { + transition: all .1s ease-in !important; + transition-property: background-color !important; + background: transparent !important; + color: #edfcf5 !important; + border-radius: 10px !important; +} + +.column-link--transparent.active { + color: #edfcf5 !important; + background: #a8171799 !important; +} + +.column-link:hover { + color: #edfcf5 !important; + background: #a81717 !important; + transition: all .1s ease-in !important; +} +.column-link:hover { + background: #a81717 !important; + transition: all .1s ease-in !important; +} + +a.column-link.column-link--transparent:hover { + /* border-radius: 15px !important; */ + background-color: #a81717 !important; +} + +a.column-link.column-link--transparent:hover { + /* border-radius: 15px !important; */ + background-color: #a81717 !important; + color: #edfcf5 !important; + transition: all .1s ease-in !important; +} +.status.status-direct { + box-shadow: 0 0 2px #a81717 !important; + background: #080808 !important; +} + +.search__input:focus { + transition: 0.11s !important; + background: #0c0c0c !important; +} + +.search__input { + outline: 0 !important; + box-sizing: border-box !important; + width: 100% !important; + border: 0 !important; + box-shadow: none !important; + font-family: inherit !important; + background: #080808cc !important; + color: #a81717 !important; + font-size: 14px !important; + margin: 0 !important; + display: block !important; + padding: 15px 30px 15px 15px !important; + line-height: 18px !important; + font-size: 16px !important; +} +getting-started__footer a { + text-decoration: none !important; + color: #a81717 !important; +} + +button.column-header__button { + background: #0c0c0c !important; +} + +.trends__item__name a { + color: #e6464b +} + +.getting-started__trends .trends__item__current { + color: #a81717 !important; +} + +.getting-started__trends h4 { + font-size: 12px !important; + text-transform: uppercase !important; + color: #a81717 + } + + +.column-header__back-button { + background: #0c0c0c !important; +} + +.columns-area--mobile .scrollable { + background-color: #000 !important; +} + +.button:disabled { + background-color: #000 !important; +} + + +.getting-started__footer a { + color: #a81717 !important; +} + +.composer--options>hr { + border-left: 1px solid #161616 !important; +} + +.account__header__bar { + position: relative !important; + background: #080808 !important; + padding: 5px !important; + border-bottom: 1px solid #2b2b2b !important; +} + +.focusable:focus { + box-shadow: 0 0 2px #a81717 !important; + background: #0c0c0c !important; +} + +.drawer--header>* { + display: block !important; + box-sizing: border-box !important; + border-bottom: 2px solid transparent !important; + padding: 15px 5px 13px !important; + height: 48px !important; + flex: 1 1 auto !important; + color: #a81717 !important; +} + +.drawer--header a:focus, .drawer--header a:hover { + outline: none !important; + background: #080808 !important; + transition: background .2s ease-out !important; +} +.glitch { + background: #0c0c0c !important; + color: #edfcf5 !important; +} +.glitch.local-settings span.hint { + color: #a81717 !important; +} +.glitch.local-settings__navigation__item { + color: #edfcf5 !important; + background: #0c0c0c !important; + border-bottom: 1px solid #111 !important; + transition: background .1s !important; +} +.glitch.local-settings__navigation { + background: #0c0c0c !important; +} +.glitch.local-settings__navigation__item:hover { + background: #161616 !important; +} +.glitch.local-settings__navigation__item.active { + background: #a81717 !important; + color: #fff !important; + transition: all .1s ease-in !important; +} +.column-link { + background: #000000 !important; +} + +.column>.scrollable { + background: #000000 !important; +} +.getting-started__wrapper audio, .getting-started__wrapper p { + background: black !important; + padding-left: 10px !important; + padding-bottom: 3px !important; +} +.conversation--unread { + background: #0c0c0c !important; +} +.composer--options--dropdown--content--item { + background: #080808 !important; + color: #edfcf5 !important; +} +.react-toggle-track { + background-color: #202020 !important; +} +.composer--options--dropdown--content--item span:first-child { + color: #a81717 !important; +} +.composer--options--dropdown--content--item:hover span:first-child { + color: #edfcf5 !important; +} +.composer--spoiler input { + color: #edfcf5 !important; + background: #080808 !important; +} +.confirmation-modal__container, .report-modal__target { + color: #edfcf5 !important; + background: #0c0c0c !important; +} +confirmation-modal__do_not_ask_again { + background: #0c0c0c !important; + color: #edfcf5 !important; +} +.block-modal__action-bar, .boost-modal__action-bar, .confirmation-modal__action-bar, .doodle-modal__action-bar, .favourite-modal__action-bar, .mute-modal__action-bar { + background: #111 !important; +} +.composer--reply>.content blockquote, .composer--reply>.content p, .composer--reply>.content pre { + color: #edfcf5 !important; +} +.composer--reply>.content a { + color: #e8585c!important; +} +.composer--reply { + margin: 0 0 10px !important; + border-radius: 4px !important; + padding: 10px !important; + background: #a8171799 !important; +} +.display-name__account { + color: #edfcf5bb !important; +} +.attachment-list__list a { + color: #edfcf58f !important; +} +.compose-form__poll-wrapper ul { + background: #080808 !important; + box-shadow: inset 0px 1px #a8171799 !important; +} +.poll__option input[type=text] { + color: #edfcf5 !important; + background: #060606 !important; + border: 1px solid #3a3a3a !important; +} +.compose-form__poll-wrapper .poll__footer { + background: #080808 !important; + border-top: 1px solid #a8171799 !important; +} +.compose-form__poll-wrapper select { + color: #edfcf5 !important; + background-color: #060606 !important; + border: 1px solid #3a3a3a !important; +} +.compose-form__poll-wrapper .button.button-secondary { + background: #060606 !important; + color: #a81717 !important; + border-color: #3a3a3a !important; + margin-right: 5px !important; +} +.compose-form__poll-wrapper .icon-button.disabled { + color: #a8171799 !important; +} +.compose-form__poll-wrapper { + border-top: 0px solid #a8171799 !important; +} +.poll__input { + display: inline-block !important; + position: relative !important; + border: 1px solid #a8171799 !important; +} +.confirmation-modal__do_not_ask_again { + color: #edfcf5 !important; + background: #0c0c0c !important; +} +.dropdown-menu { + background: #0c0c0c !important; +} +.dropdown-menu__item a { + background: #0c0c0c !important; + color: #edfcf5 !important; +} +.dropdown-menu__separator { + border-bottom: 1px solid #a8171799 !important; +} +.doodle-modal__container { + background: #111 !important; +} +.doodle-modal__container canvas { + border: 5px solid #111 !important; +} +.actions-modal, .block-modal, .boost-modal, .confirmation-modal, .doodle-modal, .favourite-modal, .giphy-modal, .mute-modal, .report-modal { + background: #0c0c0c !important; + color: #edfcf5 !important; +} +.block-modal__container select, .confirmation-modal__container select, .mute-modal__container select, .report-modal__target select { + color: #edfcf5 !important; + background: #080808 !important; + border: 1px solid #3a3a3a !important; +} +.report-modal__container { + border-top: 1px solid #a8171799 !important; +} +.report-modal__comment { + border-right: 1px solid #a8171799 !important; +} +.status-check-box { + border-bottom: 1px solid #a8171799 !important; +} +.report-modal__comment .setting-text { + color: #edfcf5 !important; + background: #0c0c0c !important; + border: 1px solid #202020 !important; +} +.account { + border-bottom: 1px solid #a8171799 !important; +} +.list-adder__lists { + background: #161616 !important; +} +.composer--options--dropdown--content--item span:first-child:active { + color: #edfcf5 !important; +} +.icon-button { + display: inline-block !important; + padding: 0 !important; +} +.setting-text { + color: #edfcf5 !important; + background: transparent !important; + border: 0 !important; + border-bottom: 2px solid #a8171799 !important; +} +.column-header__collapsible-inner { + background: #080808 !important; + padding: 15px !important; +} +.setting-text { + color: #a8171799 !important; + background: transparent !important; + border: 0 !important; + border-bottom: 2px solid #a8171799 !important; +} +.column-settings__section { + color: #a81717 !important; +} +.column-header__button, .column-header__notif-cleaning-buttons button { + background: #161616 !important; + border: 0 !important; + color: #a81717 !important; +} +.column-header__button.active, .column-header__button.active:hover, .column-header__notif-cleaning-buttons button.active, .column-header__notif-cleaning-buttons button.active:hover { + color: #fff !important; + background: #a8171799 !important; +} +button.column-header__button.active:hover { + background: #a81717 !important; +} +.column-header__button:hover, .column-header__notif-cleaning-buttons button:hover { + color: #edfcf5 !important; + background: #a81717 !important; +} +.empty-column-indicator, .error-column, .follow_requests-unlocked_explanation { + color: #3a3a3a !important; + background: #080808 !important; +} +.focusable:focus.status.status-direct { + box-shadow: 0 0 6px #a81717 !important; + animation: fade .21s linear !important; + background: #050505 !important; +} +.detailed-status { + background: #080808 !important; +} +.detailed-status__action-bar { + background-color: #08080899 !important; + border-top: 1px solid #a8171799 !important; + border-bottom: none !important; +} +.announcements { + background: #6e1616 !important; +} +.account__section-headline a, .account__section-headline button, .notification__filter-bar a, .notification__filter-bar button { + color: #a81717 !important; +} +.announcements__item__content a.unhandled-link { + color: #e87487 !important; +} +.reactions-bar__item { + flex-shrink: 0 !important; + background: #02020250 !important; +} +.reactions-bar__item:active, .reactions-bar__item:focus, .reactions-bar__item:hover { + background: #a8171799 !important; + transition: all .2s ease-out !important; + transition-property: background-color,color !important; +} +.reactions-bar__item.active { + color: white !important; + transition: all .1s ease-in !important; + transition-property: background-color,color !important; + background-color: #a8171760 !important; +} +.announcements button.icon-button { + color: #edfcf582 !important; +} + +.conversation--unread { + background: #080808 !important; +} +.conversation__content__relative-time { + font-size: 15px !important; + color: #a81717 !important; + padding-left: 15px !important; +} +.conversation__content__names { + color: #a81717 !important; +} +.box-widget { + padding: 20px !important; + border-radius: 4px !important; + background: #080808 !important; + box-shadow: 0 0 2px #a8171799 !important; +} +.announcements { + /* border-color: red !important; */ + box-shadow: inset 0 0 2px #a81717 !important; +} +.button.logo-button { + background: #a8171799 !important; +} +.button { + background-color: #a8171799 !important; +} +.button.logo-button.button--destructive:active { + background-color: #a8171799 !important; +} +.icon-button:active, .icon-button:focus, .icon-button:hover { + color: #a81717 !important; + background-color: rgba(58,58,58,.15) !important; +} +.account__header__tabs__buttons .icon-button:hover { + transition: all .1s ease-in !important; + border: 1px solid #a81717 !important; +} +.button.logo-button.button--destructive:hover { + background-color: #a81717 !important; +} +.tabs-bar__link { + background: #020202 !important; +} +.tabs-bar__link:hover { + background: #a81717 !important; + color: #edfcf5 !important; +} +.tabs-bar__link.active { + border-bottom: 2px solid #a81717 !important; + color: #a81717 !important; + background: #020202 !important; +} +.composer--upload_form>.content { + background: #080808 !important; +} +.composer--upload_form { + background: #080808 !important; +} +.composer--options--dropdown--content--item span:first-child { + color: #edfcf5 !important; +} +.column-back-button { + background: #0c0c0c !important; +} +.column-inline-form { + background: #080808 !important; +} +.column-subheading { + background: #000000 !important; +} +.column-header__collapsible { + color: #a81717 !important; +} +.autosuggest-textarea__suggestions__item.selected { + background: #a8171799 !important; +} +.autosuggest-textarea__suggestions__item:active, .autosuggest-textarea__suggestions__item:focus, .autosuggest-textarea__suggestions__item:hover { + background: #cc1c1c !important; +} +.autosuggest-textarea__suggestions { + color: #edfcf5 !important; + background: #080808 !important; + box-shadow: 4px 4px 6px rgb(0 0 0 / 40%) !important; +} +.autosuggest-textarea__suggestions__item>.account.small .display-name>span { + color: #909090 !important; +} diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index c985555a6..29574c80d 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -46,6 +46,8 @@ = stylesheet_link_tag custom_css_path, host: request.host, media: 'all' %body{ class: body_classes } + + = content_for?(:content) ? yield(:content) : yield .logo-resources diff --git a/glitch-themes.patch b/glitch-themes.patch deleted file mode 100644 index f8ae91168..000000000 --- a/glitch-themes.patch +++ /dev/null @@ -1,1598 +0,0 @@ -From 145fce993b4019c81d3da78b2f9158a4ce60ea2e Mon Sep 17 00:00:00 2001 -From: "@stux" -Date: Sat, 14 Aug 2021 23:05:12 +0200 -Subject: [PATCH] Added some Glitch-soc themes - ---- - .../flavours/glitch/styles/dark.scss | 3 + - .../flavours/glitch/styles/dark/diff.scss | 440 ++++++++++++++++++ - .../glitch/styles/dark/variables.scss | 41 ++ - .../flavours/glitch/styles/hacker.scss | 3 + - .../flavours/glitch/styles/hacker/diff.scss | 440 ++++++++++++++++++ - .../glitch/styles/hacker/variables.scss | 41 ++ - .../flavours/glitch/styles/night.scss | 3 + - .../flavours/glitch/styles/night/diff.scss | 440 ++++++++++++++++++ - .../glitch/styles/night/variables.scss | 41 ++ - app/javascript/skins/glitch/dark/common.scss | 1 + - app/javascript/skins/glitch/dark/names.yml | 4 + - .../skins/glitch/hacker/common.scss | 1 + - app/javascript/skins/glitch/hacker/names.yml | 4 + - app/javascript/skins/glitch/night/common.scss | 1 + - app/javascript/skins/glitch/night/names.yml | 4 + - 15 files changed, 1467 insertions(+) - create mode 100644 app/javascript/flavours/glitch/styles/dark.scss - create mode 100644 app/javascript/flavours/glitch/styles/dark/diff.scss - create mode 100644 app/javascript/flavours/glitch/styles/dark/variables.scss - create mode 100644 app/javascript/flavours/glitch/styles/hacker.scss - create mode 100644 app/javascript/flavours/glitch/styles/hacker/diff.scss - create mode 100644 app/javascript/flavours/glitch/styles/hacker/variables.scss - create mode 100644 app/javascript/flavours/glitch/styles/night.scss - create mode 100644 app/javascript/flavours/glitch/styles/night/diff.scss - create mode 100644 app/javascript/flavours/glitch/styles/night/variables.scss - create mode 100644 app/javascript/skins/glitch/dark/common.scss - create mode 100644 app/javascript/skins/glitch/dark/names.yml - create mode 100644 app/javascript/skins/glitch/hacker/common.scss - create mode 100644 app/javascript/skins/glitch/hacker/names.yml - create mode 100644 app/javascript/skins/glitch/night/common.scss - create mode 100644 app/javascript/skins/glitch/night/names.yml - -diff --git a/app/javascript/flavours/glitch/styles/dark.scss b/app/javascript/flavours/glitch/styles/dark.scss -new file mode 100644 -index 000000000..db522e63b ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/dark.scss -@@ -0,0 +1,3 @@ -+@import 'dark/variables'; -+@import 'index'; -+@import 'dark/diff'; -diff --git a/app/javascript/flavours/glitch/styles/dark/diff.scss b/app/javascript/flavours/glitch/styles/dark/diff.scss -new file mode 100644 -index 000000000..de1278114 ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/dark/diff.scss -@@ -0,0 +1,440 @@ -+// Notes! -+// Sass color functions, "darken" and "lighten" are automatically replaced. -+ -+.glitch.local-settings { -+ background: darken($ui-base-color, 80%); -+ -+ &__navigation { -+ background: darken($ui-base-color, 30%); -+ } -+ -+ &__navigation__item { -+ background: darken($ui-base-color, 50%); -+ -+ &:hover { -+ background: $ui-base-color; -+ color: $primary-text-color; -+ } -+ } -+} -+ -+.notification__dismiss-overlay { -+ .wrappy { -+ box-shadow: unset; -+ } -+ -+ .ckbox { -+ text-shadow: unset; -+ } -+} -+ -+.status.status-direct:not(.read) { -+ background: darken($ui-base-color, 8%); -+ border-bottom-color: darken($ui-base-color, 12%); -+ -+ &.collapsed> .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 8%), 0), rgba(darken($ui-base-color, 8%), 1)); -+ } -+} -+ -+.focusable:focus.status.status-direct:not(.read) { -+ background: darken($ui-base-color, 4%); -+ -+ &.collapsed> .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 4%), 0), rgba(darken($ui-base-color, 4%), 1)); -+ } -+} -+ -+// Change columns' default background colors -+.column { -+ > .scrollable { -+ background: darken($ui-base-color, 13%); -+ } -+} -+ -+.status.collapsed .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 13%), 0), rgba(darken($ui-base-color, 13%), 1)); -+} -+ -+.drawer__inner { -+ background: $ui-base-color; -+} -+ -+.drawer__inner__mastodon { -+ background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto !important; -+ -+ .mastodon { -+ filter: contrast(75%) brightness(75%) !important; -+ } -+} -+ -+// Change the default appearance of the content warning button -+.status__content { -+ -+ .status__content__spoiler-link { -+ -+ background: darken($ui-base-color, 30%); -+ -+ &:hover { -+ background: lighten($ui-base-color, 35%); -+ color: $primary-text-color; -+ text-decoration: none; -+ } -+ -+ } -+ -+} -+ -+// Change the background colors of media and video spoilers -+.media-spoiler, -+.video-player__spoiler, -+.account-gallery__item a { -+ background: $ui-base-color; -+} -+ -+// Change the colors used in the dropdown menu -+.dropdown-menu { -+ background: $ui-base-color; -+} -+ -+.dropdown-menu__arrow { -+ -+ &.left { -+ border-left-color: $ui-base-color; -+ } -+ -+ &.top { -+ border-top-color: $ui-base-color; -+ } -+ -+ &.bottom { -+ border-bottom-color: $ui-base-color; -+ } -+ -+ &.right { -+ border-right-color: $ui-base-color; -+ } -+ -+} -+ -+.dropdown-menu__item { -+ a { -+ background: $ui-base-color; -+ color: $ui-secondary-color; -+ } -+} -+ -+// Change the default color of several parts of the compose form -+.composer { -+ -+ .composer--spoiler input, .compose-form__autosuggest-wrapper textarea { -+ color: lighten($ui-base-color, 80%); -+ -+ &:disabled { background: lighten($simple-background-color, 10%) } -+ -+ &::placeholder { -+ color: lighten($ui-base-color, 70%); -+ } -+ } -+ -+ .compose-form__modifiers { -+ background: darken($ui-base-color, 60%); -+ -+ .autosuggest-input input, select { -+ background: darken($ui-base-color, 70%); -+ } -+ } -+ -+ .composer--options-wrapper { -+ background: lighten($ui-base-color, 10%); -+ } -+ -+ .composer--options > hr { -+ display: none; -+ } -+ -+ .composer--options--dropdown--content--item { -+ color: $ui-primary-color; -+ -+ strong { -+ color: $ui-primary-color; -+ } -+ -+ } -+ -+ header > .account.small { -+ color: $primary-text-color; -+ } -+ -+ .composer--reply > .content { -+ color: $primary-text-color; -+ } -+} -+ -+.composer--upload_form--actions .icon-button { -+ color: lighten($white, 7%); -+ -+ &:active, -+ &:focus, -+ &:hover { -+ color: $white; -+ } -+} -+ -+.composer--upload_form--item > div input { -+ color: lighten($white, 7%); -+ -+ &::placeholder { -+ color: lighten($white, 10%); -+ } -+} -+ -+.dropdown-menu__separator { -+ border-bottom-color: lighten($ui-base-color, 12%); -+} -+ -+.status__content, -+.reply-indicator__content { -+ a { -+ color: $highlight-text-color; -+ } -+} -+ -+.emoji-mart-bar { -+ border-color: darken($ui-base-color, 4%); -+ -+ &:first-child { -+ background: lighten($ui-base-color, 10%); -+ } -+} -+ -+.emoji-mart-search input { -+ background: rgba($ui-base-color, 0.3); -+ border-color: $ui-base-color; -+} -+ -+.autosuggest-textarea__suggestions { -+ background: darken($ui-base-color, 40%) -+} -+ -+.autosuggest-textarea__suggestions__item { -+ &:hover, -+ &:focus, -+ &:active, -+ &.selected { -+ background: darken($ui-base-color, 4%); -+ color: $primary-text-color; -+ } -+} -+ -+.react-toggle-track { -+ background: $ui-secondary-color; -+} -+ -+.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track { -+ background: lighten($ui-secondary-color, 10%); -+} -+ -+.react-toggle.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track { -+ background: darken($ui-highlight-color, 10%); -+} -+ -+// Change the background colors of modals -+.actions-modal, -+.boost-modal, -+.favourite-modal, -+.confirmation-modal, -+.mute-modal, -+.block-modal, -+.report-modal, -+.embed-modal, -+.error-modal, -+.onboarding-modal, -+.report-modal__comment .setting-text__wrapper, -+.report-modal__comment .setting-text { -+ background: $primary-text-color; -+ border: 1px solid lighten($ui-base-color, 8%); -+} -+ -+.report-modal__comment { -+ border-right-color: lighten($ui-base-color, 8%); -+} -+ -+.report-modal__container { -+ border-top-color: lighten($ui-base-color, 8%); -+} -+ -+.boost-modal__action-bar, -+.confirmation-modal__action-bar, -+.mute-modal__action-bar, -+.block-modal__action-bar, -+.onboarding-modal__paginator, -+.error-modal__footer { -+ background: darken($ui-base-color, 20%); -+ -+ .onboarding-modal__nav, -+ .error-modal__nav { -+ &:hover, -+ &:focus, -+ &:active { -+ background-color: darken($ui-base-color, 12%); -+ } -+ } -+} -+ -+// Change the default color used for the text in an empty column or on the error column -+.empty-column-indicator, -+.error-column { -+ color: darken($ui-base-color, 60%); -+} -+ -+// Change the default colors used on some parts of the profile pages -+.activity-stream-tabs { -+ -+ background: $account-background-color; -+ -+ a { -+ &.active { -+ color: $ui-primary-color; -+ } -+ } -+ -+} -+ -+.activity-stream { -+ -+ .entry { -+ background: $account-background-color; -+ } -+ -+ .status.light { -+ -+ .status__content { -+ color: $primary-text-color; -+ } -+ -+ .display-name { -+ strong { -+ color: $primary-text-color; -+ } -+ } -+ -+ } -+ -+} -+ -+.accounts-grid { -+ .account-grid-card { -+ -+ .controls { -+ .icon-button { -+ color: $ui-secondary-color; -+ } -+ } -+ -+ .name { -+ a { -+ color: $primary-text-color; -+ } -+ } -+ -+ .username { -+ color: $ui-secondary-color; -+ } -+ -+ .account__header__content { -+ color: $primary-text-color; -+ } -+ -+ } -+} -+ -+.button.logo-button { -+ color: $white; -+ -+ svg { -+ fill: $white; -+ } -+} -+ -+.public-layout { -+ .header, -+ .public-account-header, -+ .public-account-bio { -+ box-shadow: none; -+ } -+ -+ .header { -+ background: lighten($ui-base-color, 12%); -+ } -+ -+ .public-account-header { -+ &__image { -+ background: lighten($ui-base-color, 12%); -+ -+ &::after { -+ box-shadow: none; -+ } -+ } -+ -+ &__tabs { -+ &__name { -+ h1, -+ h1 small { -+ color: $white; -+ } -+ } -+ } -+ } -+} -+ -+.account__section-headline a.active::after { -+ border-color: transparent transparent $white; -+} -+ -+.hero-widget, -+.box-widget, -+.contact-widget, -+.landing-page__information.contact-widget, -+.moved-account-widget, -+.memoriam-widget, -+.activity-stream, -+.nothing-here, -+.directory__tag > a, -+.directory__tag > div { -+ box-shadow: none; -+} -+ -+.admin-wrapper { -+ .sidebar ul .simple-navigation-active-leaf a { -+ color: $black; -+ } -+} -+ -+.simple_form button, .button { -+ color: $black; -+} -+ -+.poll__input { -+ border: 1px solid pink; -+} -+ -+.poll .button.button-secondary { -+ background: $primary-text-color; -+ color: $black; -+} -+ -+button.icon-button { -+ color: $ui-secondary-color; -+} -+ -+button.icon-button i.fa-retweet { -+ background-image: url('data:image/svg+xml;utf8,'); -+} -+ -+button.icon-button.active i.fa-retweet { -+ background-image: url('data:image/svg+xml;utf8,'); -+ box-shadow: 0px 0px 5px pink, inset 0px 0px 5px pink; -+ border-radius: 20px; -+} -+ -diff --git a/app/javascript/flavours/glitch/styles/dark/variables.scss b/app/javascript/flavours/glitch/styles/dark/variables.scss -new file mode 100644 -index 000000000..12e51ee3b ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/dark/variables.scss -@@ -0,0 +1,41 @@ -+// Dependent colors -+$black: #000000; -+$white: #ffffff; -+ -+$classic-base-color: #c7c7c7; -+$classic-primary-color: #454545; -+$classic-secondary-color: #2a2a2a; -+$classic-highlight-color: #bcbcbc; -+ -+$ui-base-color: $classic-secondary-color !default; -+$ui-base-lighter-color: darken($ui-base-color, 57%); -+$ui-highlight-color: $classic-highlight-color !default; -+$ui-primary-color: $classic-primary-color !default; -+$ui-secondary-color: $classic-base-color !default; -+ -+$primary-text-color: #e8e8e8 !default; -+$darker-text-color: $classic-base-color !default; -+$dark-text-color: #a7a7a7; -+$action-button-color: #828282; -+ -+$success-green: #80b38b; -+$error-red: #b38080; -+$warning-red: #b38c80; -+ -+$base-overlay-background: $black !default; -+ -+$inverted-text-color: #222222 !default; -+$lighter-text-color: $classic-base-color !default; -+$light-text-color: #6b6b6b; -+ -+$account-background-color: #494949 !default; -+ -+@function darken($color, $amount) { -+ @return hsl(hue($color), saturation($color), lightness($color) + $amount); -+} -+ -+@function lighten($color, $amount) { -+ @return hsl(hue($color), saturation($color), lightness($color) - $amount); -+} -+ -+//$emojis-requiring-inversion: 'chains'; -diff --git a/app/javascript/flavours/glitch/styles/hacker.scss b/app/javascript/flavours/glitch/styles/hacker.scss -new file mode 100644 -index 000000000..c8b1c3c1b ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/hacker.scss -@@ -0,0 +1,3 @@ -+@import 'hacker/variables'; -+@import 'index'; -+@import 'hacker/diff'; -diff --git a/app/javascript/flavours/glitch/styles/hacker/diff.scss b/app/javascript/flavours/glitch/styles/hacker/diff.scss -new file mode 100644 -index 000000000..de1278114 ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/hacker/diff.scss -@@ -0,0 +1,440 @@ -+// Notes! -+// Sass color functions, "darken" and "lighten" are automatically replaced. -+ -+.glitch.local-settings { -+ background: darken($ui-base-color, 80%); -+ -+ &__navigation { -+ background: darken($ui-base-color, 30%); -+ } -+ -+ &__navigation__item { -+ background: darken($ui-base-color, 50%); -+ -+ &:hover { -+ background: $ui-base-color; -+ color: $primary-text-color; -+ } -+ } -+} -+ -+.notification__dismiss-overlay { -+ .wrappy { -+ box-shadow: unset; -+ } -+ -+ .ckbox { -+ text-shadow: unset; -+ } -+} -+ -+.status.status-direct:not(.read) { -+ background: darken($ui-base-color, 8%); -+ border-bottom-color: darken($ui-base-color, 12%); -+ -+ &.collapsed> .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 8%), 0), rgba(darken($ui-base-color, 8%), 1)); -+ } -+} -+ -+.focusable:focus.status.status-direct:not(.read) { -+ background: darken($ui-base-color, 4%); -+ -+ &.collapsed> .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 4%), 0), rgba(darken($ui-base-color, 4%), 1)); -+ } -+} -+ -+// Change columns' default background colors -+.column { -+ > .scrollable { -+ background: darken($ui-base-color, 13%); -+ } -+} -+ -+.status.collapsed .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 13%), 0), rgba(darken($ui-base-color, 13%), 1)); -+} -+ -+.drawer__inner { -+ background: $ui-base-color; -+} -+ -+.drawer__inner__mastodon { -+ background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto !important; -+ -+ .mastodon { -+ filter: contrast(75%) brightness(75%) !important; -+ } -+} -+ -+// Change the default appearance of the content warning button -+.status__content { -+ -+ .status__content__spoiler-link { -+ -+ background: darken($ui-base-color, 30%); -+ -+ &:hover { -+ background: lighten($ui-base-color, 35%); -+ color: $primary-text-color; -+ text-decoration: none; -+ } -+ -+ } -+ -+} -+ -+// Change the background colors of media and video spoilers -+.media-spoiler, -+.video-player__spoiler, -+.account-gallery__item a { -+ background: $ui-base-color; -+} -+ -+// Change the colors used in the dropdown menu -+.dropdown-menu { -+ background: $ui-base-color; -+} -+ -+.dropdown-menu__arrow { -+ -+ &.left { -+ border-left-color: $ui-base-color; -+ } -+ -+ &.top { -+ border-top-color: $ui-base-color; -+ } -+ -+ &.bottom { -+ border-bottom-color: $ui-base-color; -+ } -+ -+ &.right { -+ border-right-color: $ui-base-color; -+ } -+ -+} -+ -+.dropdown-menu__item { -+ a { -+ background: $ui-base-color; -+ color: $ui-secondary-color; -+ } -+} -+ -+// Change the default color of several parts of the compose form -+.composer { -+ -+ .composer--spoiler input, .compose-form__autosuggest-wrapper textarea { -+ color: lighten($ui-base-color, 80%); -+ -+ &:disabled { background: lighten($simple-background-color, 10%) } -+ -+ &::placeholder { -+ color: lighten($ui-base-color, 70%); -+ } -+ } -+ -+ .compose-form__modifiers { -+ background: darken($ui-base-color, 60%); -+ -+ .autosuggest-input input, select { -+ background: darken($ui-base-color, 70%); -+ } -+ } -+ -+ .composer--options-wrapper { -+ background: lighten($ui-base-color, 10%); -+ } -+ -+ .composer--options > hr { -+ display: none; -+ } -+ -+ .composer--options--dropdown--content--item { -+ color: $ui-primary-color; -+ -+ strong { -+ color: $ui-primary-color; -+ } -+ -+ } -+ -+ header > .account.small { -+ color: $primary-text-color; -+ } -+ -+ .composer--reply > .content { -+ color: $primary-text-color; -+ } -+} -+ -+.composer--upload_form--actions .icon-button { -+ color: lighten($white, 7%); -+ -+ &:active, -+ &:focus, -+ &:hover { -+ color: $white; -+ } -+} -+ -+.composer--upload_form--item > div input { -+ color: lighten($white, 7%); -+ -+ &::placeholder { -+ color: lighten($white, 10%); -+ } -+} -+ -+.dropdown-menu__separator { -+ border-bottom-color: lighten($ui-base-color, 12%); -+} -+ -+.status__content, -+.reply-indicator__content { -+ a { -+ color: $highlight-text-color; -+ } -+} -+ -+.emoji-mart-bar { -+ border-color: darken($ui-base-color, 4%); -+ -+ &:first-child { -+ background: lighten($ui-base-color, 10%); -+ } -+} -+ -+.emoji-mart-search input { -+ background: rgba($ui-base-color, 0.3); -+ border-color: $ui-base-color; -+} -+ -+.autosuggest-textarea__suggestions { -+ background: darken($ui-base-color, 40%) -+} -+ -+.autosuggest-textarea__suggestions__item { -+ &:hover, -+ &:focus, -+ &:active, -+ &.selected { -+ background: darken($ui-base-color, 4%); -+ color: $primary-text-color; -+ } -+} -+ -+.react-toggle-track { -+ background: $ui-secondary-color; -+} -+ -+.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track { -+ background: lighten($ui-secondary-color, 10%); -+} -+ -+.react-toggle.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track { -+ background: darken($ui-highlight-color, 10%); -+} -+ -+// Change the background colors of modals -+.actions-modal, -+.boost-modal, -+.favourite-modal, -+.confirmation-modal, -+.mute-modal, -+.block-modal, -+.report-modal, -+.embed-modal, -+.error-modal, -+.onboarding-modal, -+.report-modal__comment .setting-text__wrapper, -+.report-modal__comment .setting-text { -+ background: $primary-text-color; -+ border: 1px solid lighten($ui-base-color, 8%); -+} -+ -+.report-modal__comment { -+ border-right-color: lighten($ui-base-color, 8%); -+} -+ -+.report-modal__container { -+ border-top-color: lighten($ui-base-color, 8%); -+} -+ -+.boost-modal__action-bar, -+.confirmation-modal__action-bar, -+.mute-modal__action-bar, -+.block-modal__action-bar, -+.onboarding-modal__paginator, -+.error-modal__footer { -+ background: darken($ui-base-color, 20%); -+ -+ .onboarding-modal__nav, -+ .error-modal__nav { -+ &:hover, -+ &:focus, -+ &:active { -+ background-color: darken($ui-base-color, 12%); -+ } -+ } -+} -+ -+// Change the default color used for the text in an empty column or on the error column -+.empty-column-indicator, -+.error-column { -+ color: darken($ui-base-color, 60%); -+} -+ -+// Change the default colors used on some parts of the profile pages -+.activity-stream-tabs { -+ -+ background: $account-background-color; -+ -+ a { -+ &.active { -+ color: $ui-primary-color; -+ } -+ } -+ -+} -+ -+.activity-stream { -+ -+ .entry { -+ background: $account-background-color; -+ } -+ -+ .status.light { -+ -+ .status__content { -+ color: $primary-text-color; -+ } -+ -+ .display-name { -+ strong { -+ color: $primary-text-color; -+ } -+ } -+ -+ } -+ -+} -+ -+.accounts-grid { -+ .account-grid-card { -+ -+ .controls { -+ .icon-button { -+ color: $ui-secondary-color; -+ } -+ } -+ -+ .name { -+ a { -+ color: $primary-text-color; -+ } -+ } -+ -+ .username { -+ color: $ui-secondary-color; -+ } -+ -+ .account__header__content { -+ color: $primary-text-color; -+ } -+ -+ } -+} -+ -+.button.logo-button { -+ color: $white; -+ -+ svg { -+ fill: $white; -+ } -+} -+ -+.public-layout { -+ .header, -+ .public-account-header, -+ .public-account-bio { -+ box-shadow: none; -+ } -+ -+ .header { -+ background: lighten($ui-base-color, 12%); -+ } -+ -+ .public-account-header { -+ &__image { -+ background: lighten($ui-base-color, 12%); -+ -+ &::after { -+ box-shadow: none; -+ } -+ } -+ -+ &__tabs { -+ &__name { -+ h1, -+ h1 small { -+ color: $white; -+ } -+ } -+ } -+ } -+} -+ -+.account__section-headline a.active::after { -+ border-color: transparent transparent $white; -+} -+ -+.hero-widget, -+.box-widget, -+.contact-widget, -+.landing-page__information.contact-widget, -+.moved-account-widget, -+.memoriam-widget, -+.activity-stream, -+.nothing-here, -+.directory__tag > a, -+.directory__tag > div { -+ box-shadow: none; -+} -+ -+.admin-wrapper { -+ .sidebar ul .simple-navigation-active-leaf a { -+ color: $black; -+ } -+} -+ -+.simple_form button, .button { -+ color: $black; -+} -+ -+.poll__input { -+ border: 1px solid pink; -+} -+ -+.poll .button.button-secondary { -+ background: $primary-text-color; -+ color: $black; -+} -+ -+button.icon-button { -+ color: $ui-secondary-color; -+} -+ -+button.icon-button i.fa-retweet { -+ background-image: url('data:image/svg+xml;utf8,'); -+} -+ -+button.icon-button.active i.fa-retweet { -+ background-image: url('data:image/svg+xml;utf8,'); -+ box-shadow: 0px 0px 5px pink, inset 0px 0px 5px pink; -+ border-radius: 20px; -+} -+ -diff --git a/app/javascript/flavours/glitch/styles/hacker/variables.scss b/app/javascript/flavours/glitch/styles/hacker/variables.scss -new file mode 100644 -index 000000000..46f055a8f ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/hacker/variables.scss -@@ -0,0 +1,41 @@ -+// Dependent colors -+$black: #000000; -+$white: #ffffff; -+ -+$classic-base-color: #c8b7c1; -+$classic-primary-color: #4C3A45; -+$classic-secondary-color: #2C2028; -+$classic-highlight-color: #bca9b4; -+ -+$ui-base-color: $classic-secondary-color !default; -+$ui-base-lighter-color: darken($ui-base-color, 57%); -+$ui-highlight-color: $classic-highlight-color !default; -+$ui-primary-color: $classic-primary-color !default; -+$ui-secondary-color: $classic-base-color !default; -+ -+$primary-text-color: #e9e2e6 !default; -+$darker-text-color: $classic-base-color !default; -+$dark-text-color: #a68c9c; -+$action-button-color: #606984; -+ -+$success-green: #80b38b; -+$error-red: #b38080; -+$warning-red: #b38c80; -+ -+$base-overlay-background: $black !default; -+ -+$inverted-text-color: #291822 !default; -+$lighter-text-color: $classic-base-color !default; -+$light-text-color: #6A5160; -+ -+$account-background-color: #4C3A45 !default; -+ -+@function darken($color, $amount) { -+ @return hsl(hue($color), saturation($color), lightness($color) + $amount); -+} -+ -+@function lighten($color, $amount) { -+ @return hsl(hue($color), saturation($color), lightness($color) - $amount); -+} -+ -+//$emojis-requiring-inversion: 'chains'; -diff --git a/app/javascript/flavours/glitch/styles/night.scss b/app/javascript/flavours/glitch/styles/night.scss -new file mode 100644 -index 000000000..a09a79329 ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/night.scss -@@ -0,0 +1,3 @@ -+@import 'night/variables'; -+@import 'index'; -+@import 'night/diff'; -diff --git a/app/javascript/flavours/glitch/styles/night/diff.scss b/app/javascript/flavours/glitch/styles/night/diff.scss -new file mode 100644 -index 000000000..de1278114 ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/night/diff.scss -@@ -0,0 +1,440 @@ -+// Notes! -+// Sass color functions, "darken" and "lighten" are automatically replaced. -+ -+.glitch.local-settings { -+ background: darken($ui-base-color, 80%); -+ -+ &__navigation { -+ background: darken($ui-base-color, 30%); -+ } -+ -+ &__navigation__item { -+ background: darken($ui-base-color, 50%); -+ -+ &:hover { -+ background: $ui-base-color; -+ color: $primary-text-color; -+ } -+ } -+} -+ -+.notification__dismiss-overlay { -+ .wrappy { -+ box-shadow: unset; -+ } -+ -+ .ckbox { -+ text-shadow: unset; -+ } -+} -+ -+.status.status-direct:not(.read) { -+ background: darken($ui-base-color, 8%); -+ border-bottom-color: darken($ui-base-color, 12%); -+ -+ &.collapsed> .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 8%), 0), rgba(darken($ui-base-color, 8%), 1)); -+ } -+} -+ -+.focusable:focus.status.status-direct:not(.read) { -+ background: darken($ui-base-color, 4%); -+ -+ &.collapsed> .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 4%), 0), rgba(darken($ui-base-color, 4%), 1)); -+ } -+} -+ -+// Change columns' default background colors -+.column { -+ > .scrollable { -+ background: darken($ui-base-color, 13%); -+ } -+} -+ -+.status.collapsed .status__content:after { -+ background: linear-gradient(rgba(darken($ui-base-color, 13%), 0), rgba(darken($ui-base-color, 13%), 1)); -+} -+ -+.drawer__inner { -+ background: $ui-base-color; -+} -+ -+.drawer__inner__mastodon { -+ background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto !important; -+ -+ .mastodon { -+ filter: contrast(75%) brightness(75%) !important; -+ } -+} -+ -+// Change the default appearance of the content warning button -+.status__content { -+ -+ .status__content__spoiler-link { -+ -+ background: darken($ui-base-color, 30%); -+ -+ &:hover { -+ background: lighten($ui-base-color, 35%); -+ color: $primary-text-color; -+ text-decoration: none; -+ } -+ -+ } -+ -+} -+ -+// Change the background colors of media and video spoilers -+.media-spoiler, -+.video-player__spoiler, -+.account-gallery__item a { -+ background: $ui-base-color; -+} -+ -+// Change the colors used in the dropdown menu -+.dropdown-menu { -+ background: $ui-base-color; -+} -+ -+.dropdown-menu__arrow { -+ -+ &.left { -+ border-left-color: $ui-base-color; -+ } -+ -+ &.top { -+ border-top-color: $ui-base-color; -+ } -+ -+ &.bottom { -+ border-bottom-color: $ui-base-color; -+ } -+ -+ &.right { -+ border-right-color: $ui-base-color; -+ } -+ -+} -+ -+.dropdown-menu__item { -+ a { -+ background: $ui-base-color; -+ color: $ui-secondary-color; -+ } -+} -+ -+// Change the default color of several parts of the compose form -+.composer { -+ -+ .composer--spoiler input, .compose-form__autosuggest-wrapper textarea { -+ color: lighten($ui-base-color, 80%); -+ -+ &:disabled { background: lighten($simple-background-color, 10%) } -+ -+ &::placeholder { -+ color: lighten($ui-base-color, 70%); -+ } -+ } -+ -+ .compose-form__modifiers { -+ background: darken($ui-base-color, 60%); -+ -+ .autosuggest-input input, select { -+ background: darken($ui-base-color, 70%); -+ } -+ } -+ -+ .composer--options-wrapper { -+ background: lighten($ui-base-color, 10%); -+ } -+ -+ .composer--options > hr { -+ display: none; -+ } -+ -+ .composer--options--dropdown--content--item { -+ color: $ui-primary-color; -+ -+ strong { -+ color: $ui-primary-color; -+ } -+ -+ } -+ -+ header > .account.small { -+ color: $primary-text-color; -+ } -+ -+ .composer--reply > .content { -+ color: $primary-text-color; -+ } -+} -+ -+.composer--upload_form--actions .icon-button { -+ color: lighten($white, 7%); -+ -+ &:active, -+ &:focus, -+ &:hover { -+ color: $white; -+ } -+} -+ -+.composer--upload_form--item > div input { -+ color: lighten($white, 7%); -+ -+ &::placeholder { -+ color: lighten($white, 10%); -+ } -+} -+ -+.dropdown-menu__separator { -+ border-bottom-color: lighten($ui-base-color, 12%); -+} -+ -+.status__content, -+.reply-indicator__content { -+ a { -+ color: $highlight-text-color; -+ } -+} -+ -+.emoji-mart-bar { -+ border-color: darken($ui-base-color, 4%); -+ -+ &:first-child { -+ background: lighten($ui-base-color, 10%); -+ } -+} -+ -+.emoji-mart-search input { -+ background: rgba($ui-base-color, 0.3); -+ border-color: $ui-base-color; -+} -+ -+.autosuggest-textarea__suggestions { -+ background: darken($ui-base-color, 40%) -+} -+ -+.autosuggest-textarea__suggestions__item { -+ &:hover, -+ &:focus, -+ &:active, -+ &.selected { -+ background: darken($ui-base-color, 4%); -+ color: $primary-text-color; -+ } -+} -+ -+.react-toggle-track { -+ background: $ui-secondary-color; -+} -+ -+.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track { -+ background: lighten($ui-secondary-color, 10%); -+} -+ -+.react-toggle.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track { -+ background: darken($ui-highlight-color, 10%); -+} -+ -+// Change the background colors of modals -+.actions-modal, -+.boost-modal, -+.favourite-modal, -+.confirmation-modal, -+.mute-modal, -+.block-modal, -+.report-modal, -+.embed-modal, -+.error-modal, -+.onboarding-modal, -+.report-modal__comment .setting-text__wrapper, -+.report-modal__comment .setting-text { -+ background: $primary-text-color; -+ border: 1px solid lighten($ui-base-color, 8%); -+} -+ -+.report-modal__comment { -+ border-right-color: lighten($ui-base-color, 8%); -+} -+ -+.report-modal__container { -+ border-top-color: lighten($ui-base-color, 8%); -+} -+ -+.boost-modal__action-bar, -+.confirmation-modal__action-bar, -+.mute-modal__action-bar, -+.block-modal__action-bar, -+.onboarding-modal__paginator, -+.error-modal__footer { -+ background: darken($ui-base-color, 20%); -+ -+ .onboarding-modal__nav, -+ .error-modal__nav { -+ &:hover, -+ &:focus, -+ &:active { -+ background-color: darken($ui-base-color, 12%); -+ } -+ } -+} -+ -+// Change the default color used for the text in an empty column or on the error column -+.empty-column-indicator, -+.error-column { -+ color: darken($ui-base-color, 60%); -+} -+ -+// Change the default colors used on some parts of the profile pages -+.activity-stream-tabs { -+ -+ background: $account-background-color; -+ -+ a { -+ &.active { -+ color: $ui-primary-color; -+ } -+ } -+ -+} -+ -+.activity-stream { -+ -+ .entry { -+ background: $account-background-color; -+ } -+ -+ .status.light { -+ -+ .status__content { -+ color: $primary-text-color; -+ } -+ -+ .display-name { -+ strong { -+ color: $primary-text-color; -+ } -+ } -+ -+ } -+ -+} -+ -+.accounts-grid { -+ .account-grid-card { -+ -+ .controls { -+ .icon-button { -+ color: $ui-secondary-color; -+ } -+ } -+ -+ .name { -+ a { -+ color: $primary-text-color; -+ } -+ } -+ -+ .username { -+ color: $ui-secondary-color; -+ } -+ -+ .account__header__content { -+ color: $primary-text-color; -+ } -+ -+ } -+} -+ -+.button.logo-button { -+ color: $white; -+ -+ svg { -+ fill: $white; -+ } -+} -+ -+.public-layout { -+ .header, -+ .public-account-header, -+ .public-account-bio { -+ box-shadow: none; -+ } -+ -+ .header { -+ background: lighten($ui-base-color, 12%); -+ } -+ -+ .public-account-header { -+ &__image { -+ background: lighten($ui-base-color, 12%); -+ -+ &::after { -+ box-shadow: none; -+ } -+ } -+ -+ &__tabs { -+ &__name { -+ h1, -+ h1 small { -+ color: $white; -+ } -+ } -+ } -+ } -+} -+ -+.account__section-headline a.active::after { -+ border-color: transparent transparent $white; -+} -+ -+.hero-widget, -+.box-widget, -+.contact-widget, -+.landing-page__information.contact-widget, -+.moved-account-widget, -+.memoriam-widget, -+.activity-stream, -+.nothing-here, -+.directory__tag > a, -+.directory__tag > div { -+ box-shadow: none; -+} -+ -+.admin-wrapper { -+ .sidebar ul .simple-navigation-active-leaf a { -+ color: $black; -+ } -+} -+ -+.simple_form button, .button { -+ color: $black; -+} -+ -+.poll__input { -+ border: 1px solid pink; -+} -+ -+.poll .button.button-secondary { -+ background: $primary-text-color; -+ color: $black; -+} -+ -+button.icon-button { -+ color: $ui-secondary-color; -+} -+ -+button.icon-button i.fa-retweet { -+ background-image: url('data:image/svg+xml;utf8,'); -+} -+ -+button.icon-button.active i.fa-retweet { -+ background-image: url('data:image/svg+xml;utf8,'); -+ box-shadow: 0px 0px 5px pink, inset 0px 0px 5px pink; -+ border-radius: 20px; -+} -+ -diff --git a/app/javascript/flavours/glitch/styles/night/variables.scss b/app/javascript/flavours/glitch/styles/night/variables.scss -new file mode 100644 -index 000000000..46f055a8f ---- /dev/null -+++ b/app/javascript/flavours/glitch/styles/night/variables.scss -@@ -0,0 +1,41 @@ -+// Dependent colors -+$black: #000000; -+$white: #ffffff; -+ -+$classic-base-color: #c8b7c1; -+$classic-primary-color: #4C3A45; -+$classic-secondary-color: #2C2028; -+$classic-highlight-color: #bca9b4; -+ -+$ui-base-color: $classic-secondary-color !default; -+$ui-base-lighter-color: darken($ui-base-color, 57%); -+$ui-highlight-color: $classic-highlight-color !default; -+$ui-primary-color: $classic-primary-color !default; -+$ui-secondary-color: $classic-base-color !default; -+ -+$primary-text-color: #e9e2e6 !default; -+$darker-text-color: $classic-base-color !default; -+$dark-text-color: #a68c9c; -+$action-button-color: #606984; -+ -+$success-green: #80b38b; -+$error-red: #b38080; -+$warning-red: #b38c80; -+ -+$base-overlay-background: $black !default; -+ -+$inverted-text-color: #291822 !default; -+$lighter-text-color: $classic-base-color !default; -+$light-text-color: #6A5160; -+ -+$account-background-color: #4C3A45 !default; -+ -+@function darken($color, $amount) { -+ @return hsl(hue($color), saturation($color), lightness($color) + $amount); -+} -+ -+@function lighten($color, $amount) { -+ @return hsl(hue($color), saturation($color), lightness($color) - $amount); -+} -+ -+//$emojis-requiring-inversion: 'chains'; -diff --git a/app/javascript/skins/glitch/dark/common.scss b/app/javascript/skins/glitch/dark/common.scss -new file mode 100644 -index 000000000..8713d0b02 ---- /dev/null -+++ b/app/javascript/skins/glitch/dark/common.scss -@@ -0,0 +1 @@ -+@import 'flavours/glitch/styles/dark'; -diff --git a/app/javascript/skins/glitch/dark/names.yml b/app/javascript/skins/glitch/dark/names.yml -new file mode 100644 -index 000000000..c35d5b526 ---- /dev/null -+++ b/app/javascript/skins/glitch/dark/names.yml -@@ -0,0 +1,4 @@ -+en: -+ skins: -+ glitch: -+ dark: Dark -diff --git a/app/javascript/skins/glitch/hacker/common.scss b/app/javascript/skins/glitch/hacker/common.scss -new file mode 100644 -index 000000000..90fdc86b1 ---- /dev/null -+++ b/app/javascript/skins/glitch/hacker/common.scss -@@ -0,0 +1 @@ -+@import 'flavours/glitch/styles/hacker'; -diff --git a/app/javascript/skins/glitch/hacker/names.yml b/app/javascript/skins/glitch/hacker/names.yml -new file mode 100644 -index 000000000..9fa2158ab ---- /dev/null -+++ b/app/javascript/skins/glitch/hacker/names.yml -@@ -0,0 +1,4 @@ -+en: -+ skins: -+ glitch: -+ hacker: Hacker -diff --git a/app/javascript/skins/glitch/night/common.scss b/app/javascript/skins/glitch/night/common.scss -new file mode 100644 -index 000000000..58de50727 ---- /dev/null -+++ b/app/javascript/skins/glitch/night/common.scss -@@ -0,0 +1 @@ -+@import 'flavours/glitch/styles/night'; -diff --git a/app/javascript/skins/glitch/night/names.yml b/app/javascript/skins/glitch/night/names.yml -new file mode 100644 -index 000000000..b0e968ec9 ---- /dev/null -+++ b/app/javascript/skins/glitch/night/names.yml -@@ -0,0 +1,4 @@ -+en: -+ skins: -+ glitch: -+ night: Night --- -GitLab - diff --git a/public/snow.js b/public/snow.js new file mode 100644 index 000000000..ab1d2d4f3 --- /dev/null +++ b/public/snow.js @@ -0,0 +1,56 @@ +(function(){ + var canvas = document.getElementById("snow"); + var ctx = canvas.getContext("2d"); + var flakeArray = []; + + canvas.style.pointerEvents = "none"; + canvas.style.position = "fixed"; + canvas.style.top = 0; + canvas.style.left = 0; + canvas.style.width = "100vw"; + canvas.style.height = "100vh"; + canvas.style.zIndex = 1; + canvas.style.userSelect = "none"; + + function canvasResize(){ + canvas.height = canvas.offsetHeight; + canvas.width = canvas.offsetWidth; + } + canvasResize(); + + window.onresize = function() { + canvasResize(); + }; + + var MyMath = Math; + + setInterval(function() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.beginPath(); + + var random = MyMath.random(); + var distance = .05 + .95 * random; + + flake = {}; + flake.x = 1.5 * canvas.width * MyMath.random() - .5 * canvas.width; + flake.y = -9; + flake.velX = 2 * distance * (MyMath.random() / 2 + .5); + flake.velY = (4 + 2 * MyMath.random()) * distance; + flake.radius = MyMath.pow(5 * random, 2) / 5; + flake.update = function() { + var t = this; + t.x += t.velX; + t.y += t.velY; + ctx.beginPath(); + ctx.arc(t.x, t.y, t.radius, 0, 2 * MyMath.PI, !1); + ctx.fillStyle = "#FFF"; + ctx.fill() + }; + + flakeArray.push(flake); + + for (b = 0; b < flakeArray.length; b++) { + flakeArray[b].y > canvas.height ? flakeArray.splice(b, 1) : flakeArray[b].update() + } + }, 16); +})();