[ABANDONED] React/Redux front end for the Flexor social network.
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.

624 lines
12 KiB

5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. @charset "utf-8";
  2. @import "../../../node_modules/normalize.css/normalize.css";
  3. :root {
  4. --default-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
  5. --input-padding: 0.5rem 0.75rem;
  6. --content-width: 600px;
  7. --menu-width: 270px;
  8. --transition-duration: 1s;
  9. --color-primary: #000;
  10. --color-alternate: #ddd;
  11. --color-secondary: #333;
  12. --color-background-primary: #fff;
  13. --color-background-secondary: #eee;
  14. --color-text: #555;
  15. --color-red: #ff1a1a;
  16. --color-green: #00802b;
  17. --color-blue: #005ce6;
  18. }
  19. html {
  20. font-family: var(--default-font);
  21. font-size: 16px;
  22. font-weight: 300;
  23. }
  24. body {
  25. background-color: var(--color-background-primary);
  26. font-family: var(--default-font);
  27. line-height: 1.2;
  28. margin: 0px;
  29. padding: 0px;
  30. transition: background-color var(--transition-duration);
  31. }
  32. input, textarea, select {
  33. background-color: var(--color-background-secondary);
  34. border: solid 1px var(--color-primary);
  35. border-radius: 0;
  36. -webkit-box-sizing: border-box;
  37. box-sizing: border-box;
  38. color: var(--color-text);
  39. font-family: var(--default-font);
  40. font-size: 0.9rem;
  41. margin: 0px;
  42. outline: none;
  43. padding: var(--input-padding);
  44. transition: background-color var(--transition-duration), border var(--transition-duration);
  45. width: 100%;
  46. }
  47. select {
  48. -webkit-appearance: none;
  49. -moz-appearance: none;
  50. appearance: none;
  51. background: url(../images/caret-down.svg) 98% / 2% no-repeat #ccc;
  52. }
  53. input[type="file"] {
  54. display: none;
  55. }
  56. input[type="checkbox"] {
  57. margin: 0.75rem 0px;
  58. width: initial;
  59. }
  60. input[type="range"] {
  61. -webkit-appearance: none;
  62. -moz-appearance: none;
  63. appearance: none;
  64. background-color: var(--color-background-secondary);
  65. border-radius: 5px;
  66. display: block;
  67. height: 10px;
  68. outline: none;
  69. width: 8rem;
  70. }
  71. input[type="range"]::-webkit-slider-thumb {
  72. -webkit-appearance: none;
  73. -moz-appearance: none;
  74. appearance: none;
  75. background-color: var(--color-secondary);
  76. border-radius: 50%;
  77. cursor: pointer;
  78. height: 20px;
  79. width: 20px;
  80. }
  81. input[type="range"]::-moz-range-thumb {
  82. border-radius: 50%;
  83. cursor: pointer;
  84. height: 20px;
  85. width: 20px;
  86. }
  87. h1 {
  88. color: var(--color-primary);
  89. font-size: 2rem;
  90. margin: 0.5rem 0;
  91. transition: color var(--transition-duration);
  92. }
  93. h2 {
  94. color: var(--color-primary);
  95. font-size: 1.2rem;
  96. transition: color var(--transition-duration);
  97. }
  98. h1 + h2 {
  99. margin-top: -0.5rem;
  100. }
  101. a {
  102. text-decoration: none;
  103. }
  104. a:link {
  105. color: var(--color-primary);
  106. transition: color var(--transition-duration);
  107. }
  108. a:hover {
  109. color: var(--color-secondary);
  110. transition: color var(--transition-duration);
  111. }
  112. a:visited {
  113. color: var(--color-secondary);
  114. transition: color var(--transition-duration);
  115. }
  116. hr {
  117. border: 1px solid var(--color-primary);
  118. color: var(--color-primary);
  119. margin: 1rem 0px;
  120. transition: border var(--transition-duration), color var(--transition-duration);
  121. }
  122. main {
  123. background-color: var(--color-background-primary);
  124. color: var(--color-text);
  125. bottom: 0;
  126. display: flex;
  127. justify-content: center;
  128. left: 0;
  129. padding: 0px;
  130. position: absolute;
  131. right: 0;
  132. top: 0;
  133. transition: background-color var(--transition-duration), color var(--transition-duration);
  134. }
  135. section {
  136. background-color: var(--color-background-primary);
  137. color: var(--color-text);
  138. padding: 1rem;
  139. transition: background-color var(--transition-duration), color var(--transition-duration);
  140. }
  141. iframe {
  142. border: none;
  143. overflow: hidden;
  144. width: 100%;
  145. }
  146. button, label.file-input {
  147. border: none;
  148. border-radius: 25px;
  149. cursor: pointer;
  150. font-family: var(--default-font);
  151. font-size: 0.8rem;
  152. font-weight: 700;
  153. padding: 0.5rem 1rem;
  154. min-width: 100px;
  155. transition: background-color var(--transition-duration), color var(--transition-duration);
  156. }
  157. button.primary {
  158. background-color: var(--color-primary);
  159. color: var(--color-alternate);
  160. }
  161. button.secondary {
  162. background-color: var(--color-secondary);
  163. color: var(--color-secondary);
  164. }
  165. div.buttons {
  166. display: flex;
  167. justify-content: space-around;
  168. }
  169. div.logo-container {
  170. padding-top: 1rem;
  171. width: 60px;
  172. }
  173. div.logo {
  174. --size: 40px;
  175. --padding-top: 8px;
  176. background-color: var(--color-primary);
  177. border-radius: 90px;
  178. color: var(--color-alternate);
  179. cursor: pointer;
  180. font-size: 20px;
  181. font-weight: bold;
  182. height: calc(var(--size) - var(--padding-top));
  183. margin: 10px;
  184. padding-top: var(--padding-top);
  185. position: fixed;
  186. text-align: center;
  187. transition: background-color var(--transition-duration), color var(--transition-duration);
  188. width: var(--size);
  189. }
  190. div.content-container {
  191. background-color: var(--color-background-primary);
  192. width: var(--content-width);
  193. transition: background-color var(--transition-duration);
  194. }
  195. div.content {
  196. border-left: solid 1px var(--color-background-secondary);
  197. border-right: solid 1px var(--color-background-primary);
  198. padding-bottom: 3rem;
  199. transition: border-left var(--transition-duration), border-right var(--transition-duration);
  200. }
  201. div.menu-container {
  202. margin: 0px;
  203. padding: 0px;
  204. width: var(--menu-width);
  205. }
  206. div.menu {
  207. background-color: var(--color-background-secondary);
  208. border-color: var(--color-background-primary);
  209. bottom: 0;
  210. display: flex;
  211. flex-direction: column;
  212. margin: 0px;
  213. position: fixed;
  214. top: 0;
  215. transition: background-color var(--transition-duration), border-color var(--transition-duration);
  216. width: var(--menu-width);
  217. }
  218. div.menu > nav {
  219. flex-grow: 1;
  220. padding: 1rem;
  221. }
  222. div.menu > nav > div {
  223. margin-bottom: 0.9rem;
  224. }
  225. div.spinner {
  226. color: var(--color-primary);
  227. padding: 1rem;
  228. text-align: center;
  229. transition: color var(--transition-duration);
  230. }
  231. .icon {
  232. display: inline-block;
  233. margin-right: 5px;
  234. }
  235. footer {
  236. color: var(--color-text);
  237. font-size: 0.8rem;
  238. padding: 0.9rem;
  239. text-align: center;
  240. transition: color var(--transition-duration);
  241. }
  242. table {
  243. margin-top: 1rem;
  244. width: 100%;
  245. }
  246. table tr {
  247. transition: background-color var(--transition-duration);
  248. }
  249. table tr:nth-child(even) {
  250. background-color: transparent;
  251. }
  252. table tr:nth-child(odd) {
  253. background-color: var(--color-background-secondary);
  254. }
  255. table td {
  256. padding: 0.25rem;
  257. }
  258. span.tag {
  259. border-radius: 10px;
  260. display: inline-block;
  261. font-size: 0.75rem;
  262. padding: 5px;
  263. }
  264. div.tabs {
  265. background-color: var(--color-background-secondary);
  266. border-radius: 20px;
  267. display: flex;
  268. font-size: 1rem;
  269. justify-content: space-around;
  270. transition: background-color var(--transition-duration);
  271. }
  272. div.tabs > div {
  273. border-color: var(--color-primary);
  274. padding: 0.5rem;
  275. transition: border-color var(--transition-duration);
  276. }
  277. div.tabs > div.active {
  278. border-bottom: 3px solid;
  279. }
  280. div.progress {
  281. background-color: var(--color-background-secondary);
  282. border: 1px solid var(--color-primary);
  283. height: 1rem;
  284. margin: 1rem;
  285. max-height: 100px;
  286. min-height: 10px;
  287. padding: 0px;
  288. transition: background-color var(--transition-duration), border var(--transition-duration);
  289. }
  290. div.progress > div {
  291. background-color: var(--color-secondary);
  292. height: 100%;
  293. transition: background-color var(--transition-duration);
  294. }
  295. div.field {
  296. margin: 2rem 0px;
  297. }
  298. div.field label {
  299. color: var(--color-secondary);
  300. display: block;
  301. font-weight: 700;
  302. margin-bottom: 0.5rem;
  303. }
  304. div.field label.file-input, div.field label.checkbox {
  305. display: inline-block;
  306. }
  307. div.control-container {
  308. display: flex;
  309. padding: 0.5rem 0px;
  310. }
  311. div.control-icon {
  312. background-color: var(--color-primary);
  313. color: var(--color-alternate);
  314. margin: 0px;
  315. padding: var(--input-padding);
  316. transition: background-color var(--transition-duration), color var(--transition-duration);
  317. }
  318. div.control-icon > svg {
  319. vertical-align: middle;
  320. }
  321. div.control {
  322. flex-grow: 1;
  323. }
  324. p.help {
  325. color: var(--color-primary);
  326. font-size: 0.8rem;
  327. margin-top: -0.25rem;
  328. transition: color var(--transition-duration);
  329. }
  330. div.search {
  331. padding: 10px;
  332. text-align: center;
  333. }
  334. div.notification-container {
  335. bottom: 10px;
  336. position: fixed;
  337. left: 10px;
  338. width: 40%;
  339. }
  340. div.notification {
  341. border-radius: 5px;
  342. margin-bottom: 1rem;
  343. }
  344. div.notification > div {
  345. padding: 1rem;
  346. }
  347. button.delete {
  348. border: none;
  349. margin: 0px;
  350. min-width: 0px;
  351. padding: 0px;
  352. position: absolute;
  353. right: 10px;
  354. top: 3px;
  355. }
  356. nav.level {
  357. display: flex;
  358. justify-content: space-between;
  359. }
  360. nav.level > div {
  361. text-align: center;
  362. }
  363. nav.level p.label {
  364. color: var(--color-secondary);
  365. font-size: 0.9rem;
  366. font-weight: bold;
  367. transition: color var(--transition-duration);
  368. }
  369. nav.level p.content {
  370. color: var(--color-text);
  371. font-size: 1.1rem;
  372. transition: color var(--transition-duration);
  373. }
  374. p.label + p.content {
  375. margin-top: -10px;
  376. }
  377. div.member {
  378. margin-right: 10px;
  379. min-width: 150px;
  380. padding: 1rem;
  381. }
  382. div.composer-container {
  383. border-top: solid 1px var(--color-background-secondary);
  384. border-bottom: solid 1px var(--color-background-secondary);
  385. transition: border-top var(--transition-duration), border-bottom var(--transition-duration);
  386. }
  387. div.composer-empty, div.composer-error {
  388. font-size: 0.8rem;
  389. text-align: center;
  390. padding: 1.5rem;
  391. transition: background-color var(--transition-duration), color var(--transition-duration);
  392. }
  393. div.composer-empty {
  394. background-color: var(--color-background-secondary);
  395. color: var(--color-secondary);
  396. }
  397. div.composer-error {
  398. background-color: var(--color-background-secondary);
  399. color: var(--color-red);
  400. }
  401. div.installations {
  402. background-color: var(--color-background-secondary);
  403. display: flex;
  404. padding: 0.5rem;
  405. transition: background-color var(--transition-duration);
  406. }
  407. div.installations > div {
  408. border-right: solid 1px var(--color-background-primary);
  409. padding: 0.5rem;
  410. text-align: center;
  411. transition: border-right var(--transition-duration);
  412. }
  413. div.installations > div > p {
  414. font-size: 0.6rem;
  415. font-weight: bold;
  416. margin: 0px;
  417. padding: 0px;
  418. }
  419. div.user-info, div.group-info {
  420. align-items: center;
  421. display: flex;
  422. }
  423. div.user-info div.image, div.group-info, div.image {
  424. margin-right: 10px;
  425. }
  426. div.user-info {
  427. display: flex;
  428. padding: 1.5rem 1rem;
  429. }
  430. div.user-info-unauthenticated {
  431. padding: 1.5rem 1rem;
  432. text-align: center;
  433. }
  434. div.group-info {
  435. display: flex;
  436. }
  437. div.post {
  438. border-top: var(--default-border);
  439. border-bottom: var(--default-border);
  440. margin: 1rem 0px;
  441. }
  442. div.post div.post-content {
  443. padding: 1rem;
  444. }
  445. div.post div.cover {
  446. cursor: pointer;
  447. font-weight: bold;
  448. padding: 2rem;
  449. text-align: center;
  450. }
  451. div.post-info {
  452. border-top: var(--default-border);
  453. display: flex;
  454. font-size: 0.8rem;
  455. justify-content: space-between;
  456. }
  457. div.post-info > div {
  458. padding: 0.8rem;
  459. }
  460. p.caption {
  461. font-size: 0.75rem;
  462. margin-top: -0.1rem;
  463. }
  464. div.user {
  465. align-items: flex-start;
  466. display: flex;
  467. }
  468. div.user div.group div.image {
  469. display: inline-block;
  470. margin-right: 5px;
  471. vertical-align: sub;
  472. }
  473. div.theme-picker {
  474. display: flex;
  475. flex-wrap: wrap;
  476. margin: 0.5rem 0px;
  477. }
  478. div.theme-picker > div {
  479. --size: 25px;
  480. border: 2px solid;
  481. height: var(--size);
  482. margin-bottom: 10px;
  483. margin-right: 10px;
  484. width: var(--size);
  485. }
  486. div.theme-picker + div {
  487. font-size: 0.8rem;
  488. font-weight: 700;
  489. margin-top: -10px;
  490. }
  491. div.cover-image {
  492. width: var(--content-width);
  493. }
  494. div.cover-image img {
  495. width: var(--content-width);
  496. }
  497. div.header {
  498. display: flex;
  499. }
  500. div.cover-image + div.header {
  501. margin-top: -20px;
  502. }
  503. div.header img {
  504. width: 128px;
  505. }
  506. div.list-item {
  507. border-bottom: var(--default-border);
  508. margin-bottom: 1rem;
  509. padding: 1rem;
  510. }
  511. div.app-list-item, div.group-list-item {
  512. display: flex;
  513. margin: 1rem 0px;
  514. padding: 1rem;
  515. }
  516. div.app-list-item p, div.group-list-item p {
  517. font-size: 0.8rem;
  518. padding: 0.5rem;
  519. padding-top: 0px;
  520. }
  521. div.app-list-item img, div.group-list-item img {
  522. width: 64px;
  523. }