project-list.scss 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. .project-list-empty-col {
  2. display: flex;
  3. height: 100%;
  4. flex-flow: column nowrap;
  5. .row:first-child {
  6. flex-grow: 1; /* fill vertical space so notifications are pushed to bottom */
  7. }
  8. .card-body {
  9. // h2 + .card-thin top padding
  10. padding-bottom: calc(var(--line-height-03) + var(--line-height-03) / 2);
  11. }
  12. }
  13. .action-btn {
  14. padding: 0 var(--spacing-02);
  15. }
  16. #project-list-root .user-notifications ul {
  17. margin-bottom: 0;
  18. }
  19. .project-list-sidebar-wrapper-react {
  20. button {
  21. white-space: normal;
  22. word-wrap: anywhere;
  23. // prevents buttons from expanding sidebar width
  24. }
  25. .new-project-dropdown {
  26. width: 100%;
  27. .new-project-button {
  28. width: 100%;
  29. }
  30. }
  31. }
  32. .new-project-button.dropdown-toggle::after {
  33. display: none;
  34. }
  35. .project-list-welcome-wrapper {
  36. width: 100%;
  37. padding-bottom: var(--spacing-08);
  38. .welcome-new-wrapper {
  39. .welcome-title {
  40. @include heading-xl;
  41. margin-top: var(--spacing-08);
  42. }
  43. .welcome-message-cards-wrapper {
  44. display: flex;
  45. flex-direction: column;
  46. justify-content: space-between;
  47. align-items: center;
  48. margin-top: var(--spacing-11);
  49. @include media-breakpoint-up(lg) {
  50. flex-direction: row;
  51. justify-content: center;
  52. }
  53. }
  54. .welcome-message-card {
  55. border: 1px solid $bg-light-tertiary;
  56. border-radius: $border-radius-large;
  57. display: flex;
  58. flex-direction: column;
  59. align-items: center;
  60. justify-content: space-between;
  61. padding: var(--spacing-08) var(--spacing-06);
  62. margin: var(--spacing-05) 0;
  63. height: 200px;
  64. position: relative;
  65. cursor: pointer;
  66. @include media-breakpoint-up(lg) {
  67. margin: 0 var(--spacing-06);
  68. height: 240px;
  69. }
  70. &:hover {
  71. background-color: var(--bg-light-primary);
  72. }
  73. .welcome-message-card-img {
  74. max-width: 100%;
  75. @include media-breakpoint-up(lg) {
  76. margin-bottom: var(--spacing-07);
  77. }
  78. }
  79. }
  80. .welcome-message-card-item {
  81. display: flex;
  82. flex: 1;
  83. flex-direction: column;
  84. width: 280px;
  85. @include media-breakpoint-up(lg) {
  86. flex: 0 1 312px;
  87. width: auto;
  88. }
  89. }
  90. .create-new-project-dropdown {
  91. transform: none !important;
  92. top: 100% !important;
  93. left: var(--spacing-06) !important;
  94. right: var(--spacing-06) !important;
  95. margin-top: var(--spacing-04);
  96. margin-left: var(--spacing-06);
  97. margin-right: var(--spacing-06);
  98. @include media-breakpoint-down(lg) {
  99. left: 0 !important;
  100. right: 0 !important;
  101. margin-top: calc((var(--spacing-05) - var(--spacing-04)) * -1);
  102. }
  103. }
  104. .welcome-message-card-link {
  105. &,
  106. &:hover {
  107. text-decoration: none;
  108. color: var(--bs-body-color);
  109. }
  110. }
  111. }
  112. }
  113. .project-list-header-row {
  114. display: flex;
  115. align-items: center;
  116. margin-bottom: var(--spacing-05);
  117. min-height: 36px;
  118. .project-list-title {
  119. @include heading-sm;
  120. color: var(--content-secondary-themed);
  121. font-weight: bold;
  122. min-width: 0;
  123. }
  124. }
  125. .project-tools {
  126. flex-shrink: 0;
  127. margin-left: auto;
  128. min-height: 38px;
  129. display: flex;
  130. align-items: center;
  131. }
  132. @include media-breakpoint-down(md) {
  133. .project-tools {
  134. float: left;
  135. margin-left: initial;
  136. }
  137. }
  138. .projects-toolbar {
  139. display: flex;
  140. align-items: center;
  141. .dropdown,
  142. .dropdown-toggle {
  143. max-width: 100%;
  144. }
  145. .dropdown {
  146. min-width: 0;
  147. }
  148. }
  149. .projects-sort-dropdown {
  150. flex-shrink: 0;
  151. margin-left: auto;
  152. }
  153. .project-menu-item-edit-btn {
  154. position: absolute;
  155. top: 0;
  156. right: var(--spacing-09);
  157. width: initial;
  158. background-color: transparent;
  159. }
  160. .project-menu-item-tag-name {
  161. padding-right: var(--spacing-13);
  162. }
  163. ul.project-list-filters {
  164. .subdued {
  165. color: var(--content-disabled);
  166. }
  167. > li {
  168. cursor: pointer;
  169. position: relative;
  170. > button {
  171. &:hover,
  172. &:focus {
  173. text-decoration: none;
  174. }
  175. }
  176. &.separator {
  177. padding: var(--spacing-03) var(--spacing-06);
  178. cursor: auto;
  179. }
  180. }
  181. .dropdown-header {
  182. @include body-sm;
  183. padding: var(--spacing-05) var(--spacing-06);
  184. text-transform: uppercase;
  185. }
  186. > li.active {
  187. border-radius: 0;
  188. > button {
  189. font-weight: 700;
  190. }
  191. }
  192. h2 {
  193. font-size: var(--font-size-02);
  194. margin-bottom: var(--spacing-00);
  195. color: var(--content-disabled);
  196. text-transform: uppercase;
  197. padding: var(--spacing-03) var(--spacing-00);
  198. }
  199. > li.tag {
  200. &.active,
  201. &:focus-within {
  202. .tag-menu {
  203. display: block;
  204. }
  205. }
  206. &.untagged {
  207. button.tag-name {
  208. span.name {
  209. font-style: italic;
  210. padding-left: 0;
  211. }
  212. }
  213. }
  214. &:hover {
  215. .tag-menu {
  216. display: block;
  217. }
  218. }
  219. button.tag-name {
  220. position: relative;
  221. padding: var(--spacing-03) var(--spacing-09) var(--spacing-03)
  222. var(--spacing-06);
  223. display: flex;
  224. align-items: center;
  225. word-wrap: anywhere;
  226. .tag-list-icon {
  227. vertical-align: sub;
  228. font-weight: bold;
  229. }
  230. span.name {
  231. padding-left: 0.5em;
  232. line-height: 1.4;
  233. }
  234. }
  235. }
  236. .tag-menu {
  237. button.dropdown-toggle {
  238. background-color: transparent;
  239. display: flex;
  240. align-items: center;
  241. justify-content: center;
  242. position: relative;
  243. &::after {
  244. margin: 0;
  245. }
  246. }
  247. display: none;
  248. width: auto;
  249. position: absolute;
  250. top: 50%;
  251. margin-top: -8px; // Half the element height.
  252. right: 4px;
  253. &.open {
  254. display: block;
  255. }
  256. button.tag-action {
  257. border-radius: unset;
  258. width: 100%;
  259. background-color: transparent;
  260. border-color: transparent;
  261. color: var(--neutral-70);
  262. text-align: left;
  263. font-weight: normal;
  264. &:hover {
  265. color: var(--content-primary-dark);
  266. background-color: var(--bg-accent-01);
  267. }
  268. &:active {
  269. outline: none;
  270. }
  271. }
  272. }
  273. }
  274. .project-dash-table {
  275. width: 100%;
  276. table-layout: fixed;
  277. @include media-breakpoint-down(md) {
  278. tr:not(:last-child) {
  279. border-bottom: 1px solid var(--border-divider-themed);
  280. }
  281. td {
  282. border-bottom-width: 0;
  283. }
  284. }
  285. tbody {
  286. tr.no-projects:hover {
  287. td {
  288. box-shadow: none;
  289. }
  290. }
  291. }
  292. .table-header-sort-btn {
  293. border: 0;
  294. text-align: left;
  295. color: var(--content-secondary-themed);
  296. background-color: transparent;
  297. padding: 0;
  298. font-weight: bold;
  299. max-width: 100%;
  300. overflow: hidden;
  301. text-overflow: ellipsis;
  302. text-decoration: none;
  303. &:hover,
  304. &:focus {
  305. color: var(--content-secondary-themed);
  306. text-decoration: none;
  307. }
  308. .material-symbols {
  309. vertical-align: bottom;
  310. font-size: var(--font-size-06);
  311. }
  312. }
  313. .dash-cell-name {
  314. hyphens: auto;
  315. width: 50%;
  316. word-break: break-word;
  317. }
  318. .dash-cell-owner {
  319. width: 20%;
  320. overflow: hidden;
  321. text-overflow: ellipsis;
  322. }
  323. .dash-cell-date {
  324. width: 25%;
  325. }
  326. .dash-cell-actions {
  327. display: none;
  328. text-align: right;
  329. .btn {
  330. text-decoration: none;
  331. }
  332. }
  333. .dash-cell-date-owner {
  334. font-size: $font-size-sm;
  335. @include text-truncate;
  336. }
  337. .dash-cell-tag,
  338. .clone-project-tag {
  339. .badge-tag {
  340. margin-top: var(--spacing-06);
  341. margin-bottom: var(--spacing-06);
  342. &:first-child {
  343. margin-left: initial !important;
  344. }
  345. }
  346. }
  347. @include media-breakpoint-up(sm) {
  348. .dash-cell-checkbox {
  349. width: 4%;
  350. }
  351. .dash-cell-name {
  352. width: 50%;
  353. }
  354. .dash-cell-owner {
  355. width: 21%;
  356. }
  357. .dash-cell-date {
  358. width: 25%;
  359. }
  360. .dash-cell-actions {
  361. width: 0%;
  362. }
  363. }
  364. @include media-breakpoint-up(md) {
  365. .dash-cell-checkbox {
  366. width: 4%;
  367. }
  368. .dash-cell-name {
  369. width: 44%;
  370. }
  371. .dash-cell-owner {
  372. width: 16%;
  373. }
  374. .dash-cell-date {
  375. width: 21%;
  376. }
  377. .dash-cell-actions {
  378. display: table-cell;
  379. width: 15%;
  380. }
  381. .project-tools {
  382. float: none;
  383. }
  384. }
  385. @include media-breakpoint-up(lg) {
  386. .dash-cell-checkbox {
  387. width: 3%;
  388. }
  389. .dash-cell-name {
  390. width: 46%;
  391. }
  392. .dash-cell-owner {
  393. width: 13%;
  394. }
  395. .dash-cell-date {
  396. width: 16%;
  397. }
  398. .dash-cell-actions {
  399. width: 22%;
  400. }
  401. tbody {
  402. .dash-cell-actions {
  403. white-space: nowrap;
  404. }
  405. }
  406. }
  407. @include media-breakpoint-up(xl) {
  408. .dash-cell-checkbox {
  409. width: 3%;
  410. }
  411. .dash-cell-name {
  412. width: 46%;
  413. }
  414. .dash-cell-owner {
  415. width: 15%;
  416. }
  417. .dash-cell-date {
  418. width: 19%;
  419. }
  420. .dash-cell-actions {
  421. width: 17%;
  422. }
  423. }
  424. @include media-breakpoint-up(xxl) {
  425. .dash-cell-checkbox {
  426. width: 2%;
  427. }
  428. .dash-cell-name {
  429. width: 49%;
  430. }
  431. .dash-cell-owner {
  432. width: 16%;
  433. }
  434. .dash-cell-date {
  435. width: 19%;
  436. }
  437. .dash-cell-actions {
  438. width: 14%;
  439. }
  440. }
  441. @include media-breakpoint-down(md) {
  442. tr {
  443. position: relative;
  444. display: flex;
  445. flex-direction: column;
  446. td {
  447. padding-top: var(--spacing-02);
  448. padding-bottom: var(--spacing-02);
  449. }
  450. td:not(.dash-cell-actions) {
  451. padding-right: 55px;
  452. }
  453. }
  454. .dash-cell-name,
  455. .dash-cell-owner,
  456. .dash-cell-date,
  457. .dash-cell-tag,
  458. .dash-cell-actions {
  459. display: block;
  460. width: auto;
  461. }
  462. .dash-cell-actions {
  463. position: absolute;
  464. top: var(--spacing-04);
  465. right: var(--spacing-04);
  466. padding: 0 !important;
  467. }
  468. }
  469. }
  470. .current-plan {
  471. a.current-plan-label {
  472. text-decoration: none;
  473. color: var(--content-secondary-themed);
  474. }
  475. .current-plan-label-icon {
  476. vertical-align: text-bottom;
  477. color: var(--bg-info-01);
  478. }
  479. }
  480. /* stylelint-disable selector-class-pattern */
  481. .project-list-upload-project-modal-uppy-dashboard .uppy-Root {
  482. .uppy-Dashboard-AddFiles-title {
  483. display: flex;
  484. flex-direction: column;
  485. color: var(--neutral-60);
  486. white-space: pre-line;
  487. @include body-base;
  488. button.uppy-Dashboard-browse {
  489. @extend .btn;
  490. @extend .btn-lg;
  491. @extend .btn-primary;
  492. margin-bottom: var(--spacing-07);
  493. }
  494. }
  495. }
  496. .survey-notification {
  497. display: flex;
  498. flex-wrap: wrap;
  499. padding: var(--spacing-06);
  500. background-color: var(--bg-dark-tertiary);
  501. border-color: transparent;
  502. color: var(--neutral-20);
  503. box-shadow: 2px 4px 6px rgb(0 0 0 / 25%);
  504. border-radius: var(--border-radius-base);
  505. @include media-breakpoint-up(md) {
  506. flex-wrap: nowrap;
  507. }
  508. button.close {
  509. @extend .text-white;
  510. padding: 0;
  511. }
  512. }
  513. .project-list-sidebar-survey-wrapper {
  514. .survey-notification {
  515. font-size: var(--font-size-02);
  516. a {
  517. text-decoration: none;
  518. }
  519. }
  520. @include media-breakpoint-down(md) {
  521. .survey-notification {
  522. font-size: unset;
  523. .project-list-sidebar-survey-link {
  524. display: block;
  525. align-items: center;
  526. min-width: 48px;
  527. min-height: 48px;
  528. padding-top: var(--spacing-07);
  529. }
  530. }
  531. }
  532. }
  533. .project-list-load-more-button {
  534. margin-bottom: var(--spacing-05);
  535. }
  536. .clone-project-tag {
  537. display: flex;
  538. .form-label {
  539. margin-top: var(--spacing-01);
  540. }
  541. }
  542. form.project-search {
  543. .form-group {
  544. margin-bottom: 0;
  545. }
  546. }
  547. .add-affiliation-mobile-wrapper {
  548. padding: var(--spacing-07) 0;
  549. }
  550. .add-affiliation {
  551. .progress {
  552. height: var(--spacing-05);
  553. margin-bottom: var(--spacing-03);
  554. }
  555. p {
  556. margin-bottom: var(--spacing-03);
  557. }
  558. &.is-mobile p {
  559. @include body-xs;
  560. white-space: normal;
  561. }
  562. }
  563. .color-picker-item {
  564. height: 28px;
  565. width: 28px;
  566. cursor: pointer;
  567. position: relative;
  568. outline: none;
  569. border-radius: var(--border-radius-base);
  570. margin: 0 var(--spacing-06) 0 0;
  571. display: inline-block;
  572. vertical-align: middle;
  573. &:focus-visible {
  574. box-shadow:
  575. 0 0 0 2px var(--white),
  576. 0 0 0 3px var(--blue-50),
  577. 0 0 0 5px var(--blue-30);
  578. }
  579. &.more-button {
  580. border: 1px solid var(--neutral-70);
  581. .color-picker-more {
  582. color: var(--neutral-70);
  583. margin: 3px; // it's centered, no matching spacing variable
  584. font-weight: bold;
  585. @include media-breakpoint-down(md) {
  586. margin: 5px; // it's centered, no matching spacing variable
  587. }
  588. }
  589. .color-picker-more-open {
  590. color: var(--neutral-70);
  591. margin: 3px;
  592. font-weight: bold;
  593. @include media-breakpoint-down(md) {
  594. margin: 5px;
  595. }
  596. }
  597. }
  598. .color-picker-item-icon {
  599. margin: 3px; // it's centered, no matching spacing variable
  600. color: var(--content-primary-dark);
  601. font-weight: bold;
  602. }
  603. @include media-breakpoint-down(md) {
  604. height: 32px;
  605. width: 32px;
  606. margin: var(--spacing-08);
  607. .color-picker-item-icon {
  608. margin: 5px; // it's centered, no matching spacing variable
  609. color: var(--content-primary-dark);
  610. }
  611. }
  612. }
  613. .color-picker-more-wrapper {
  614. position: relative;
  615. display: inline-block;
  616. .custom-picker {
  617. position: absolute;
  618. user-select: none;
  619. z-index: 1;
  620. @include media-breakpoint-down(sm) {
  621. top: 56px;
  622. left: 24px;
  623. }
  624. }
  625. .popover-backdrop {
  626. position: fixed;
  627. inset: 0;
  628. }
  629. }