diff --git a/app/assets/javascripts/initializers/initNotifications.js b/app/assets/javascripts/initializers/initNotifications.js
index 0c4da187c..b4bf99196 100644
--- a/app/assets/javascripts/initializers/initNotifications.js
+++ b/app/assets/javascripts/initializers/initNotifications.js
@@ -129,23 +129,14 @@ function listenForNotificationsBellClick() {
}
function initFilter() {
- var navFilterMenu = document.getElementsByClassName("notifications-filter__dropdown__menu");
- var navFilterSelect = document.getElementById("notifications-filter__select");
-
- for (var i = 0; i < navFilterMenu.length; i++) {
- document.getElementById("notifications-filter__menu-overlay").classList.remove("showing");
- }
-
- if (navFilterSelect) {
- navFilterSelect.onclick = function(){
- document.getElementById("notifications-filter__menu-overlay").classList.add("showing");
- }
- }
-
- for (var i = 0; i < navFilterMenu.length; i++) {
- navFilterMenu[i].onclick = function(event){
- document.getElementById("notifications-filter__menu-overlay").classList.remove("showing");
- }
+ const notificationsFilterSelect = document.getElementById(
+ 'notifications-filter__select',
+ );
+ const changeNotifications = (event) => {
+ window.location.href = event.target.value;
+ };
+ if (notificationsFilterSelect) {
+ notificationsFilterSelect.addEventListener('change', changeNotifications);
}
}
diff --git a/app/assets/stylesheets/components/forms.scss b/app/assets/stylesheets/components/forms.scss
index ec47b5d97..626c2b3fd 100644
--- a/app/assets/stylesheets/components/forms.scss
+++ b/app/assets/stylesheets/components/forms.scss
@@ -114,7 +114,7 @@
// Selects
.crayons-select {
line-height: var(--lh-base);
- padding: 0.5em;
+ padding: calc(0.5em - var(--border-width)) 0.5em;
padding-right: var(--su-7);
font-family: inherit;
font-size: var(--fs-base);
diff --git a/app/assets/stylesheets/components/navigation.scss b/app/assets/stylesheets/components/navigation.scss
index a2cad414b..70ba03aab 100644
--- a/app/assets/stylesheets/components/navigation.scss
+++ b/app/assets/stylesheets/components/navigation.scss
@@ -117,48 +117,3 @@
}
}
}
-
-.crayons-tabs {
- display: flex;
-
- .crayons-link {
- padding: 0 0.5em;
- position: relative;
- display: inline-block;
-
- &--current {
- background: transparent;
-
- &::after {
- position: absolute;
- left: 0.5em;
- right: 0.5em;
- bottom: -2px;
- height: 2px;
- content: '';
- background-color: var(--accent-brand);
- }
- }
- }
-
- &--item {
- padding: var(--su-3);
- text-align: center;
- width: 100%;
-
- &--current {
- border-bottom: 4px solid var(--accent-brand);
-
- .crayons-tabs__label {
- color: var(--link-color);
- font-size: var(--fs-base);
- font-weight: var(--fw-bold);
- }
- }
-
- &:hover,
- &:focus {
- background-color: var(--base-10);
- }
- }
-}
diff --git a/app/assets/stylesheets/components/tabs.scss b/app/assets/stylesheets/components/tabs.scss
new file mode 100644
index 000000000..a53ddd497
--- /dev/null
+++ b/app/assets/stylesheets/components/tabs.scss
@@ -0,0 +1,136 @@
+@import '../config/import';
+
+.crayons-tabs {
+ // Setup
+ --border-width: 3px;
+ --tab-vertical-padding: var(--su-3);
+ --tab-horizontal-padding: var(--su-2);
+ --font-size: var(--fs-base);
+ display: flex;
+
+ @media (min-width: $breakpoint-s) {
+ --tab-vertical-padding: var(--su-2);
+ }
+
+ &--scrollable {
+ overflow-y: auto;
+ flex-wrap: nowrap;
+ -webkit-overflow-scrolling: touch;
+ }
+
+ &__item {
+ padding: var(--tab-vertical-padding) var(--tab-horizontal-padding);
+ display: inline-block;
+ text-align: center;
+ outline: none;
+ font-size: var(--font-size);
+ line-height: var(--su-6);
+ text-decoration: none;
+ cursor: pointer;
+ color: var(--tab-color);
+ position: relative;
+ border-radius: var(--radius);
+ transition: all var(--transition-props);
+ width: 100%;
+
+ @media (min-width: $breakpoint-s) {
+ width: auto;
+ margin: 0 var(--su-1);
+ }
+
+ &::after {
+ display: none;
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ height: var(--border-width);
+ content: '';
+ background: var(--tab-bg-current);
+ border-radius: var(--radius);
+ transition: all var(--transition-props);
+
+ @media (min-width: $breakpoint-s) {
+ left: var(--tab-horizontal-padding);
+ right: var(--tab-horizontal-padding);
+ }
+ }
+
+ &:hover {
+ background: var(--tab-bg-hover);
+ color: var(--tab-color-hover);
+
+ &:after {
+ left: 0;
+ right: 0;
+ border-radius: 0 0 var(--radius) var(--radius);
+ }
+ }
+
+ &--current {
+ font-weight: var(--fw-medium);
+ color: var(--tab-color-current);
+
+ &::after {
+ display: block;
+ }
+ }
+ }
+
+ &--pills {
+ .crayons-tabs__item--current {
+ background: var(--tab-bg-current);
+ color: var(--tab-pill-color-current);
+
+ &::after {
+ display: none;
+ }
+ }
+ }
+
+ &--stacked {
+ flex-direction: column;
+ @media (min-width: $breakpoint-s) {
+ flex-direction: row;
+ }
+
+ .crayons-tabs__item {
+ margin: 0;
+
+ @media (min-width: $breakpoint-s) {
+ margin: 0 var(--su-1);
+ }
+ }
+ }
+
+ &--wrapped {
+ flex-wrap: wrap;
+
+ .crayons-tabs__item {
+ margin: var(--su-1);
+ width: auto;
+ }
+ }
+
+ &--muted {
+ .crayons-tabs__item {
+ color: var(--tab-muted-color);
+
+ &:hover {
+ color: var(--tab-muted-color-hover);
+ background: var(--tab-muted-bg-hover);
+ }
+
+ &:after {
+ background: var(--tab-muted-bg-current);
+ }
+ }
+
+ &.crayons-tabs--pills {
+ .crayons-tabs__item--current {
+ color: var(--tab-muted-color-current);
+ background: var(--tab-muted-bg-current);
+ }
+ }
+ }
+}
diff --git a/app/assets/stylesheets/config/_colors.scss b/app/assets/stylesheets/config/_colors.scss
index 741cfeb09..3dcf8dead 100644
--- a/app/assets/stylesheets/config/_colors.scss
+++ b/app/assets/stylesheets/config/_colors.scss
@@ -190,6 +190,19 @@
--indicator-default-bg: var(--button-secondary-bg);
--indicator-default-color: var(--button-secondary-color);
+ // Tabs
+ --tab-color: var(--base-80);
+ --tab-color-hover: var(--accent-brand);
+ --tab-color-current: var(--base-100);
+ --tab-bg-hover: var(--accent-brand-a10);
+ --tab-bg-current: var(--accent-brand);
+ --tab-muted-color: var(--base-80);
+ --tab-muted-color-hover: var(--base-90);
+ --tab-muted-color-current: var(--base-100);
+ --tab-muted-bg-hover: var(--base-a10);
+ --tab-muted-bg-current: var(--base-20);
+ --tab-pill-color-current: var(--base-inverted);
+
// Tags
--tag-color: var(--base-70);
--tag-color-hover: var(--base-100);
diff --git a/app/assets/stylesheets/crayons.scss b/app/assets/stylesheets/crayons.scss
index 4a6c49e04..01b05590a 100644
--- a/app/assets/stylesheets/crayons.scss
+++ b/app/assets/stylesheets/crayons.scss
@@ -20,4 +20,5 @@
@import 'components/notices';
@import 'components/snackbars';
@import 'components/stories';
+@import 'components/tabs';
@import 'components/tags';
diff --git a/app/assets/stylesheets/notifications.scss b/app/assets/stylesheets/notifications.scss
index f26c1e03b..f349975ca 100644
--- a/app/assets/stylesheets/notifications.scss
+++ b/app/assets/stylesheets/notifications.scss
@@ -432,20 +432,6 @@
}
}
-// Notifications filtering on mobile.
-.notifications-filter__tabs {
- display: none;
-
- // @media screen and (min-width: 950px) {
- // display: none;
- // }
-
- &.showing {
- display: flex;
- }
- background: var(--base-inverted);
-}
-
.notifications-filter__list {
li {
margin-bottom: var(--su-1);
diff --git a/app/assets/stylesheets/themes/hacker.scss b/app/assets/stylesheets/themes/hacker.scss
index 480c87ec3..98c80c103 100644
--- a/app/assets/stylesheets/themes/hacker.scss
+++ b/app/assets/stylesheets/themes/hacker.scss
@@ -180,6 +180,19 @@
--indicator-default-bg: var(--button-secondary-bg);
--indicator-default-color: var(--button-secondary-color);
+ // Tabs
+ --tab-color: var(--base-80);
+ --tab-color-hover: var(--accent-brand);
+ --tab-color-current: var(--base-100);
+ --tab-bg-hover: var(--accent-brand-a10);
+ --tab-bg-current: var(--accent-brand);
+ --tab-muted-color: var(--base-80);
+ --tab-muted-color-hover: var(--base-90);
+ --tab-muted-color-current: var(--base-100);
+ --tab-muted-bg-hover: var(--base-a10);
+ --tab-muted-bg-current: var(--base-20);
+ --tab-pill-color-current: var(--base-inverted);
+
// Tags
--tag-color: var(--base-70);
--tag-color-hover: var(--base-100);
diff --git a/app/assets/stylesheets/themes/minimal.scss b/app/assets/stylesheets/themes/minimal.scss
index b8ec1cebb..7fe73e5f5 100644
--- a/app/assets/stylesheets/themes/minimal.scss
+++ b/app/assets/stylesheets/themes/minimal.scss
@@ -178,6 +178,19 @@
--indicator-default-bg: var(--button-secondary-bg);
--indicator-default-color: var(--button-secondary-color);
+ // Tabs
+ --tab-color: var(--base-80);
+ --tab-color-hover: var(--accent-brand);
+ --tab-color-current: var(--base-100);
+ --tab-bg-hover: var(--accent-brand-a10);
+ --tab-bg-current: var(--accent-brand);
+ --tab-muted-color: var(--base-80);
+ --tab-muted-color-hover: var(--base-90);
+ --tab-muted-color-current: var(--base-100);
+ --tab-muted-bg-hover: var(--base-a10);
+ --tab-muted-bg-current: var(--base-20);
+ --tab-pill-color-current: var(--base-inverted);
+
// Tags
--tag-color: var(--base-70);
--tag-color-hover: var(--base-100);
diff --git a/app/assets/stylesheets/themes/night.scss b/app/assets/stylesheets/themes/night.scss
index 15ac0becd..043c6338d 100644
--- a/app/assets/stylesheets/themes/night.scss
+++ b/app/assets/stylesheets/themes/night.scss
@@ -36,10 +36,10 @@
--base-inverted: #000;
// Accent colors
- --accent-brand: #3b49df;
- --accent-brand-darker: #1827ce;
- --accent-brand-lighter: #8d95f2;
- --accent-brand-a10: #{rgba(#3b49df, 0.1)};
+ --accent-brand: #7b78ff;
+ --accent-brand-darker: #5855f3;
+ --accent-brand-lighter: #9896ff;
+ --accent-brand-a10: #{rgba(#7b78ff, 0.1)};
// Success
--accent-success: #26d9ca;
@@ -104,13 +104,13 @@
--link-bg-current: var(--base-inverted);
// Primary buttons
- --button-primary-bg: var(--accent-success);
- --button-primary-bg-hover: var(--accent-success-darker);
- --button-primary-color: var(--base-0);
+ --button-primary-bg: var(--accent-brand);
+ --button-primary-bg-hover: var(--accent-brand-darker);
+ --button-primary-color: var(--base-inverted);
--button-primary-color-hover: var(--base-inverted);
//-- Inverted
- --button-primary-inverted-bg: var(--accent-success);
- --button-primary-inverted-bg-hover: var(--accent-success-darker);
+ --button-primary-inverted-bg: var(--accent-brand);
+ --button-primary-inverted-bg-hover: var(--accent-brand-darker);
--button-primary-inverted-color: var(--base-0);
--button-primary-inverted-color-hover: var(--base-0);
@@ -180,6 +180,19 @@
--indicator-default-bg: var(--button-secondary-bg);
--indicator-default-color: var(--button-secondary-color);
+ // Tabs
+ --tab-color: var(--base-80);
+ --tab-color-hover: var(--accent-brand-lighter);
+ --tab-color-current: var(--base-100);
+ --tab-bg-hover: var(--accent-brand-a10);
+ --tab-bg-current: var(--accent-brand);
+ --tab-muted-color: var(--base-80);
+ --tab-muted-color-hover: var(--base-90);
+ --tab-muted-color-current: var(--base-100);
+ --tab-muted-bg-hover: var(--base-a10);
+ --tab-muted-bg-current: var(--base-20);
+ --tab-pill-color-current: var(--base-inverted);
+
// Tags
--tag-color: var(--base-70);
--tag-color-hover: var(--base-100);
diff --git a/app/assets/stylesheets/themes/pink.scss b/app/assets/stylesheets/themes/pink.scss
index 76fa78772..e147f766f 100644
--- a/app/assets/stylesheets/themes/pink.scss
+++ b/app/assets/stylesheets/themes/pink.scss
@@ -178,6 +178,19 @@
--indicator-dimmed-bg: var(--base-30);
--indicator-dimmed-color: var(--base-70);
+ // Tabs
+ --tab-color: var(--base-80);
+ --tab-color-hover: var(--accent-brand);
+ --tab-color-current: var(--base-100);
+ --tab-bg-hover: var(--accent-brand-a10);
+ --tab-bg-current: var(--accent-brand);
+ --tab-muted-color: var(--base-80);
+ --tab-muted-color-hover: var(--base-90);
+ --tab-muted-color-current: var(--base-100);
+ --tab-muted-bg-hover: var(--base-a10);
+ --tab-muted-bg-current: var(--base-20);
+ --tab-pill-color-current: var(--base-inverted);
+
// Tags
--tag-color: var(--base-70);
--tag-color-hover: var(--base-100);
diff --git a/app/views/notifications/index.html.erb b/app/views/notifications/index.html.erb
index 16de20f6c..c20a3b8ca 100644
--- a/app/views/notifications/index.html.erb
+++ b/app/views/notifications/index.html.erb
@@ -29,7 +29,7 @@
<% if @organizations.present? %>
- @<%= @user.username %>
+ <%= @user.name %>
- @<%= org.slug %>
+ <%= org.name %>
Use tabs as 2nd level navigation or filtering options.
-Tabs can be created by also using .crayons-link elements but wrapped with extra container .crayons-tabs.
...
<%= ' - ++ Week + Month + Year + Infinity + + ++ ... + + ++ ... + + ++ ... + + ++ ... + + ++ ... + + ++ ... + '.rstrip %>