You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

819 lines
14 KiB

  1. .status__content--with-action {
  2. cursor: pointer;
  3. }
  4. .status__content {
  5. position: relative;
  6. margin: 10px 0;
  7. font-size: 15px;
  8. line-height: 20px;
  9. word-wrap: break-word;
  10. font-weight: 400;
  11. overflow: visible;
  12. padding-top: 5px;
  13. &:focus {
  14. outline: 0;
  15. }
  16. .emojione {
  17. width: 20px;
  18. height: 20px;
  19. margin: -3px 0 0;
  20. }
  21. p {
  22. margin-bottom: 20px;
  23. white-space: pre-wrap;
  24. &:last-child {
  25. margin-bottom: 0;
  26. }
  27. }
  28. a {
  29. color: $secondary-text-color;
  30. text-decoration: none;
  31. &:hover {
  32. text-decoration: underline;
  33. .fa {
  34. color: lighten($dark-text-color, 7%);
  35. }
  36. }
  37. &.mention {
  38. &:hover {
  39. text-decoration: none;
  40. span {
  41. text-decoration: underline;
  42. }
  43. }
  44. }
  45. .fa {
  46. color: $dark-text-color;
  47. }
  48. }
  49. .status__content__spoiler {
  50. display: none;
  51. &.status__content__spoiler--visible {
  52. display: block;
  53. }
  54. }
  55. .status__content__spoiler-link {
  56. background: lighten($ui-base-color, 30%);
  57. &:hover {
  58. background: lighten($ui-base-color, 33%);
  59. text-decoration: none;
  60. }
  61. }
  62. }
  63. .status__content__spoiler-link {
  64. display: inline-block;
  65. border-radius: 2px;
  66. background: lighten($ui-base-color, 30%);
  67. border: none;
  68. color: $inverted-text-color;
  69. font-weight: 500;
  70. font-size: 11px;
  71. padding: 0 5px;
  72. text-transform: uppercase;
  73. line-height: inherit;
  74. cursor: pointer;
  75. vertical-align: bottom;
  76. &:hover {
  77. background: lighten($ui-base-color, 33%);
  78. text-decoration: none;
  79. }
  80. .status__content__spoiler-icon {
  81. display: inline-block;
  82. margin: 0 0 0 5px;
  83. border-left: 1px solid currentColor;
  84. padding: 0 0 0 4px;
  85. font-size: 16px;
  86. vertical-align: -2px;
  87. }
  88. }
  89. .notif-cleaning {
  90. .status, .notification-follow {
  91. padding-right: ($dismiss-overlay-width + 0.5rem);
  92. }
  93. }
  94. .status__wrapper--filtered {
  95. color: $dark-text-color;
  96. border: 0;
  97. font-size: inherit;
  98. text-align: center;
  99. line-height: inherit;
  100. margin: 0;
  101. padding: 15px;
  102. box-sizing: border-box;
  103. width: 100%;
  104. clear: both;
  105. border-bottom: 1px solid lighten($ui-base-color, 8%);
  106. }
  107. .status__prepend-icon-wrapper {
  108. float: left;
  109. margin: 0 10px 0 -58px;
  110. width: 48px;
  111. text-align: right;
  112. }
  113. .notification-follow {
  114. position: relative;
  115. // same like Status
  116. border-bottom: 1px solid lighten($ui-base-color, 8%);
  117. .account {
  118. border-bottom: 0 none;
  119. }
  120. }
  121. .focusable {
  122. &:focus {
  123. outline: 0;
  124. background: lighten($ui-base-color, 4%);
  125. .status.status-direct {
  126. background: lighten($ui-base-color, 12%);
  127. &.muted {
  128. background: transparent;
  129. }
  130. }
  131. .detailed-status,
  132. .detailed-status__action-bar {
  133. background: lighten($ui-base-color, 8%);
  134. }
  135. }
  136. }
  137. .status {
  138. padding: 10px 14px;
  139. position: relative;
  140. height: auto;
  141. border-bottom: 1px solid lighten($ui-base-color, 8%);
  142. cursor: default;
  143. @supports (-ms-overflow-style: -ms-autohiding-scrollbar) {
  144. // Add margin to avoid Edge auto-hiding scrollbar appearing over content.
  145. // On Edge 16 this is 16px and Edge <=15 it's 12px, so aim for 16px.
  146. padding-right: 28px; // 12px + 16px
  147. }
  148. @keyframes fade {
  149. 0% { opacity: 0; }
  150. 100% { opacity: 1; }
  151. }
  152. opacity: 1;
  153. animation: fade 150ms linear;
  154. .video-player {
  155. margin-top: 8px;
  156. }
  157. &.status-direct {
  158. background: lighten($ui-base-color, 8%);
  159. }
  160. &.light {
  161. .status__relative-time {
  162. color: $lighter-text-color;
  163. }
  164. .status__display-name {
  165. color: $inverted-text-color;
  166. }
  167. .display-name {
  168. strong {
  169. color: $inverted-text-color;
  170. }
  171. span {
  172. color: $lighter-text-color;
  173. }
  174. }
  175. .status__content {
  176. color: $inverted-text-color;
  177. a {
  178. color: $highlight-text-color;
  179. }
  180. a.status__content__spoiler-link {
  181. color: $primary-text-color;
  182. background: $ui-primary-color;
  183. &:hover {
  184. background: lighten($ui-primary-color, 8%);
  185. }
  186. }
  187. }
  188. }
  189. &.collapsed {
  190. background-position: center;
  191. background-size: cover;
  192. user-select: none;
  193. &.has-background::before {
  194. display: block;
  195. position: absolute;
  196. left: 0;
  197. right: 0;
  198. top: 0;
  199. bottom: 0;
  200. background-image: linear-gradient(to bottom, rgba($base-shadow-color, .75), rgba($base-shadow-color, .65) 24px, rgba($base-shadow-color, .8));
  201. pointer-events: none;
  202. content: "";
  203. }
  204. .display-name:hover .display-name__html {
  205. text-decoration: none;
  206. }
  207. .status__content {
  208. height: 20px;
  209. overflow: hidden;
  210. text-overflow: ellipsis;
  211. padding-top: 0;
  212. &:after {
  213. content: "";
  214. position: absolute;
  215. top: 0; bottom: 0;
  216. left: 0; right: 0;
  217. background: linear-gradient(rgba($ui-base-color, 0), rgba($ui-base-color, 1));
  218. pointer-events: none;
  219. }
  220. a:hover {
  221. text-decoration: none;
  222. }
  223. }
  224. &:focus > .status__content:after {
  225. background: linear-gradient(rgba(lighten($ui-base-color, 4%), 0), rgba(lighten($ui-base-color, 4%), 1));
  226. }
  227. &.status-direct> .status__content:after {
  228. background: linear-gradient(rgba(lighten($ui-base-color, 8%), 0), rgba(lighten($ui-base-color, 8%), 1));
  229. }
  230. .notification__message {
  231. margin-bottom: 0;
  232. }
  233. .status__info .notification__message > span {
  234. white-space: nowrap;
  235. }
  236. }
  237. .notification__message {
  238. margin: -10px 0px 10px 0;
  239. }
  240. }
  241. .notification-favourite {
  242. .status.status-direct {
  243. background: transparent;
  244. .icon-button.disabled {
  245. color: lighten($action-button-color, 13%);
  246. }
  247. }
  248. }
  249. .status__relative-time {
  250. display: inline-block;
  251. margin-left: auto;
  252. padding-left: 18px;
  253. width: 120px;
  254. color: $dark-text-color;
  255. font-size: 14px;
  256. text-align: right;
  257. white-space: nowrap;
  258. overflow: hidden;
  259. text-overflow: ellipsis;
  260. }
  261. .status__display-name {
  262. margin: 0 auto 0 0;
  263. color: $dark-text-color;
  264. overflow: hidden;
  265. }
  266. .status__info__account .status__display-name {
  267. display: block;
  268. max-width: 100%;
  269. }
  270. .status__info {
  271. display: flex;
  272. font-size: 15px;
  273. > span {
  274. text-overflow: ellipsis;
  275. overflow: hidden;
  276. }
  277. .notification__message > span {
  278. word-wrap: break-word;
  279. }
  280. }
  281. .status__info__icons {
  282. margin-left: auto;
  283. display: flex;
  284. align-items: center;
  285. height: 1em;
  286. color: $action-button-color;
  287. .status__media-icon {
  288. padding-left: 6px;
  289. padding-right: 1px;
  290. }
  291. .status__visibility-icon {
  292. padding-left: 4px;
  293. }
  294. }
  295. .status__info__account {
  296. display: flex;
  297. }
  298. .status-check-box {
  299. border-bottom: 1px solid $ui-secondary-color;
  300. display: flex;
  301. .status-check-box__status {
  302. margin: 10px 0 10px 10px;
  303. flex: 1;
  304. .media-gallery {
  305. max-width: 250px;
  306. }
  307. .status__content {
  308. padding: 0;
  309. white-space: normal;
  310. }
  311. .video-player {
  312. margin-top: 8px;
  313. max-width: 250px;
  314. }
  315. .media-gallery__item-thumbnail {
  316. cursor: default;
  317. }
  318. }
  319. }
  320. .status-check-box-toggle {
  321. align-items: center;
  322. display: flex;
  323. flex: 0 0 auto;
  324. justify-content: center;
  325. padding: 10px;
  326. }
  327. .status__prepend {
  328. margin: -10px -10px 10px;
  329. color: $dark-text-color;
  330. padding: 8px 10px 0 68px;
  331. font-size: 14px;
  332. position: relative;
  333. .status__display-name strong {
  334. color: $dark-text-color;
  335. }
  336. > span {
  337. display: block;
  338. overflow: hidden;
  339. text-overflow: ellipsis;
  340. }
  341. }
  342. .status__action-bar {
  343. align-items: center;
  344. display: flex;
  345. margin-top: 8px;
  346. }
  347. .status__action-bar-button {
  348. float: left;
  349. margin-right: 18px;
  350. }
  351. .status__action-bar-dropdown {
  352. float: left;
  353. height: 23.15px;
  354. width: 23.15px;
  355. }
  356. .detailed-status__action-bar-dropdown {
  357. flex: 1 1 auto;
  358. display: flex;
  359. align-items: center;
  360. justify-content: center;
  361. position: relative;
  362. }
  363. .detailed-status {
  364. background: lighten($ui-base-color, 4%);
  365. padding: 14px 10px;
  366. .status__content {
  367. font-size: 19px;
  368. line-height: 24px;
  369. .emojione {
  370. width: 24px;
  371. height: 24px;
  372. margin: -1px 0 0;
  373. }
  374. }
  375. .video-player {
  376. margin-top: 8px;
  377. }
  378. }
  379. .detailed-status__meta {
  380. margin-top: 15px;
  381. color: $dark-text-color;
  382. font-size: 14px;
  383. line-height: 18px;
  384. }
  385. .detailed-status__action-bar {
  386. background: lighten($ui-base-color, 4%);
  387. border-top: 1px solid lighten($ui-base-color, 8%);
  388. border-bottom: 1px solid lighten($ui-base-color, 8%);
  389. display: flex;
  390. flex-direction: row;
  391. padding: 10px 0;
  392. }
  393. .detailed-status__link {
  394. color: inherit;
  395. text-decoration: none;
  396. }
  397. .detailed-status__favorites,
  398. .detailed-status__reblogs {
  399. display: inline-block;
  400. font-weight: 500;
  401. font-size: 12px;
  402. margin-left: 6px;
  403. }
  404. .status__display-name,
  405. .status__relative-time,
  406. .detailed-status__display-name,
  407. .detailed-status__datetime,
  408. .detailed-status__application,
  409. .account__display-name {
  410. text-decoration: none;
  411. }
  412. .status__display-name,
  413. .account__display-name {
  414. strong {
  415. color: $primary-text-color;
  416. }
  417. }
  418. .muted {
  419. .emojione {
  420. opacity: 0.5;
  421. }
  422. }
  423. .status__display-name,
  424. .reply-indicator__display-name,
  425. .detailed-status__display-name,
  426. .account__display-name {
  427. &:hover strong {
  428. text-decoration: underline;
  429. }
  430. }
  431. .account__display-name strong {
  432. display: block;
  433. overflow: hidden;
  434. text-overflow: ellipsis;
  435. }
  436. .detailed-status__application,
  437. .detailed-status__datetime {
  438. color: inherit;
  439. }
  440. .detailed-status__display-name {
  441. color: $secondary-text-color;
  442. display: block;
  443. line-height: 24px;
  444. margin-bottom: 15px;
  445. overflow: hidden;
  446. strong,
  447. span {
  448. display: block;
  449. text-overflow: ellipsis;
  450. overflow: hidden;
  451. }
  452. strong {
  453. font-size: 16px;
  454. color: $primary-text-color;
  455. }
  456. }
  457. .detailed-status__display-avatar {
  458. float: left;
  459. margin-right: 10px;
  460. }
  461. .status__avatar {
  462. flex: none;
  463. margin: 0 10px 0 0;
  464. height: 48px;
  465. width: 48px;
  466. }
  467. .muted {
  468. .status__content p,
  469. .status__content a {
  470. color: $dark-text-color;
  471. }
  472. .status__display-name strong {
  473. color: $dark-text-color;
  474. }
  475. .status__avatar {
  476. opacity: 0.5;
  477. }
  478. a.status__content__spoiler-link {
  479. background: $ui-base-lighter-color;
  480. color: $inverted-text-color;
  481. &:hover {
  482. background: lighten($ui-base-color, 29%);
  483. text-decoration: none;
  484. }
  485. }
  486. }
  487. .status__relative-time,
  488. .detailed-status__datetime {
  489. &:hover {
  490. text-decoration: underline;
  491. }
  492. }
  493. .status-card {
  494. display: flex;
  495. cursor: pointer;
  496. font-size: 14px;
  497. border: 1px solid lighten($ui-base-color, 8%);
  498. border-radius: 4px;
  499. color: $dark-text-color;
  500. margin-top: 14px;
  501. text-decoration: none;
  502. overflow: hidden;
  503. &:hover {
  504. background: lighten($ui-base-color, 8%);
  505. }
  506. }
  507. .status-card-video,
  508. .status-card-rich,
  509. .status-card-photo {
  510. margin-top: 14px;
  511. overflow: hidden;
  512. iframe {
  513. width: 100%;
  514. height: auto;
  515. }
  516. }
  517. .status-card-photo {
  518. cursor: zoom-in;
  519. display: block;
  520. text-decoration: none;
  521. width: 100%;
  522. height: auto;
  523. margin: 0;
  524. }
  525. .status-card-video {
  526. iframe {
  527. width: 100%;
  528. height: 100%;
  529. }
  530. }
  531. .status-card__title {
  532. display: block;
  533. font-weight: 500;
  534. margin-bottom: 5px;
  535. color: $darker-text-color;
  536. overflow: hidden;
  537. text-overflow: ellipsis;
  538. white-space: nowrap;
  539. }
  540. .status-card__content {
  541. flex: 1 1 auto;
  542. overflow: hidden;
  543. padding: 14px 14px 14px 8px;
  544. }
  545. .status-card__description {
  546. color: $darker-text-color;
  547. }
  548. .status-card__host {
  549. display: block;
  550. margin-top: 5px;
  551. font-size: 13px;
  552. }
  553. .status-card__image {
  554. flex: 0 0 100px;
  555. background: lighten($ui-base-color, 8%);
  556. }
  557. .status-card.horizontal {
  558. display: block;
  559. .status-card__image {
  560. width: 100%;
  561. }
  562. .status-card__image-image {
  563. border-radius: 4px 4px 0 0;
  564. }
  565. .status-card__title {
  566. white-space: inherit;
  567. }
  568. }
  569. .status-card__image-image {
  570. border-radius: 4px 0 0 4px;
  571. display: block;
  572. margin: 0;
  573. width: 100%;
  574. height: 100%;
  575. object-fit: cover;
  576. }
  577. .status__video-player {
  578. display: flex;
  579. align-items: center;
  580. background: $base-shadow-color;
  581. box-sizing: border-box;
  582. cursor: default; /* May not be needed */
  583. margin-top: 8px;
  584. overflow: hidden;
  585. position: relative;
  586. @include fullwidth-gallery;
  587. }
  588. .status__video-player-video {
  589. height: 100%;
  590. object-fit: cover;
  591. position: relative;
  592. top: 50%;
  593. transform: translateY(-50%);
  594. width: 100%;
  595. z-index: 1;
  596. &:not(.letterbox) {
  597. height: 100%;
  598. object-fit: cover;
  599. }
  600. }
  601. .status__video-player-expand,
  602. .status__video-player-mute {
  603. color: $primary-text-color;
  604. opacity: 0.8;
  605. position: absolute;
  606. right: 4px;
  607. text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
  608. }
  609. .status__video-player-spoiler {
  610. display: none;
  611. color: $primary-text-color;
  612. left: 4px;
  613. position: absolute;
  614. text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
  615. top: 4px;
  616. z-index: 100;
  617. &.status__video-player-spoiler--visible {
  618. display: block;
  619. }
  620. }
  621. .status__video-player-expand {
  622. bottom: 4px;
  623. z-index: 100;
  624. }
  625. .status__video-player-mute {
  626. top: 4px;
  627. z-index: 5;
  628. }
  629. .attachment-list {
  630. display: flex;
  631. font-size: 14px;
  632. border: 1px solid lighten($ui-base-color, 8%);
  633. border-radius: 4px;
  634. margin-top: 14px;
  635. overflow: hidden;
  636. &__icon {
  637. flex: 0 0 auto;
  638. color: $dark-text-color;
  639. padding: 8px 18px;
  640. cursor: default;
  641. border-right: 1px solid lighten($ui-base-color, 8%);
  642. display: flex;
  643. flex-direction: column;
  644. align-items: center;
  645. justify-content: center;
  646. font-size: 26px;
  647. .fa {
  648. display: block;
  649. }
  650. }
  651. &__list {
  652. list-style: none;
  653. padding: 4px 0;
  654. padding-left: 8px;
  655. display: flex;
  656. flex-direction: column;
  657. justify-content: center;
  658. li {
  659. display: block;
  660. padding: 4px 0;
  661. }
  662. a {
  663. text-decoration: none;
  664. color: $dark-text-color;
  665. font-weight: 500;
  666. &:hover {
  667. text-decoration: underline;
  668. }
  669. }
  670. }
  671. &.compact {
  672. border: 0;
  673. margin-top: 4px;
  674. .attachment-list__list {
  675. padding: 0;
  676. display: block;
  677. }
  678. .fa {
  679. color: $dark-text-color;
  680. }
  681. }
  682. }