Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

styled.js 7.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. import React from 'react';
  2. import styled from 'styled-components';
  3. import { Icon, IconHorizontalPoints } from '../../../base/icons';
  4. import { ACTION_TRIGGER } from '../../constants';
  5. const MD_BREAKPOINT = '580px';
  6. export const ignoredChildClassName = 'ignore-child';
  7. export const AntiCollapse = styled.br`
  8. font-size: 0;
  9. `;
  10. export const Button = styled.button`
  11. align-items: center;
  12. background-color: ${
  13. // eslint-disable-next-line no-confusing-arrow
  14. props => props.primary ? '#0056E0' : '#3D3D3D'
  15. };
  16. border: 0;
  17. border-radius: 6px;
  18. display: flex;
  19. font-weight: unset;
  20. justify-content: center;
  21. min-height: 32px;
  22. &:hover {
  23. background-color: ${
  24. // eslint-disable-next-line no-confusing-arrow
  25. props => props.primary ? '#246FE5' : '#525252'
  26. };
  27. }
  28. `;
  29. export const QuickActionButton = styled(Button)`
  30. padding: 0 12px;
  31. `;
  32. export const Container = styled.div`
  33. box-sizing: border-box;
  34. flex: 1;
  35. overflow-y: auto;
  36. position: relative;
  37. padding: 0 ${props => props.theme.panePadding}px;
  38. & > * + *:not(.${ignoredChildClassName}) {
  39. margin-top: 16px;
  40. }
  41. &::-webkit-scrollbar {
  42. display: none;
  43. }
  44. `;
  45. export const ContextMenu = styled.div.attrs(props => {
  46. return {
  47. className: props.className
  48. };
  49. })`
  50. background-color: #292929;
  51. border-radius: 3px;
  52. box-shadow: 0px 3px 16px rgba(0, 0, 0, 0.6), 0px 0px 4px 1px rgba(0, 0, 0, 0.25);
  53. color: white;
  54. font-size: ${props => props.theme.contextFontSize}px;
  55. font-weight: ${props => props.theme.contextFontWeight};
  56. margin-top: ${props => {
  57. const {
  58. participantActionButtonHeight,
  59. participantItemHeight
  60. } = props.theme;
  61. return ((3 * participantItemHeight) + participantActionButtonHeight) / 4;
  62. }}px;
  63. position: absolute;
  64. right: ${props => props.theme.panePadding}px;
  65. top: 0;
  66. z-index: 2;
  67. & > li {
  68. list-style: none;
  69. }
  70. ${props => props.isHidden && `
  71. pointer-events: none;
  72. visibility: hidden;
  73. `}
  74. `;
  75. export const ContextMenuIcon = styled(Icon).attrs({
  76. size: 20
  77. })`
  78. & > svg {
  79. fill: #ffffff;
  80. }
  81. `;
  82. export const ContextMenuItem = styled.div`
  83. align-items: center;
  84. box-sizing: border-box;
  85. cursor: pointer;
  86. display: flex;
  87. min-height: 40px;
  88. padding: 10px 16px;
  89. & > *:not(:last-child) {
  90. margin-right: 16px;
  91. }
  92. &:hover {
  93. background-color: #525252;
  94. }
  95. `;
  96. export const ContextMenuItemGroup = styled.div`
  97. &:not(:empty) {
  98. padding: 8px 0;
  99. }
  100. & + &:not(:empty) {
  101. border-top: 1px solid #4C4D50;
  102. }
  103. `;
  104. export const Close = styled.div`
  105. align-items: center;
  106. cursor: pointer;
  107. display: flex;
  108. height: 20px;
  109. justify-content: center;
  110. width: 20px;
  111. &:before, &:after {
  112. content: '';
  113. background-color: #a4b8d1;
  114. border-radius: 2px;
  115. height: 2px;
  116. position: absolute;
  117. transform-origin: center center;
  118. width: 21px;
  119. }
  120. &:before {
  121. transform: rotate(45deg);
  122. }
  123. &:after {
  124. transform: rotate(-45deg);
  125. }
  126. `;
  127. export const Footer = styled.div`
  128. background-color: #141414;
  129. display: flex;
  130. justify-content: flex-end;
  131. padding: 24px ${props => props.theme.panePadding}px;
  132. & > *:not(:last-child) {
  133. margin-right: 16px;
  134. }
  135. `;
  136. export const FooterButton = styled(Button)`
  137. height: 40px;
  138. font-size: 15px;
  139. padding: 0 16px;
  140. @media (max-width: ${MD_BREAKPOINT}) {
  141. font-size: 16px;
  142. height: 48px;
  143. min-width: 48px;
  144. }
  145. `;
  146. export const FooterEllipsisButton = styled(FooterButton).attrs({
  147. children: <Icon src = { IconHorizontalPoints } />
  148. })`
  149. padding: 8px;
  150. `;
  151. export const FooterEllipsisContainer = styled.div`
  152. position: relative;
  153. `;
  154. export const Header = styled.div`
  155. align-items: center;
  156. box-sizing: border-box;
  157. display: flex;
  158. height: ${props => props.theme.headerSize}px;
  159. padding: 0 20px;
  160. `;
  161. export const Heading = styled.div`
  162. color: #d1dbe8;
  163. font-style: normal;
  164. font-size: 15px;
  165. line-height: 24px;
  166. margin: 8px 0 ${props => props.theme.panePadding}px;
  167. @media (max-width: ${MD_BREAKPOINT}) {
  168. font-size: 16px;
  169. }
  170. `;
  171. export const ParticipantActionButton = styled(Button)`
  172. height: ${props => props.theme.participantActionButtonHeight}px;
  173. padding: 6px 10px;
  174. `;
  175. export const ParticipantActionEllipsis = styled(ParticipantActionButton).attrs({
  176. children: <Icon src = { IconHorizontalPoints } />,
  177. primary: true
  178. })`
  179. padding: 6px;
  180. `;
  181. export const ParticipantActions = styled.div`
  182. align-items: center;
  183. z-index: 1;
  184. & > *:not(:last-child) {
  185. margin-right: 8px;
  186. }
  187. `;
  188. export const ParticipantActionsHover = styled(ParticipantActions)`
  189. background-color: #292929;
  190. bottom: 1px;
  191. display: none;
  192. position: absolute;
  193. right: ${props => props.theme.panePadding};
  194. top: 0;
  195. &:after {
  196. content: '';
  197. background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, #292929 100%);
  198. bottom: 0;
  199. display: block;
  200. left: 0;
  201. pointer-events: none;
  202. position: absolute;
  203. top: 0;
  204. transform: translateX(-100%);
  205. }
  206. `;
  207. export const ParticipantActionsPermanent = styled(ParticipantActions)`
  208. display: flex;
  209. `;
  210. export const ParticipantContent = styled.div`
  211. align-items: center;
  212. box-shadow: inset 0px -1px 0px rgba(255, 255, 255, 0.15);
  213. display: flex;
  214. flex: 1;
  215. height: 100%;
  216. overflow: hidden;
  217. padding-right: ${props => props.theme.panePadding}px;
  218. `;
  219. export const ParticipantStates = styled.div`
  220. display: flex;
  221. justify-content: flex-end;
  222. & > * {
  223. align-items: center;
  224. display: flex;
  225. justify-content: center;
  226. }
  227. & > *:not(:last-child) {
  228. margin-right: 8px;
  229. }
  230. .jitsi-icon {
  231. padding: 3px;
  232. }
  233. `;
  234. export const ParticipantContainer = styled.div`
  235. align-items: center;
  236. color: white;
  237. display: flex;
  238. font-size: 13px;
  239. font-weight: normal;
  240. height: ${props => props.theme.participantItemHeight}px;
  241. margin: 0 -${props => props.theme.panePadding}px;
  242. padding-left: ${props => props.theme.panePadding}px;
  243. position: relative;
  244. @media (max-width: ${MD_BREAKPOINT}) {
  245. font-size: 16px;
  246. height: 64px;
  247. }
  248. &:hover {
  249. ${ParticipantStates} {
  250. ${props => !props.local && 'display: none'};
  251. }
  252. }
  253. ${props => !props.isHighlighted && '&:hover {'}
  254. background-color: #292929;
  255. & ${ParticipantActions} {
  256. ${props => props.trigger === ACTION_TRIGGER.HOVER && `
  257. display: flex;
  258. `}
  259. }
  260. & ${ParticipantContent} {
  261. box-shadow: none;
  262. }
  263. & ${ParticipantStates} {
  264. display: none;
  265. }
  266. ${props => !props.isHighlighted && '}'}
  267. `;
  268. export const ParticipantInviteButton = styled(Button).attrs({
  269. primary: true
  270. })`
  271. font-size: 15px;
  272. height: 40px;
  273. width: 100%;
  274. & > *:not(:last-child) {
  275. margin-right: 8px;
  276. }
  277. @media (max-width: ${MD_BREAKPOINT}) {
  278. font-size: 16px;
  279. height: 48px;
  280. }
  281. `;
  282. export const ParticipantName = styled.div`
  283. overflow: hidden;
  284. text-overflow: ellipsis;
  285. white-space: nowrap;
  286. `;
  287. export const ParticipantNameContainer = styled.div`
  288. display: flex;
  289. flex: 1;
  290. overflow: hidden;
  291. `;
  292. export const ModeratorLabel = styled.div`
  293. font-size: 12px;
  294. line-height: 16px;
  295. color: #858585;
  296. `;
  297. export const ParticipantDetailsContainer = styled.div`
  298. display: flex;
  299. flex: 1;
  300. margin-right: 8px;
  301. overflow: hidden;
  302. flex-direction: column;
  303. justify-content: flex-start;
  304. `;
  305. export const RaisedHandIndicatorBackground = styled.div`
  306. background-color: #ed9e1b;
  307. border-radius: 3px;
  308. height: 24px;
  309. width: 24px;
  310. `;
  311. export const VolumeInput = styled.input.attrs({
  312. type: 'range'
  313. })`
  314. width: 100%;
  315. `;
  316. export const VolumeInputContainer = styled.div`
  317. position: relative;
  318. width: 100%;
  319. `;
  320. export const VolumeOverlay = styled.div`
  321. background-color: #0376da;
  322. border-radius: 1px 0 0 1px;
  323. height: 100%;
  324. left: 0;
  325. pointer-events: none;
  326. position: absolute;
  327. `;