main.scss 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. $black: #000 !default
  2. $darkgray: #888 !default
  3. $gray: #a9a9a9 !default
  4. $lightgray: #d3d3d3 !default
  5. $bg-color: #eee !default
  6. $white: #fff !default
  7. $font-color: $black !default
  8. $font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif !default
  9. $font-disabled-color: $gray !default
  10. $panel-bg-color: $white !default
  11. $panel-border-color: $lightgray !default
  12. $channel-tree-color: $lightgray !default
  13. $channel-hover-bg-color: $lightgray !default
  14. $channel-selected-bg-color: lightblue !default
  15. $channel-selected-border-color: $darkgray !default
  16. $tooltip-border-color: $darkgray !default
  17. $chat-channel-color: orange !default
  18. $chat-user-color: green !default
  19. $chat-input-color: $font-color !default
  20. $mic-volume-border-color: $black !default
  21. $talk-outline-color: green !default
  22. $whisper-outline-color: purple !default
  23. $shout-outline-color: cyan !default
  24. $toolbar-hover-bg-color: $lightgray !default
  25. $toolbar-hover-border-color: $gray !default
  26. $toolbar-active-bg-color: $white !default
  27. $toolbar-active-border-color: $toolbar-hover-bg-color !default
  28. $toolbar-divider-color: $lightgray !default
  29. $dialog-header-color: $white !default
  30. $dialog-header-bg-color: $darkgray !default
  31. $dialog-header-border-bottom-color: $gray !default
  32. $dialog-bg-color: $bg-color !default
  33. $dialog-border-color: $darkgray !default
  34. $dialog-color: $font-color !default
  35. $dialog-button-border-color: $darkgray !default
  36. $dialog-button-bg-color: $white !default
  37. $dialog-button-color: $dialog-color !default
  38. $dialog-input-border-color: $darkgray !default
  39. $dialog-input-bg-color: $white !default
  40. $dialog-input-color: $dialog-color !default
  41. $context-menu-bg-color: $bg-color !default
  42. $context-menu-border-color: $panel-border-color !default
  43. $context-menu-hover-bg-color: $toolbar-hover-bg-color !default
  44. $tooltip-bg-color: $panel-bg-color !default
  45. $channels-bg-color: $panel-bg-color !default
  46. $channels-border-color: $panel-border-color !default
  47. $chat-bg-color: $panel-bg-color !default
  48. $chat-border-color: $panel-border-color !default
  49. html, body {
  50. background-color: $bg-color;
  51. color: $font-color;
  52. font-family: $font-family;
  53. margin: 0;
  54. overflow: hidden;
  55. height: 100%
  56. }
  57. #container {
  58. height: 100%;
  59. }
  60. .channel-root-container {
  61. text-size: 16px;
  62. margin-left: 2px;
  63. background-color: $channels-bg-color;
  64. border: 1px solid $channels-border-color;
  65. float: left;
  66. border-radius: 3px;
  67. overflow-x: hidden;
  68. overflow-y: auto;
  69. }
  70. .toolbar-horizontal ~ .channel-root-container {
  71. margin-top: 2px;
  72. width: calc(59% - 6px);
  73. height: calc(98% - 38px);
  74. }
  75. .toolbar-vertical ~ .channel-root-container {
  76. margin-top: 1%;
  77. width: calc(59% - 6px);
  78. height: calc(98% - 6px);
  79. }
  80. .chat {
  81. margin-right: 2px;
  82. float: left;
  83. }
  84. .toolbar-horizontal ~ .chat {
  85. margin-top: 2px;
  86. margin-left: 1%;
  87. width: 39%;
  88. height: calc(98% - 38px);
  89. }
  90. .toolbar-vertical ~ .chat {
  91. margin-top: 1%;
  92. margin-left: 2px;
  93. width: calc(39% - 36px);
  94. height: calc(98% - 4px);
  95. }
  96. .log {
  97. background-color: $chat-bg-color;
  98. height: calc(100% - 42px);
  99. padding: 5px;
  100. border: 1px $chat-border-color solid;
  101. border-radius: 3px;
  102. overflow-x: hidden;
  103. overflow-y: scroll;
  104. }
  105. .branch img {
  106. height: 19px;
  107. }
  108. .branch {
  109. position: absolute;
  110. padding-top: 3px;
  111. padding-bottom: 3px;
  112. background-color: $channels-bg-color;
  113. }
  114. .channel-sub {
  115. margin-left: 9px;
  116. border-left: 1px transparent solid;
  117. padding-left: 9px;
  118. }
  119. .channel-wrapper:nth-last-child(n + 2) > .branch:not(:empty) + .channel-sub {
  120. border-left: 1px $channel-tree-color solid;
  121. }
  122. .channel-tree,
  123. .user-wrapper {
  124. margin-left: 9px;
  125. }
  126. .channel-tree,
  127. .user-tree {
  128. position: absolute;
  129. }
  130. .channel-tree::before,
  131. .user-tree::before {
  132. content: "";
  133. display: block;
  134. position: relative;
  135. width: 9px;
  136. border-left: 1px $channel-tree-color solid;
  137. border-bottom: 1px $channel-tree-color solid;
  138. height: 14px;
  139. }
  140. .channel-wrapper:nth-last-child(n + 2) > .channel-tree:after,
  141. .user-wrapper:nth-last-child(n + 2) .user-tree:after {
  142. content: "";
  143. display: block;
  144. position: relative;
  145. width: 0px;
  146. border-left: 1px $channel-tree-color solid;
  147. height: 14px;
  148. }
  149. .user {
  150. margin-left: 9px;
  151. }
  152. .user-avatar, .user-talk {
  153. vertical-align: middle;
  154. }
  155. @mixin drop-shadow-4x($size, $blur, $color) {
  156. filter: drop-shadow(#{+$size} #{+$size} $blur $color)
  157. drop-shadow(#{+$size} #{-$size} $blur $color)
  158. drop-shadow(#{-$size} #{+$size} $blur $color)
  159. drop-shadow(#{-$size} #{-$size} $blur $color);
  160. }
  161. @mixin user-avatar-drop-shadow($color) {
  162. @include drop-shadow-4x(1px, 1px, $color);
  163. }
  164. .user-avatar-talk-on {
  165. @include user-avatar-drop-shadow($talk-outline-color);
  166. }
  167. .user-avatar-talk-whisper {
  168. @include user-avatar-drop-shadow($whisper-outline-color);
  169. }
  170. .user-avatar-talk-shout {
  171. @include user-avatar-drop-shadow($shout-outline-color);
  172. }
  173. .user-status, .channel-status {
  174. float: right;
  175. }
  176. .user,.channel{
  177. height: 23px;
  178. line-height: 23px;
  179. padding: 2px;
  180. border: 1px solid transparent;
  181. }
  182. .selected {
  183. background-color: $channel-selected-bg-color !important;
  184. border: 1px solid $channel-selected-border-color;
  185. border-radius: 3px;
  186. }
  187. .user:hover,.channel:hover {
  188. background-color: $channel-hover-bg-color;
  189. }
  190. .thisClient {
  191. font-weight: bold
  192. }
  193. .currentChannel {
  194. font-weight: bold
  195. }
  196. .user-status img, .channel-status img {
  197. margin-top: 2px;
  198. width: 19px;
  199. height: 19px
  200. }
  201. .channel img, .user img {
  202. width: auto;
  203. height: 19px;
  204. }
  205. .channel-name, .user-name {
  206. display: inline;
  207. }
  208. .channel:hover .tooltip, .user:hover .tooltip {
  209. visibility: visible;
  210. height: auto;
  211. transition-delay: 1s;
  212. }
  213. .tooltip {
  214. visibility: hidden;
  215. height: 0px;
  216. background: $tooltip-bg-color;
  217. border: 1px solid $tooltip-border-color;
  218. margin-top: 16px;
  219. margin-left: 30px;
  220. padding: 10px;
  221. position: absolute;
  222. z-index: 100;
  223. }
  224. .context-menu {
  225. position: absolute;
  226. z-index: 50;
  227. background: $context-menu-bg-color;
  228. border: 1px solid $context-menu-border-color;
  229. margin: 0;
  230. padding: 0;
  231. list-style: none;
  232. & > li {
  233. padding: 5px 20px;
  234. padding-left: 10px;
  235. &::before {
  236. display: inline-block;
  237. width: 10px;
  238. padding-right: 5px;
  239. content: '';
  240. }
  241. &.checked::before {
  242. content: '✓';
  243. }
  244. &:hover {
  245. background: $context-menu-hover-bg-color;
  246. }
  247. &.disabled {
  248. background: $context-menu-bg-color;
  249. color: $font-disabled-color;
  250. }
  251. }
  252. }
  253. .avatar-view {
  254. position: absolute;
  255. z-index: 200;
  256. max-width: 90%;
  257. max-height: 90%;
  258. top: 0;
  259. bottom: 0;
  260. left: 0;
  261. right: 0;
  262. margin: auto;
  263. }
  264. .toolbar {
  265. display: flex;
  266. align-items: center;
  267. }
  268. .toolbar img {
  269. height: 28px;
  270. width: 28px;
  271. padding: 2px;
  272. border: 1px solid transparent;
  273. border-radius: 3px;
  274. cursor: pointer;
  275. }
  276. .toolbar img:hover {
  277. border: 1px solid $toolbar-hover-bg-color;
  278. background-color: $toolbar-hover-border-color;
  279. }
  280. .toolbar .tb-active {
  281. border: 1px solid $toolbar-active-bg-color;
  282. background-color: $toolbar-active-border-color;
  283. }
  284. .toolbar-horizontal {
  285. flex-direction: row;
  286. height: 36px;
  287. margin-top: 4px;
  288. margin-left: 1%;
  289. padding-left: 5px;
  290. }
  291. .toolbar-vertical {
  292. flex-direction: column;
  293. width: 36px;
  294. margin-top: 1%;
  295. margin-left: 4px;
  296. padding-top: 5px;
  297. float: left;
  298. }
  299. .toolbar-horizontal > * {
  300. margin-right: 5px;
  301. }
  302. .toolbar-vertical > * {
  303. margin-bottom: 5px;
  304. }
  305. .divider {
  306. display: inline-block;
  307. }
  308. .toolbar-horizontal .divider {
  309. height: 32px;
  310. border-left: 1px $toolbar-divider-color solid;
  311. }
  312. .toolbar-vertical .divider {
  313. width: 32px;
  314. border-top: 1px $toolbar-divider-color solid;
  315. }
  316. .toolbar-horizontal .handle-horizontal {
  317. width: auto !important;
  318. border: none !important;
  319. background-color: $bg-color !important;
  320. }
  321. .toolbar-horizontal .handle-vertical {
  322. display: none;
  323. }
  324. .toolbar-vertical .handle-vertical {
  325. height: auto !important;
  326. border: none !important;
  327. background-color: $bg-color !important;
  328. }
  329. .toolbar-vertical .handle-horizontal {
  330. display: none;
  331. }
  332. .channel-icon .channel-icon-active {
  333. display: none;
  334. }
  335. .channel-tag {
  336. font-weight: bold;
  337. color: $chat-channel-color;
  338. }
  339. .user-tag {
  340. font-weight: bold;
  341. color: $chat-user-color;
  342. }
  343. #message-box {
  344. width: 100%;
  345. border: none;
  346. background: none;
  347. color: $chat-input-color;
  348. margin: 5px 0 5px 0;
  349. padding: 0;
  350. height: 20px;
  351. }
  352. form {
  353. margin: 0;
  354. padding: 0;
  355. }
  356. .message-content p {
  357. margin: 0;
  358. }
  359. .tb-information.disabled, .tb-record, .tb-comment {
  360. filter: grayscale(100%);
  361. }
  362. .dialog-header {
  363. height: 20px;
  364. width: calc(100% - 10px);
  365. padding: 5px;
  366. text-align: center;
  367. color: $dialog-header-color;
  368. background-color: $dialog-header-bg-color;
  369. border-bottom: 1px solid $dialog-header-border-bottom-color;
  370. }
  371. .dialog-footer {
  372. width: calc(100% - 20px);
  373. margin: 10px;
  374. }
  375. .dialog-submit {
  376. float: right;
  377. }
  378. .dialog-close, .dialog-submit {
  379. width: 45%;
  380. font-size: 15px;
  381. border: 1px $dialog-button-border-color solid;
  382. border-radius: 3px;
  383. background-color: $dialog-button-bg-color;
  384. color: $dialog-button-color;
  385. padding: 1px;
  386. cursor: pointer;
  387. }
  388. .connect-dialog table {
  389. text-align: center;
  390. width: 100%
  391. }
  392. .dialog {
  393. position: absolute;
  394. max-height: calc(100% - 20px);
  395. max-width: calc(100% - 20px);
  396. top: 50%;
  397. left: 50%;
  398. transform: translate(-50%, -50%);
  399. overflow: auto;
  400. background-color: $dialog-bg-color;
  401. color: $dialog-color;
  402. border: 1px $dialog-border-color solid;
  403. box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
  404. z-index: 20;
  405. }
  406. .settings-dialog table {
  407. width: 100%;
  408. padding: 5px;
  409. }
  410. .settings-dialog td {
  411. width: 50%;
  412. }
  413. .settings-dialog table select {
  414. width: 100%;
  415. }
  416. .settings-dialog table input {
  417. width: 100%;
  418. margin: 0px;
  419. }
  420. .settings-dialog table input[type="checkbox"] {
  421. width: auto;
  422. margin: auto;
  423. }
  424. .settings-dialog .mic-volume-container {
  425. height: 10px;
  426. border: 3px solid $mic-volume-border-color;
  427. }
  428. .settings-dialog .mic-volume {
  429. height: 100%;
  430. }
  431. .join-dialog {
  432. width: 300px;
  433. height: 100px;
  434. top: 50%;
  435. left: 50%;
  436. }
  437. .join-dialog .dialog-submit {
  438. float: none;
  439. width: 200px;
  440. position: absolute;
  441. top: calc(50% - 10px);
  442. left: calc(50% - 100px);
  443. }
  444. .connect-dialog {
  445. max-width: 405px;
  446. min-width: 250px;
  447. }
  448. .connect-dialog p {
  449. padding: 5px;
  450. margin: 0px;
  451. border-bottom: 1px solid $darkgray;
  452. }
  453. .connect-dialog a {
  454. color: blue;
  455. }
  456. .connect-dialog input[type=text], select {
  457. font-size: 15px;
  458. border: 1px $dialog-input-border-color solid;
  459. border-radius: 3px;
  460. background-color: $dialog-input-bg-color;
  461. color: $dialog-input-color;
  462. padding: 2px;
  463. width: calc(100% - 8px);
  464. }
  465. .connect-dialog input[type=password] {
  466. font-size: 15px;
  467. border: 1px $dialog-input-border-color solid;
  468. border-radius: 3px;
  469. background-color: $dialog-input-bg-color;
  470. color: $dialog-input-color;
  471. padding: 2px;
  472. width: calc(100% - 8px);
  473. }
  474. .connection-info-dialog {
  475. h3 {
  476. margin-bottom: 5px;
  477. }
  478. .dialog-content {
  479. padding-left: 20px;
  480. }
  481. }
  482. /****************/
  483. /* Minimal view */
  484. /****************/
  485. .minimal .toolbar-horizontal ~ .channel-root-container {
  486. width: calc(98% - 6px);
  487. }
  488. .minimal .toolbar-vertical ~ .channel-root-container {
  489. width: calc(98% - 42px);
  490. }
  491. .minimal .handle-horizontal {
  492. display: none;
  493. }
  494. .minimal .handle-vertical {
  495. display: none;
  496. }
  497. .minimal .divider {
  498. display: none;
  499. }
  500. .minimal .tb-connect {
  501. display: none;
  502. }
  503. .minimal .tb-information {
  504. display: none;
  505. }
  506. .minimal .tb-record {
  507. display: none;
  508. }
  509. .minimal .tb-comment {
  510. display: none;
  511. }
  512. .minimal .tb-settings {
  513. display: none;
  514. }
  515. .minimal .tb-sourcecode {
  516. display: none;
  517. }
  518. .minimal .chat {
  519. display: none;
  520. }
  521. .minimal .channel-wrapper {
  522. display: none;
  523. }
  524. .minimal .channel {
  525. display: none;
  526. }
  527. .minimal .user-tree {
  528. display: none;
  529. }
  530. .minimal .user-wrapper {
  531. margin-left: 0px;
  532. }
  533. .minimal .user {
  534. margin-left: 0px;
  535. padding-top: 0px;
  536. padding-bottom: 0px;
  537. border: none;
  538. height: 19px;
  539. line-height: 19px;
  540. }
  541. .minimal .user-status {
  542. height: 19px;
  543. }
  544. /* Mobile view */
  545. @media only screen and (max-width: 600px) and (min-width: 320px) and (min-height: 600px) {
  546. .toolbar-horizontal ~ .channel-root-container, .toolbar-vertical ~ .channel-root-container {
  547. height:calc(100% - 440px);
  548. position:static;
  549. width:100%;
  550. }
  551. .toolbar-horizontal ~ .chat, .toolbar-vertical ~ .chat {
  552. position:fixed;
  553. bottom: 60px;
  554. left:0;
  555. width:100%;
  556. height:330px;
  557. y-overflow:auto;
  558. font-size:0.8em;
  559. z-index:10;
  560. }
  561. .toolbar-vertical {
  562. flex-direction: row;
  563. height: 36px;
  564. margin-top: 4px;
  565. margin-left: 1%;
  566. padding-left: 5px;
  567. }
  568. #message-box {
  569. margin: 10px 5px 10px 5px;
  570. padding: 10px;
  571. height: 2em;
  572. font-size: 1.2em;
  573. font-weight: bold;
  574. }
  575. .handle-vertical, .handle-horizontal {
  576. display: none;
  577. }
  578. .dialog {
  579. min-width: 350px;
  580. }
  581. }