diff --git a/clientapp/templates.js b/clientapp/templates.js
index bcd9f83..786067d 100644
--- a/clientapp/templates.js
+++ b/clientapp/templates.js
@@ -13,7 +13,7 @@ exports.pages = {};
exports.body = function anonymous(locals) {
var buf = [];
with (locals || {}) {
- buf.push('
Settings
Change Avatar
Drag and drop a new avatar here
Desktop Integration
');
+ buf.push('Settings
Change Avatar
Drag and drop a new avatar here
Desktop Integration
');
}
return buf.join("");
};
diff --git a/clientapp/templates/body.jade b/clientapp/templates/body.jade
index d8b1dab..692c2d9 100644
--- a/clientapp/templates/body.jade
+++ b/clientapp/templates/body.jade
@@ -11,15 +11,18 @@ body
g(transform='scale(0.4)')
path(d='M37.418,34.3c-2.1-2.721-2.622-6.352-1.292-9.604c0.452-1.107,1.104-2.1,1.902-2.951 c-0.753-0.877-1.573-1.697-2.507-2.387l-2.609,1.408c-1.05-0.629-2.194-1.112-3.414-1.421l-0.845-2.833 c-0.75-0.112-1.512-0.188-2.287-0.188c-0.783,0-1.54,0.075-2.288,0.188l-0.851,2.833c-1.215,0.309-2.355,0.792-3.41,1.421 l-2.614-1.408c-1.229,0.912-2.318,2-3.228,3.231l1.404,2.612c-0.628,1.053-1.11,2.193-1.419,3.411l-2.832,0.849 c-0.114,0.75-0.187,1.508-0.187,2.287c0,0.778,0.073,1.537,0.187,2.286l2.832,0.848c0.309,1.22,0.791,2.36,1.419,3.413l-1.404,2.61 c0.909,1.231,1.999,2.321,3.228,3.231l2.614-1.406c1.055,0.628,2.195,1.11,3.41,1.42l0.851,2.832 c0.748,0.114,1.505,0.188,2.288,0.188c0.775,0,1.537-0.074,2.287-0.188l0.845-2.832c1.224-0.31,2.364-0.792,3.414-1.42l0.062,0.033 l2.045-3.02L37.418,34.3z M26.367,36.776c-2.777,0-5.027-2.253-5.027-5.027c0-2.775,2.25-5.028,5.027-5.028 c2.774,0,5.024,2.253,5.024,5.028C31.391,34.523,29.141,36.776,26.367,36.776z')
path(d='M51.762,24.505l-1.125-0.459l-1.451,3.55c-0.814,1.993-2.832,3.054-4.505,2.37l-0.355-0.144 c-1.673-0.686-2.37-2.856-1.558-4.849l1.451-3.551l-1.125-0.46c-2.225,0.608-4.153,2.2-5.092,4.501 c-1.225,2.997-0.422,6.312,1.771,8.436l-2.958,6.812l-2.204,3.249l-0.007,2.281l5.275,2.154l1.593-1.633l0.7-3.861l2.901-6.836 c3.049,0.018,5.947-1.785,7.174-4.779C53.186,28.983,52.924,26.499,51.762,24.505z')
- section#bookmarks
- h1 Rooms
- nav
- input(type="text", class="inline", placeholder="add a room")#joinmuc
- section#roster
- h1 Direct messages
- ul#contactrequests
- nav
- input(type="text", class="inline", placeholder="add a contact")#addcontact
+ div.viewport
+ section#bookmarks
+ h1 Rooms
+ nav
+ input(type="text", class="inline", placeholder="add a room")#joinmuc
+ section#roster
+ h1 Contacts
+ ul#contactrequests
+ nav
+ input(type="text", class="inline", placeholder="add a contact")#addcontact
+ section#kaiwaNotice
+ img(src="/images/logo.png", alt="Kaiwa")
header#topbar
#connectionStatus
p
diff --git a/clientapp/templates/includes/contactListItem.jade b/clientapp/templates/includes/contactListItem.jade
index 252fba3..3059aac 100644
--- a/clientapp/templates/includes/contactListItem.jade
+++ b/clientapp/templates/includes/contactListItem.jade
@@ -3,6 +3,7 @@ li.contact.joined
i.remove.fa.fa-times-circle
i.presence.fa.fa-circle
.user
+ img.avatar
span.name=contact.displayName
span.idleTime=contact.idleSince
.unread=contact.unreadCount
diff --git a/clientapp/templates/includes/mucListItem.jade b/clientapp/templates/includes/mucListItem.jade
index 465cc19..23929cd 100644
--- a/clientapp/templates/includes/mucListItem.jade
+++ b/clientapp/templates/includes/mucListItem.jade
@@ -2,6 +2,5 @@ li.contact
.wrap
i.remove.fa.fa-times-circle
i.join.fa.fa-sign-in
- span.prefix #
.unread=contact.unreadCount
span.name=contact.displayName
diff --git a/clientapp/templates/pages/chat.jade b/clientapp/templates/pages/chat.jade
index dbffdbc..e07f4dd 100644
--- a/clientapp/templates/pages/chat.jade
+++ b/clientapp/templates/pages/chat.jade
@@ -2,7 +2,6 @@ section.page.chat
section.conversation
header
.title
- span.prefix @
span.name
i.user_presence.fa.fa-circle
span.status
@@ -19,7 +18,7 @@ section.page.chat
button.mute Mute
button.unmute Unmute
.chatBox
+ .contactState
form.formwrap
textarea(name='chatInput', type='text', placeholder='Send a message...', autocomplete='off')
button.primary.small.call Call
- .contactState
diff --git a/clientapp/templates/pages/groupchat.jade b/clientapp/templates/pages/groupchat.jade
index 3cc24ab..afac4ea 100644
--- a/clientapp/templates/pages/groupchat.jade
+++ b/clientapp/templates/pages/groupchat.jade
@@ -2,7 +2,6 @@ section.page.chat
section.group.conversation
header.online
.title
- span.prefix #
span.name
i.channel_actions.fa.fa-comments-o
span.status(contenteditable="true", spellcheck="false")
diff --git a/clientapp/templates/pages/settings.jade b/clientapp/templates/pages/settings.jade
index 80acb41..5f20763 100644
--- a/clientapp/templates/pages/settings.jade
+++ b/clientapp/templates/pages/settings.jade
@@ -1,9 +1,5 @@
section.page.main
- svg(version='1.1', xmlns='http://www.w3.org/2000/svg', xmlns:xlink='http://www.w3.org/1999/xlink', viewbox="0 0 30 30", height="30", width="30")
- g(transform='scale(0.5)')
- path(d='M37.418,34.3c-2.1-2.721-2.622-6.352-1.292-9.604c0.452-1.107,1.104-2.1,1.902-2.951 c-0.753-0.877-1.573-1.697-2.507-2.387l-2.609,1.408c-1.05-0.629-2.194-1.112-3.414-1.421l-0.845-2.833 c-0.75-0.112-1.512-0.188-2.287-0.188c-0.783,0-1.54,0.075-2.288,0.188l-0.851,2.833c-1.215,0.309-2.355,0.792-3.41,1.421 l-2.614-1.408c-1.229,0.912-2.318,2-3.228,3.231l1.404,2.612c-0.628,1.053-1.11,2.193-1.419,3.411l-2.832,0.849 c-0.114,0.75-0.187,1.508-0.187,2.287c0,0.778,0.073,1.537,0.187,2.286l2.832,0.848c0.309,1.22,0.791,2.36,1.419,3.413l-1.404,2.61 c0.909,1.231,1.999,2.321,3.228,3.231l2.614-1.406c1.055,0.628,2.195,1.11,3.41,1.42l0.851,2.832 c0.748,0.114,1.505,0.188,2.288,0.188c0.775,0,1.537-0.074,2.287-0.188l0.845-2.832c1.224-0.31,2.364-0.792,3.414-1.42l0.062,0.033 l2.045-3.02L37.418,34.3z M26.367,36.776c-2.777,0-5.027-2.253-5.027-5.027c0-2.775,2.25-5.028,5.027-5.028 c2.774,0,5.024,2.253,5.024,5.028C31.391,34.523,29.141,36.776,26.367,36.776z')
- path(d='M51.762,24.505l-1.125-0.459l-1.451,3.55c-0.814,1.993-2.832,3.054-4.505,2.37l-0.355-0.144 c-1.673-0.686-2.37-2.856-1.558-4.849l1.451-3.551l-1.125-0.46c-2.225,0.608-4.153,2.2-5.092,4.501 c-1.225,2.997-0.422,6.312,1.771,8.436l-2.958,6.812l-2.204,3.249l-0.007,2.281l5.275,2.154l1.593-1.633l0.7-3.861l2.901-6.836 c3.049,0.018,5.947-1.785,7.174-4.779C53.186,28.983,52.924,26.499,51.762,24.505z')
h1#title Settings
div#avatarChanger
diff --git a/clientapp/views/contactListItem.js b/clientapp/views/contactListItem.js
index b936ba3..f49bdd1 100644
--- a/clientapp/views/contactListItem.js
+++ b/clientapp/views/contactListItem.js
@@ -22,6 +22,7 @@ module.exports = HumanView.extend({
displayUnreadCount: '.unread'
},
srcBindings: {
+ avatar: '.avatar'
},
events: {
'click': 'handleClick',
diff --git a/dev_config.json b/dev_config.json
index 1130136..0905c06 100644
--- a/dev_config.json
+++ b/dev_config.json
@@ -14,7 +14,7 @@
"domain": "example.com",
"wss": "wss://example.com:5281/xmpp-websocket/",
"muc": "chat.example.com",
- "startup": "room%40chat.example.com",
+ "startup": "groupchat/room%40chat.example.com",
"admin": "admin"
},
"ldap": {
diff --git a/public/css/_mixins.styl b/public/css/_mixins.styl
index 9bfa9e5..c1bf524 100644
--- a/public/css/_mixins.styl
+++ b/public/css/_mixins.styl
@@ -41,6 +41,7 @@ avatar()
width: 36px
height: 36px
roundall(0.2rem)
+ border-radius: 50%
// this if for the content flash and hardware acceleration bugs in webkit
webkit-transition-fix()
diff --git a/public/css/_variables.styl b/public/css/_variables.styl
index f0a76ca..41bcac9 100644
--- a/public/css/_variables.styl
+++ b/public/css/_variables.styl
@@ -25,7 +25,7 @@ $pink-lighter = #fce8f1
// Greens
-$green = #4C9689
+$green = #41A564
$green-light = lighten($green, 70%)
$green-lighter = lighten($green, 94%)
$green-lighterer = #B2D5C9
@@ -65,25 +65,32 @@ $black = #3D3C40
// Style
-$sidebarTopAndBottomBg = #1A233F
+$topbarBg = #3D486B
+$topbarFg = #fff
+
+$meUsernameColor = #fff
+
+$sidebarTopAndBottomBg = #2B3556
$sidebarOrgaName = #fff
$sidebarBorder = #121A33
-$sidebarBg = #3D486B
-$sidebarText = #ABB6DA
+$sidebarBg = #E5E5E5
+$sidebarText = #565656
+$sidebarSectionTitleColor = #8E8E8E
-$sidebarNames = #C1DCEC
+$sidebarNames = #919191
$sidebarInputBg = $sidebarBg
-$sidebarInputBorder = #626F9C
+$sidebarInputBorder = #BBBBBB
$sidebarInputText = $sidebarNames
-$sidebarSelectionBg = #94B021
-$sidebarSelectionText = #fff
+$sidebarSelectionBg = #AEAEAE
+$sidebarSelectionText = #000
$sidebarUnreadBg = $sidebarSelectionBg
-$sidebarUnreadText = $sidebarSelectionText
+$sidebarUnreadText = #000
-$sidebarHover = $sidebarTopAndBottomBg
+$sidebarHover = $sidebarSelectionBg
+$sidebarHoverText = #fff
$sidebarRequestBg = $sidebarHover
$sidebarRequestBorder = $sidebarHover
@@ -91,8 +98,8 @@ $sidebarRequestBorder = $sidebarHover
$sidebarStatusText = $sidebarNames
$sidebarStatusBorder = $sidebarInputBorder
-$settingsBg = $sidebarBg
-$settingsText = #fff
+$settingsBg = transparent
+$settingsText = #B5B5B5
$settingsHoverBg = #fff
$settingsHoverText = $sidebarSelectionBg
diff --git a/public/css/otalk.css b/public/css/client.css
similarity index 93%
rename from public/css/otalk.css
rename to public/css/client.css
index 67ec4f9..1db9ce0 100644
--- a/public/css/otalk.css
+++ b/public/css/client.css
@@ -188,7 +188,7 @@ a:active {
position: absolute;
top: 0px;
right: 0px;
- left: 220px;
+ left: 230px;
height: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
@@ -260,7 +260,7 @@ input[type=radio]:disabled {
box-shadow: 0 0 5px #fdcad3;
}
.valid label {
- color: #4c9689;
+ color: #41a564;
}
.valid input[type=text],
.valid input[type=email],
@@ -270,9 +270,9 @@ input[type=radio]:disabled {
.valid input[type=url],
.valid input[type=file],
.valid textarea {
- background: #f4f9f8;
- border: 1px solid #c6e2dd;
- color: #c6e2dd;
+ background: #f3faf6;
+ border: 1px solid #c3e7d0;
+ color: #c3e7d0;
}
.valid input[type=text]:focus,
.valid input[type=email]:focus,
@@ -282,8 +282,8 @@ input[type=radio]:disabled {
.valid input[type=url]:focus,
.valid input[type=file]:focus,
.valid textarea:focus {
- border: 1px solid #c6e2dd;
- box-shadow: 0 0 5px #c6e2dd;
+ border: 1px solid #c3e7d0;
+ box-shadow: 0 0 5px #c3e7d0;
}
input[type=text],
input[type=email],
@@ -364,7 +364,7 @@ label {
color: #fdcad3;
}
.has-icon .ss-icon.ss-check {
- color: #c6e2dd;
+ color: #c3e7d0;
}
.has-icon .ss-icon.ss-search {
color: #e0e0e0;
@@ -432,15 +432,15 @@ button.secondary:hover {
}
.button.primary,
button.primary {
- background: #4c9689;
+ background: #41a564;
}
.button.primary:hover:not(:disabled),
button.primary:hover:not(:disabled) {
- background: #44877b;
+ background: #3b955a;
}
.button.primary:disabled,
button.primary:disabled {
- background: #c6e2dd;
+ background: #c3e7d0;
}
.button.secondary,
button.secondary {
@@ -517,13 +517,10 @@ button.secondary:hover:not(:disabled) {
top: 0px;
bottom: 0px;
left: 0px;
- width: 220px;
- background-color: #3d486b;
- color: #abb6da;
- border-right: 1px solid #121a33;
+ width: 230px;
+ background-color: #e5e5e5;
+ color: #565656;
z-index: 300;
- overflow-y: auto;
- overflow-x: hidden;
-webkit-backface-visibility: hidden;
-webkit-touch-callout: none;
-webkit-user-select: none;
@@ -533,24 +530,24 @@ button.secondary:hover:not(:disabled) {
user-select: none;
}
#menu #organization {
- width: 220px;
+ width: 230px;
height: 42px;
- margin-bottom: 10px;
+ background: #2b3556;
}
#menu #organization #orga_name {
color: #fff;
font-size: 17px;
font-weight: 900;
- line-height: 53px;
+ line-height: 42px;
vertical-align: middle;
margin-left: 20px;
}
#menu #organization .settings {
position: relative;
- height: 30px;
- left: 0px;
- background-color: #3d486b;
- color: #fff;
+ height: 28px;
+ left: 5px;
+ background-color: transparent;
+ color: #b5b5b5;
transition: none;
border: 0;
}
@@ -560,13 +557,24 @@ button.secondary:hover:not(:disabled) {
left: 3px;
margin: 0px;
margin-top: -13px;
- fill: #fff;
+ fill: #b5b5b5;
}
#menu #organization .settings:hover svg {
- fill: #94b021;
+ fill: #aeaeae;
}
#menu #organization .settings.active svg {
- fill: #94b021;
+ fill: #aeaeae;
+}
+#menu .viewport {
+ position: absolute;
+ top: 42px;
+ bottom: 22px;
+ left: 0;
+ right: 0;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding-top: 20px;
+ padding-bottom: 10px;
}
#menu .main {
margin: 10px 0 0 0;
@@ -590,14 +598,15 @@ button.secondary:hover:not(:disabled) {
position: relative;
}
#menu h1 {
- font-size: 14px;
+ font-size: 15px;
margin: 0;
padding: 4px 20px;
text-transform: uppercase;
+ margin-bottom: 7px;
+ color: #8e8e8e;
}
#roster,
#bookmarks {
- margin-right: 20px;
margin-bottom: 25px;
}
#roster #contactrequests,
@@ -612,9 +621,9 @@ button.secondary:hover:not(:disabled) {
margin-left: 20px;
margin-bottom: 10px;
padding-bottom: 4px;
- background: #1a233f;
+ background: #aeaeae;
border-radius: 0.25rem;
- border: 2px solid #1a233f;
+ border: 2px solid #aeaeae;
}
#roster #contactrequests li .response,
#bookmarks #contactrequests li .response {
@@ -642,30 +651,29 @@ button.secondary:hover:not(:disabled) {
width: 178px;
height: 25px;
font-size: 12px;
- background-color: #3d486b;
+ background-color: #e5e5e5;
border-radius: 0.25rem;
- border: 1px solid #626f9c;
- color: #c1dcec;
+ border: 1px solid #bbb;
+ color: #919191;
}
#roster li,
#bookmarks li {
list-style-type: none;
- padding: 4px 10px;
- margin: 0px 0px 0px 10px;
- border-radius: 0.25rem;
+ padding: 3px 10px;
+ padding-right: 15px;
position: relative;
- height: 25px;
font-size: 14px;
cursor: pointer;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
- color: #c1dcec;
+ color: #919191;
}
#roster li:hover,
#bookmarks li:hover {
- background: #1a233f;
+ background: #aeaeae;
+ color: #fff;
}
#roster li.joined:hover:not(.hasUnread) .remove,
#bookmarks li.joined:hover:not(.hasUnread) .remove {
@@ -680,7 +688,7 @@ button.secondary:hover:not(:disabled) {
#roster li.hasUnread .prefix,
#bookmarks li.hasUnread .prefix {
font-weight: 900;
- color: #fff;
+ color: #000;
}
#roster li:not(.activeContact).offline .presence,
#bookmarks li:not(.activeContact).offline .presence,
@@ -704,14 +712,7 @@ button.secondary:hover:not(:disabled) {
#bookmarks li.activeContact,
#roster li.offline.activeContact,
#bookmarks li.offline.activeContact {
- background: #94b021;
-}
-#roster li.activeContact .prefix,
-#bookmarks li.activeContact .prefix,
-#roster li.offline.activeContact .prefix,
-#bookmarks li.offline.activeContact .prefix {
- color: #b2d5c9;
- opacity: 1;
+ background: #aeaeae;
}
#roster li.activeContact:not(.dnd):not(.away):not(.online) .presence,
#bookmarks li.activeContact:not(.dnd):not(.away):not(.online) .presence,
@@ -728,17 +729,17 @@ button.secondary:hover:not(:disabled) {
#bookmarks li.activeContact .join,
#roster li.offline.activeContact .join,
#bookmarks li.offline.activeContact .join {
- color: #fff;
+ color: #000;
}
#roster li.activeContact .name,
#bookmarks li.activeContact .name,
#roster li.offline.activeContact .name,
#bookmarks li.offline.activeContact .name {
- color: #fff;
+ color: #000;
}
#roster li:not(.activeContact).online .presence,
#bookmarks li:not(.activeContact).online .presence {
- color: #4c9689;
+ color: #41a564;
opacity: 1;
}
#roster li.online .name,
@@ -775,7 +776,7 @@ button.secondary:hover:not(:disabled) {
}
#roster li.idle .name,
#bookmarks li.idle .name {
- color: #c1dcec;
+ color: #919191;
font-style: italic;
}
#roster li .presence,
@@ -784,18 +785,18 @@ button.secondary:hover:not(:disabled) {
display: inline-block;
margin-top: -10px;
vertical-align: middle;
- opacity: 0.5;
+ position: absolute;
+ right: 28px;
+ top: 21px;
}
#roster li .user,
#bookmarks li .user {
display: inline-block;
- width: 120px;
- line-height: 100%;
+ width: 170px;
overflow: hidden;
text-overflow: ellipsis;
- height: 17px;
+ height: 20px;
font-style: italic;
- text-shadow: 0px 1px 1px rgba(0,0,0,0.25);
}
#roster li .status,
#bookmarks li .status {
@@ -811,22 +812,36 @@ button.secondary:hover:not(:disabled) {
font-size: 12px;
color: #594a57;
}
+#roster li .avatar,
+#bookmarks li .avatar {
+ width: 16px;
+ height: 16px;
+ -moz-border-radius: 0.2rem;
+ -webkit-border-radius: 0.2rem;
+ -khtml-border-radius: 0.2rem;
+ -o-border-radius: 0.2rem;
+ -border-radius: 0.2rem;
+ border-radius: 0.2rem;
+ border-radius: 50%;
+ margin: 0;
+ padding: 0;
+ margin-right: 5px;
+ margin-top: 4px;
+}
#roster li .name,
#bookmarks li .name {
width: 100%;
- line-height: 100%;
overflow: hidden;
text-overflow: ellipsis;
- height: 17px;
- text-shadow: 0px 1px 1px rgba(0,0,0,0.3);
- position: absolute;
- left: 22px;
max-width: 140px;
+ line-height: 23px;
+ height: 23px;
+ position: absolute;
}
#roster li .unread,
#bookmarks li .unread {
display: none;
- color: #fff;
+ color: #000;
height: 16px;
width: 18px;
-moz-border-radius: 5px;
@@ -837,12 +852,12 @@ button.secondary:hover:not(:disabled) {
border-radius: 5px;
position: absolute;
padding-top: 2px;
- right: 5px;
- top: 3px;
+ right: 15px;
+ top: 6px;
font-size: 10px;
font-weight: 700;
text-align: center;
- background: #94b021;
+ background: #aeaeae;
}
#roster li .unread:not(:empty),
#bookmarks li .unread:not(:empty) {
@@ -853,21 +868,13 @@ button.secondary:hover:not(:disabled) {
#roster li .join,
#bookmarks li .join {
position: absolute;
- right: 7px;
- top: 5px;
+ right: 10px;
+ top: 8px;
font-size: 14px;
display: inline-block;
font-family: FontAwesome;
visibility: hidden;
}
-#roster li .prefix,
-#bookmarks li .prefix {
- font-weight: 300;
- opacity: 0.5;
- position: relative;
- left: -15px;
- text-shadow: 0px 1px 1px rgba(0,0,0,0.25);
-}
#roster li button,
#bookmarks li button {
margin: -15px 0px 0px 5px;
@@ -889,10 +896,24 @@ button.secondary:hover:not(:disabled) {
display: inline-block;
}
#roster .wrap {
- padding-left: 0px;
+ padding-left: 14px;
+ height: 23px;
}
#bookmarks .wrap {
padding-left: 14px;
+ height: 23px;
+}
+#kaiwaNotice {
+ position: absolute;
+ bottom: 5px;
+ left: 50%;
+ width: 50px;
+ margin-left: -25px;
+}
+#kaiwaNotice img {
+ width: 100%;
+ display: block;
+ opacity: 0.4;
}
@-moz-keyframes pulsate {
0% {
@@ -964,9 +985,9 @@ button.secondary:hover:not(:disabled) {
position: fixed;
top: 0px;
right: 0px;
- left: 220px;
+ left: 230px;
right: 200px;
- height: 55px;
+ height: 42px;
z-index: 101;
}
.conversation header .title {
@@ -975,7 +996,7 @@ button.secondary:hover:not(:disabled) {
top: 0px;
white-space: nowrap;
display: inline-block;
- height: 53px;
+ height: 42px;
}
.conversation header .prefix,
.conversation header .name,
@@ -988,13 +1009,13 @@ button.secondary:hover:not(:disabled) {
text-rendering: optimizelegibility;
top: 0px;
vertical-align: middle;
+ line-height: 42px;
}
.conversation header .prefix {
color: #9e9ea6;
font-size: 22px;
font-weight: 500;
margin-left: 25px;
- line-height: 53px;
cursor: default;
}
.conversation header .name {
@@ -1002,15 +1023,14 @@ button.secondary:hover:not(:disabled) {
font-weight: 900;
overflow: hidden;
text-overflow: ellipsis;
- padding-left: 3px;
- line-height: 53px;
+ padding-left: 20px;
cursor: default;
+ color: #fff;
}
.conversation header .user_presence,
.conversation header .channel_actions {
color: #9e9ea6;
padding-left: 8px;
- line-height: 53px;
cursor: default;
}
.conversation header .user_presence {
@@ -1018,7 +1038,7 @@ button.secondary:hover:not(:disabled) {
font-size: 12px;
}
.conversation header .user_presence.online {
- color: #4c9689;
+ color: #41a564;
opacity: 1;
}
.conversation header .user_presence.offline {
@@ -1053,7 +1073,6 @@ button.secondary:hover:not(:disabled) {
font-size: 16px;
line-height: 18px;
margin-left: 15px;
- padding-top: 5px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -1154,8 +1173,7 @@ button.secondary:hover:not(:disabled) {
bottom: 0px;
position: fixed;
right: 0px;
- left: 221px;
- height: 4rem;
+ left: 230px;
z-index: 302;
transition: none;
-webkit-transition: none;
@@ -1164,7 +1182,7 @@ button.secondary:hover:not(:disabled) {
display: none;
position: fixed;
left: 245px;
- bottom: 64px;
+ bottom: 46px;
border: 2px solid #ddd;
border-bottom: 0;
border-radius: 0.25rem 0.25rem 0 0;
@@ -1198,30 +1216,24 @@ button.secondary:hover:not(:disabled) {
transition: none;
-webkit-transition: none;
position: relative;
- height: 38px;
- left: 24px;
- margin-right: 50px;
}
.conversation .chatBox textarea {
display: inline-block;
vertical-align: middle;
background: none repeat scroll 0% 0% padding-box #fff;
font-size: 13px;
- border-width: 2px;
- border-style: solid;
- border-color: #e0e0e0;
- border-image: none;
- border-radius: 0px 0.2rem 0.2rem 0px;
+ border: 0;
+ border-top: 2px solid #e0e0e0;
+ border-radius: 0;
font-family: "Lato", sans-serif;
margin: 0;
color: #3d3c40;
overflow-y: auto;
box-shadow: none;
outline: 0px none;
- position: absolute;
bottom: 0px;
- height: 38px;
- padding: 9px 5px 9px 8px;
+ height: 44px;
+ padding: 13px 24px;
max-height: 102px;
resize: none !important;
}
@@ -1249,8 +1261,8 @@ button.secondary:hover:not(:disabled) {
position: absolute;
top: 0px;
right: 0px;
- bottom: 4rem;
- margin-top: 54px;
+ bottom: 59px;
+ margin-top: 43px;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
@@ -1261,14 +1273,13 @@ button.secondary:hover:not(:disabled) {
display: block;
background: none repeat scroll 0% 0% #fff;
font-size: 1rem;
- color: #555459;
- font-weight: 900;
- text-align: center;
+ color: #babbbf;
+ text-align: right;
cursor: default;
clear: both;
position: relative;
line-height: 1.2rem;
- margin: 1.5rem 0px;
+ margin: 10px 0 30px;
padding: 0;
min-height: 0;
}
@@ -1278,14 +1289,13 @@ button.secondary:hover:not(:disabled) {
top: 0.6rem;
margin: 0px;
border-width: 1px 0px 0px 0px;
- border-style: solid none;
+ border-style: dotted none;
border-color: #ddd;
}
.messages li.day_divider .day_divider_name {
background: none repeat scroll 0% 0% #fff;
text-transform: capitalize;
- text-align: center;
- padding: 0px 1rem;
+ padding-left: 1rem;
display: inline-block;
margin: 0px auto;
position: relative;
@@ -1315,6 +1325,7 @@ button.secondary:hover:not(:disabled) {
-o-border-radius: 0.2rem;
-border-radius: 0.2rem;
border-radius: 0.2rem;
+ border-radius: 50%;
}
.messages li .messageAvatar .name {
text-indent: -9999em;
@@ -1349,15 +1360,15 @@ button.secondary:hover:not(:disabled) {
padding: 0px 0px 12px 15px;
width: 99%;
vertical-align: top;
+ position: relative;
}
.messages .messageWrapper .message_header .name {
display: inline-block;
margin-right: 0.25rem;
- font-weight: 900;
- font-size: 15px;
- color: #3d3c40;
- line-height: 22px;
- cursor: pointer;
+ font-size: 12px;
+ line-height: 16px;
+ color: #9e9ea6;
+ font-weight: bold;
}
.messages .messageWrapper .message_header .name:empty {
margin-right: 0;
@@ -1365,7 +1376,7 @@ button.secondary:hover:not(:disabled) {
.messages .messageWrapper .message_header .nickname {
display: inline-block;
font-weight: 500;
- font-size: 14px;
+ font-size: 12px;
color: #9e9ea6;
line-height: 22px;
cursor: pointer;
@@ -1383,13 +1394,15 @@ button.secondary:hover:not(:disabled) {
width: 60px;
line-height: 22px;
text-transform: uppercase;
- cursor: pointer;
+ text-aligne: right;
+ position: absolute;
+ right: 0;
}
.messages .message {
font-size: 15px;
- line-height: 22px;
+ line-height: 20px;
color: #3d3c40;
- margin: 0px 0px 2px 0px;
+ margin: 0;
display: block;
min-width: 20px;
width: 100%;
@@ -1471,11 +1484,13 @@ button.secondary:hover:not(:disabled) {
}
#members_toggle {
position: absolute;
- top: 60px;
- right: 20px;
+ top: 50px;
+ right: 27px;
cursor: pointer;
color: #9e9ea6;
font-size: 16px;
+ background: #fff;
+ padding: 5px;
}
#members_toggle:hover {
color: #439fe0;
@@ -1541,8 +1556,8 @@ button.secondary:hover:not(:disabled) {
}
.groupRoster li.online:before,
.groupRoster li.chat:before {
- background: #4c9689;
- border-color: #4c9689;
+ background: #41a564;
+ border-color: #41a564;
}
.groupRoster li.online:not(:hover) .name,
.groupRoster li.chat:not(:hover) .name {
@@ -1600,24 +1615,12 @@ button.secondary:hover:not(:disabled) {
.embed a.source {
display: none;
}
-.main svg {
- position: absolute;
- top: 24px;
- left: 16px;
- margin: 0px;
- margin-top: -13px;
- fill: #9e9ea6;
- z-index: 101;
-}
.main h1 {
- color: #555459;
- padding: 0;
+ color: #fff;
+ padding: 6px 12px;
margin: 0;
- position: fixed;
- top: 14px;
- left: 266px;
- right: 200px;
z-index: 101;
+ position: fixed;
}
.main #ldapSettings {
display: none;
@@ -1681,7 +1684,7 @@ button.secondary:hover:not(:disabled) {
.main > div #ldapUsers .fa-plus:hover,
.main > div #ldapUsers .fa-minus:hover,
.main > div #ldapUsers .delete:hover {
- color: #94b021;
+ color: #aeaeae;
}
.main > div #ldapUsers .fa-plus.meIsAdmin,
.main > div #ldapUsers .fa-minus.meIsAdmin,
@@ -1734,9 +1737,6 @@ button.secondary:hover:not(:disabled) {
.logout {
margin-right: 5px;
}
-.aux {
- background: #fafafb;
-}
.aux header {
margin-top: 8%;
text-align: center;
@@ -1941,7 +1941,6 @@ rgba(0,0,0,0.7)
margin: 0;
}
#topbar.connected {
- background-color: #f7f7f7;
z-index: 100;
}
#topbar.connected #connectionStatus {
@@ -1951,9 +1950,9 @@ rgba(0,0,0,0.7)
position: fixed;
right: 0px;
top: 0px;
- height: 55px;
+ height: 42px;
width: 100%;
- background-color: #8899ce;
+ background-color: #3d486b;
z-index: 102;
-webkit-touch-callout: none;
-webkit-user-select: none;
@@ -1965,7 +1964,7 @@ rgba(0,0,0,0.7)
}
#topbar #connectionStatus {
width: 340px;
- margin: 9px auto;
+ margin: 2px auto;
background-color: transparent;
}
#topbar #connectionStatus p {
@@ -1986,7 +1985,7 @@ rgba(0,0,0,0.7)
display: none;
position: fixed;
right: 0;
- padding: 8px 5px 5px 5px;
+ padding: 1px 0px 5px 5px;
width: 175px;
}
#topbar .avatar {
@@ -1997,6 +1996,7 @@ rgba(0,0,0,0.7)
background-color: transparent;
vertical-align: middle;
margin: 3px 0.5rem 0px 0px;
+ border-radius: 50%;
}
#topbar .name,
#topbar .status {
@@ -2007,19 +2007,18 @@ rgba(0,0,0,0.7)
text-align: right;
}
#topbar .name {
- color: #555459;
- font-size: 17px;
+ color: #fff;
+ font-size: 14px;
font-weight: 900;
+ margin-top: 3px;
}
#topbar .status {
color: #9e9ea6;
font-weight: normal;
- font-size: 14px;
- line-height: 14px;
+ font-size: 12px;
border-width: 0px;
margin: 0px;
padding: 0px;
- line-height: 18px;
height: 18px;
white-space: nowrap;
transition: all 0.25s;
diff --git a/public/css/otalk.styl b/public/css/client.styl
similarity index 100%
rename from public/css/otalk.styl
rename to public/css/client.styl
diff --git a/public/css/components/layout.styl b/public/css/components/layout.styl
index 4843910..97a7bd8 100644
--- a/public/css/components/layout.styl
+++ b/public/css/components/layout.styl
@@ -27,6 +27,6 @@ a
position: absolute
top: 0px
right: 0px
- left: 220px
+ left: 230px
height: 100%
borderbox()
diff --git a/public/css/pages/aux.styl b/public/css/pages/aux.styl
index e7db267..1f57dc3 100644
--- a/public/css/pages/aux.styl
+++ b/public/css/pages/aux.styl
@@ -1,5 +1,4 @@
.aux
- background: lighten($gray-light, 93%)
header
margin-top: 8%
diff --git a/public/css/pages/chat.styl b/public/css/pages/chat.styl
index 4365812..d80d3b7 100644
--- a/public/css/pages/chat.styl
+++ b/public/css/pages/chat.styl
@@ -23,9 +23,9 @@
position: fixed
top: 0px
right: 0px
- left: 220px
+ left: 230px
right: 200px
- height: 55px
+ height: 42px
z-index: 101
.title
@@ -34,7 +34,7 @@
top: 0px
white-space: nowrap
display: inline-block
- height: 53px
+ height: 42px
.prefix, .name, .user_presence, .channel_actions, .status
display: inline-block
@@ -43,13 +43,13 @@
text-rendering: optimizelegibility
top: 0px
vertical-align: middle
+ line-height: 42px
.prefix
color: $gray
font-size: $font-size-h2
font-weight: $font-weight-classic
margin-left: 25px
- line-height: 53px
cursor: default
.name
@@ -57,14 +57,13 @@
font-weight: $font-weight-bolder
overflow: hidden
text-overflow: ellipsis
- padding-left: 3px
- line-height: 53px
+ padding-left: 20px
cursor: default
+ color: $topbarFg
.user_presence, .channel_actions
color: $gray
padding-left: 8px
- line-height: 53px
cursor: default
.user_presence
@@ -106,7 +105,6 @@
font-size: $font-size-h3
line-height: 18px
margin-left: 15px
- padding-top: 5px
white-space: nowrap
overflow: hidden
text-overflow: ellipsis
@@ -194,8 +192,7 @@
bottom: 0px
position: fixed
right: 0px
- left: 221px
- height: 4rem
+ left: 230px
z-index: 302
transition: none
-webkit-transition: none
@@ -204,7 +201,7 @@
display: none
position: fixed
left: 245px
- bottom: 64px
+ bottom: 46px
border: 2px solid #ddd
border-bottom: 0
border-radius: 0.25rem 0.25rem 0 0
@@ -235,30 +232,24 @@
transition: none
-webkit-transition: none
position: relative
- height:38px
- left: 24px
- margin-right: 50px
textarea
display: inline-block
vertical-align: middle
background: none repeat scroll 0% 0% padding-box #fff
font-size: 13px
- border-width: 2px
- border-style: solid
- border-color: $gray-lighter
- border-image: none
- border-radius: 0px 0.2rem 0.2rem 0px
+ border: 0
+ border-top: 2px solid $gray-lighter
+ border-radius: 0
font-family: "Lato",sans-serif
margin: 0
color: #3D3C40
overflow-y: auto
box-shadow: none
outline: 0px none
- position: absolute
bottom: 0px
- height: 38px
- padding: 9px 5px 9px 8px
+ height: 44px;
+ padding: 13px 24px
max-height: 102px
resize: none !important
@@ -285,8 +276,8 @@
position: absolute
top: 0px
right: 0px
- bottom: 4rem
- margin-top: 54px
+ bottom: 59px
+ margin-top: 43px
width: 100%
borderbox()
-webkit-overflow-scrolling: touch
@@ -295,14 +286,13 @@
display: block
background: none repeat scroll 0% 0% #fff
font-size: 1rem
- color: #555459
- font-weight: 900
- text-align: center
+ color: $gray-light
+ text-align: right
cursor: default
clear: both
position: relative
line-height: 1.2rem
- margin: 1.5rem 0px
+ margin: 10px 0 30px
padding: 0
min-height: 0
@@ -312,14 +302,13 @@
top: 0.6rem
margin: 0px
border-width: 1px 0px 0px 0px
- border-style: solid none
+ border-style: dotted none
border-color: #ddd
.day_divider_name
background: none repeat scroll 0% 0% #fff
text-transform: capitalize
- text-align: center
- padding: 0px 1rem
+ padding-left: 1rem
display: inline-block
margin: 0px auto
position: relative
@@ -376,24 +365,24 @@
padding: 0px 0px 12px 15px
width: 99%
vertical-align: top
+ position: relative
.message_header
.name
display: inline-block
margin-right: 0.25rem
- font-weight: $font-weight-bolder
- font-size: $font-size-message
- color: $black
- line-height: 22px
- cursor: pointer
+ font-size: $font-size-small
+ line-height: 16px
+ color: $gray
+ font-weight: bold
&:empty
margin-right: 0
.nickname
display: inline-block
font-weight: $font-weight-classic
- font-size: $font-size-base
+ font-size: $font-size-small
color: $gray
line-height: 22px
cursor: pointer
@@ -409,13 +398,15 @@
width: 60px
line-height: 22px
text-transform: uppercase
- cursor: pointer
+ text-aligne: right
+ position: absolute
+ right: 0
.message
font-size: $font-size-message
- line-height: 22px
+ line-height: 20px
color: $black
- margin: 0px 0px 2px 0px
+ margin: 0
display: block
min-width: 20px
width: 100%
@@ -502,11 +493,13 @@
*/
#members_toggle
position: absolute
- top: 60px
- right: 20px
+ top: 50px
+ right: 27px
cursor: pointer
color: $gray
font-size: $font-size-h3
+ background: #fff
+ padding: 5px
&:hover
color: #439FE0
diff --git a/public/css/pages/header.styl b/public/css/pages/header.styl
index 46cdde4..36fe73c 100644
--- a/public/css/pages/header.styl
+++ b/public/css/pages/header.styl
@@ -2,7 +2,6 @@
@import '../_mixins'
#topbar.connected
- background-color: rgb(247, 247, 247)
z-index: 100
#connectionStatus
display: none
@@ -11,16 +10,16 @@
position: fixed
right: 0px
top: 0px
- height: 55px
+ height: 42px
width: 100%
- background-color: lighten($sidebarTopAndBottomBg, 60%)
+ background-color: $topbarBg
z-index: 102
noselect()
- color: #fff
+ color: $topbarFg
#connectionStatus
width: 340px
- margin: 9px auto
+ margin: 2px auto
background-color: transparent
p
diff --git a/public/css/pages/me.styl b/public/css/pages/me.styl
index 82809fb..63cf9a8 100644
--- a/public/css/pages/me.styl
+++ b/public/css/pages/me.styl
@@ -7,7 +7,7 @@
display: none
position: fixed
right: 0
- padding: 8px 5px 5px 5px
+ padding: 1px 0px 5px 5px
width: 175px
.avatar
@@ -18,6 +18,7 @@
background-color: transparent
vertical-align: middle
margin: 3px 0.5rem 0px 0px;
+ border-radius: 50%;
.name,
.status
@@ -28,19 +29,18 @@
text-align: right
.name
- color: $gray-dark
- font-size: $font-size-large
+ color: $meUsernameColor
+ font-size: $font-size-base
font-weight: $font-weight-bolder
+ margin-top: 3px;
.status
color: $gray
font-weight: normal
- font-size: $font-size-base
- line-height: $font-size-base
+ font-size: $font-size-small
border-width: 0px
margin: 0px
padding: 0px
- line-height: 18px
height: 18px
white-space: nowrap
transition: all .25s
diff --git a/public/css/pages/roster.styl b/public/css/pages/roster.styl
index 1cea884..f831bbc 100644
--- a/public/css/pages/roster.styl
+++ b/public/css/pages/roster.styl
@@ -6,33 +6,30 @@
top: 0px
bottom: 0px
left: 0px
- width: 220px
+ width: 230px
background-color: $sidebarBg
color: $sidebarText
- border-right: 1px solid $sidebarBorder
z-index: 300
- overflow-y: auto;
- overflow-x: hidden;
webkit-transition-fix()
noselect()
#organization
- width: 220px
+ width: 230px
height: 42px
- margin-bottom: 10px
+ background: $sidebarTopAndBottomBg
#orga_name
- color: $sidebarOrgaName
+ color: $topbarFg
font-size: $font-size-large
font-weight: $font-weight-bolder
- line-height: 53px;
+ line-height: 42px;
vertical-align: middle
margin-left: 20px
.settings
position: relative
- height: 30px
- left: 0px
+ height: 28px;
+ left: 5px;
background-color: $settingsBg
color: $settingsText
transition: none
@@ -54,6 +51,17 @@
svg
fill: $settingsHoverText
+ .viewport
+ position: absolute
+ top: 42px
+ bottom: 22px
+ left: 0
+ right: 0
+ overflow-y: auto
+ overflow-x: hidden
+ padding-top: 20px
+ padding-bottom: 10px
+
.main
margin: 10px 0 0 0
text-align: center
@@ -76,14 +84,15 @@
position: relative
h1
- font-size: $font-size-base
+ font-size: $font-size-message
margin: 0
padding: 4px 20px
text-transform: uppercase
+ margin-bottom: 7px;
+ color: $sidebarSectionTitleColor
#roster,
#bookmarks
- margin-right: 20px
margin-bottom: 25px
#contactrequests
@@ -126,11 +135,9 @@
li
list-style-type: none
- padding: 4px 10px
- margin: 0px 0px 0px 10px
- border-radius: 0.25rem
+ padding: 3px 10px
+ padding-right: 15px
position: relative
- height: 25px
font-size: $font-size-base
cursor: pointer
width: 100%
@@ -139,6 +146,7 @@
&:hover
background: $sidebarHover
+ color: $sidebarHoverText
&.joined
&:hover:not(.hasUnread) .remove
@@ -150,7 +158,7 @@
&.hasUnread, &.hasUnread .prefix
font-weight: $font-weight-bolder
- color: #fff
+ color: $sidebarUnreadText
&:not(.activeContact).offline,
&:not(.activeContact).chat
@@ -170,16 +178,13 @@
&.activeContact, &.offline.activeContact
background: $sidebarSelectionBg
- .prefix
- color: $green-lighterer
- opacity: 1
&:not(.dnd):not(.away):not(.online) .presence
color: $brown-darkerer
opacity: 1
.remove, .join
- color: #fff
+ color: $sidebarSelectionText
.name
- color: #fff
+ color: $sidebarSelectionText
&:not(.activeContact).online
.presence
@@ -221,17 +226,17 @@
display: inline-block
margin-top: -10px
vertical-align: middle
- opacity: 0.5
+ position: absolute;
+ right: 28px;
+ top: 21px;
.user
display: inline-block
- width: 120px
- line-height: 100%
+ width: 170px
overflow: hidden
text-overflow: ellipsis
- height: $font-size-base+3
+ height: $font-size-base+6
font-style: italic
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.25)
.status
font-size: $font-size-small
@@ -245,16 +250,24 @@
font-size: $font-size-small
color: darken($brown-light, 50%)
+ .avatar
+ width: 16px
+ height: 16px
+ roundall(0.2rem)
+ border-radius: 50%
+ margin: 0
+ padding: 0
+ margin-right: 5px
+ margin-top: 4px
+
.name
width: 100%
- line-height: 100%
overflow: hidden
text-overflow: ellipsis
- height: $font-size-base+3
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.3)
- position: absolute
- left: 22px
max-width: 140px
+ line-height: 23px
+ height: 23px
+ position: absolute
.unread
display: none
@@ -264,8 +277,8 @@
roundall(5px)
position: absolute
padding-top:2px
- right: 5px
- top: 3px
+ right: 15px
+ top: 6px
font-size: $font-size-smaller
font-weight: $font-weight-bold
text-align: center
@@ -276,20 +289,13 @@
.remove, .join
position: absolute
- right: 7px
- top: 5px
+ right: 10px
+ top: 8px
font-size: $font-size-base
display: inline-block
font-family: FontAwesome
visibility: hidden
- .prefix
- font-weight: 300
- opacity: 0.5
- position: relative
- left: -15px
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.25);
-
button
margin: -15px 0px 0px 5px
@@ -308,11 +314,13 @@
#roster
.wrap
- padding-left: 0px
+ padding-left: 14px
+ height: 23px;
#bookmarks
.wrap
padding-left: 14px
+ height: 23px
@keyframes pulsate
0%
@@ -321,3 +329,15 @@
opacity: 0.5
100%
opacity: 1.0
+
+#kaiwaNotice
+ position: absolute
+ bottom: 5px
+ left: 50%
+ width: 50px
+ margin-left: -25px
+
+ img
+ width: 100%
+ display: block
+ opacity: .4
diff --git a/public/css/pages/settings.styl b/public/css/pages/settings.styl
index 2cacf51..114f3a8 100644
--- a/public/css/pages/settings.styl
+++ b/public/css/pages/settings.styl
@@ -4,24 +4,12 @@
// Settings
.main
- svg
- position: absolute
- top: 24px
- left: 16px
- margin: 0px
- margin-top: -13px
- fill: $gray
- z-index: 101
-
h1
- color: $gray-dark
- padding: 0
+ color: #fff
+ padding: 6px 12px
margin: 0
- position: fixed
- top: 14px
- left: 266px
- right: 200px
z-index: 101
+ position: fixed
#ldapSettings
display: none
diff --git a/server.js b/server.js
index 369171e..59f5d9a 100644
--- a/server.js
+++ b/server.js
@@ -352,7 +352,7 @@ var clientApp = new Moonboots({
debug: false
},
stylesheets: [
- __dirname + '/public/css/otalk.css',
+ __dirname + '/public/css/client.css',
__dirname + '/public/css/jquery.oembed.css',
__dirname + '/public/css/jquery-impromptu.css'
],
@@ -400,5 +400,5 @@ clientApp.on('ready', function () {
//}, app).listen(config.http.port);
app.listen(config.http.port, function () {
- console.log('Otalk running at: ' + config.http.baseUrl);
+ console.log('Kaiwa running at: ' + config.http.baseUrl);
});
diff --git a/views/layout.jade b/views/layout.jade
index cbd76d1..4dc40f2 100644
--- a/views/layout.jade
+++ b/views/layout.jade
@@ -3,7 +3,7 @@ html
head
title Kaiwa
meta(name="viewport", content="width=device-width, initial-scale=1, user-scalable=no")
- link(rel="stylesheet", href="/css/otalk.css")
+ link(rel="stylesheet", href="/css/client.css")
link(rel="shortcut icon", type="image/png", href="data:image/png;base64,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")
block head
body.aux