Merge remote-tracking branch 'hub/dev' into feature/auth-resend

This commit is contained in:
Untone 2024-02-15 16:51:45 +03:00
commit 912e40f9b1
23 changed files with 1285 additions and 1289 deletions

244
package-lock.json generated
View File

@ -46,35 +46,35 @@
"@solid-primitives/upload": "0.0.110", "@solid-primitives/upload": "0.0.110",
"@solidjs/meta": "0.29.1", "@solidjs/meta": "0.29.1",
"@thisbeyond/solid-select": "0.14.0", "@thisbeyond/solid-select": "0.14.0",
"@tiptap/core": "2.0.3", "@tiptap/core": "2.2.2",
"@tiptap/extension-blockquote": "2.0.3", "@tiptap/extension-blockquote": "2.2.2",
"@tiptap/extension-bold": "2.0.3", "@tiptap/extension-bold": "2.2.2",
"@tiptap/extension-bubble-menu": "2.0.3", "@tiptap/extension-bubble-menu": "2.2.2",
"@tiptap/extension-bullet-list": "2.0.3", "@tiptap/extension-bullet-list": "2.2.2",
"@tiptap/extension-character-count": "2.0.3", "@tiptap/extension-character-count": "2.2.2",
"@tiptap/extension-collaboration": "2.0.3", "@tiptap/extension-collaboration": "2.2.2",
"@tiptap/extension-collaboration-cursor": "2.0.3", "@tiptap/extension-collaboration-cursor": "2.2.2",
"@tiptap/extension-document": "2.0.3", "@tiptap/extension-document": "2.2.2",
"@tiptap/extension-dropcursor": "2.0.3", "@tiptap/extension-dropcursor": "2.2.2",
"@tiptap/extension-floating-menu": "2.0.3", "@tiptap/extension-floating-menu": "2.2.2",
"@tiptap/extension-focus": "2.0.3", "@tiptap/extension-focus": "2.2.2",
"@tiptap/extension-gapcursor": "2.0.3", "@tiptap/extension-gapcursor": "2.2.2",
"@tiptap/extension-hard-break": "2.0.3", "@tiptap/extension-hard-break": "2.2.2",
"@tiptap/extension-heading": "2.0.3", "@tiptap/extension-heading": "2.2.2",
"@tiptap/extension-highlight": "2.0.3", "@tiptap/extension-highlight": "2.2.2",
"@tiptap/extension-history": "2.0.3", "@tiptap/extension-history": "2.2.2",
"@tiptap/extension-horizontal-rule": "2.0.3", "@tiptap/extension-horizontal-rule": "2.2.2",
"@tiptap/extension-image": "2.0.3", "@tiptap/extension-image": "2.2.2",
"@tiptap/extension-italic": "2.0.3", "@tiptap/extension-italic": "2.2.2",
"@tiptap/extension-link": "2.0.3", "@tiptap/extension-link": "2.2.2",
"@tiptap/extension-list-item": "2.0.3", "@tiptap/extension-list-item": "2.2.2",
"@tiptap/extension-ordered-list": "2.0.3", "@tiptap/extension-ordered-list": "2.2.2",
"@tiptap/extension-paragraph": "2.0.3", "@tiptap/extension-paragraph": "2.2.2",
"@tiptap/extension-placeholder": "2.0.3", "@tiptap/extension-placeholder": "2.2.2",
"@tiptap/extension-strike": "2.0.3", "@tiptap/extension-strike": "2.2.2",
"@tiptap/extension-text": "2.0.3", "@tiptap/extension-text": "2.2.2",
"@tiptap/extension-underline": "2.0.3", "@tiptap/extension-underline": "2.2.2",
"@tiptap/extension-youtube": "2.0.3", "@tiptap/extension-youtube": "2.2.2",
"@types/js-cookie": "3.0.6", "@types/js-cookie": "3.0.6",
"@types/node": "20.9.0", "@types/node": "20.9.0",
"@urql/core": "4.2.3", "@urql/core": "4.2.3",
@ -104,7 +104,7 @@
"sass": "1.69.5", "sass": "1.69.5",
"solid-js": "1.8.7", "solid-js": "1.8.7",
"solid-popper": "0.3.0", "solid-popper": "0.3.0",
"solid-tiptap": "0.6.0", "solid-tiptap": "0.7.0",
"solid-transition-group": "0.2.3", "solid-transition-group": "0.2.3",
"sort-json": "2.0.1", "sort-json": "2.0.1",
"sort-package-json": "2.6.0", "sort-package-json": "2.6.0",
@ -4615,9 +4615,9 @@
} }
}, },
"node_modules/@tiptap/core": { "node_modules/@tiptap/core": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.2.tgz",
"integrity": "sha512-jLyVIWAdjjlNzrsRhSE2lVL/7N8228/1R1QtaVU85UlMIwHFAcdzhD8FeiKkqxpTnGpaDVaTy7VNEtEgaYdCyA==", "integrity": "sha512-fec26LtNgYFGhKzEA9+Of+qLKIKUxDL/XZQofoPcxP71NffcmpZ+ZjAx9NjnvuYtvylUSySZiPauY6WhN3aprw==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4628,9 +4628,9 @@
} }
}, },
"node_modules/@tiptap/extension-blockquote": { "node_modules/@tiptap/extension-blockquote": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.2.tgz",
"integrity": "sha512-rkUcFv2iL6f86DBBHoa4XdKNG2StvkJ7tfY9GoMpT46k3nxOaMTqak9/qZOo79TWxMLYtXzoxtKIkmWsbbcj4A==", "integrity": "sha512-ENCGx/yhNdUQ0epGOeTN4HFeUSfQDK2CQBy2szkQVtzG/Vhv8ExxBWTxHJcMoeSfEVmKag4B506vfRkKH24IMA==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4641,9 +4641,9 @@
} }
}, },
"node_modules/@tiptap/extension-bold": { "node_modules/@tiptap/extension-bold": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.2.tgz",
"integrity": "sha512-OGT62fMRovSSayjehumygFWTg2Qn0IDbqyMpigg/RUAsnoOI2yBZFVrdM2gk1StyoSay7gTn2MLw97IUfr7FXg==", "integrity": "sha512-8/KLpPHwO+GXlWsXEION7ppLfFIaSpnw5m2QYXz/LGRK32hzpTavbdXV3rx9+Vu+7Z+0yQF9G/ro1z9dqTQHpw==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4654,9 +4654,9 @@
} }
}, },
"node_modules/@tiptap/extension-bubble-menu": { "node_modules/@tiptap/extension-bubble-menu": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.2.tgz",
"integrity": "sha512-lPt1ELrYCuoQrQEUukqjp9xt38EwgPUwaKHI3wwt2Rbv+C6q1gmRsK1yeO/KqCNmFxNqF2p9ZF9srOnug/RZDQ==", "integrity": "sha512-W3OvoHxgBdQSrlX8FXvIs5wA+eHXe/0jGsqQdwLXPtqZOSR4Ks9OLmxDk2+O8ci0KCLPb6/doJYg7j/8Ic4KRg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"tippy.js": "^6.3.7" "tippy.js": "^6.3.7"
@ -4671,9 +4671,9 @@
} }
}, },
"node_modules/@tiptap/extension-bullet-list": { "node_modules/@tiptap/extension-bullet-list": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.2.tgz",
"integrity": "sha512-RtaLiRvZbMTOje+FW5bn+mYogiIgNxOm065wmyLPypnTbLSeHeYkoqVSqzZeqUn+7GLnwgn1shirUe6csVE/BA==", "integrity": "sha512-mZznxwymWitQRHYxEN8LX7theJdQ1/O6kUsvwDyHw42+jaCsZumTHEWGckBwkxk3BWWKbrkRGv/cC78sa3cNJw==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4684,9 +4684,9 @@
} }
}, },
"node_modules/@tiptap/extension-character-count": { "node_modules/@tiptap/extension-character-count": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-character-count/-/extension-character-count-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-character-count/-/extension-character-count-2.2.2.tgz",
"integrity": "sha512-Ge4aUmgYOmQR/HLPkbQSFKEywyRu6IalHAQmH3laY6LB9qrmT90AoaiFnaVCDpphYFQ7RygnBXJMgjtJ3WpZmw==", "integrity": "sha512-aObDoKXxVEi3sLaJFfaFLtKMH6e3zgKCkPhXOROUsrdapmvn/ubTuEXdVjiV9YZ7U6t57IYjlXV/jiVwDSgIjA==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4698,9 +4698,9 @@
} }
}, },
"node_modules/@tiptap/extension-collaboration": { "node_modules/@tiptap/extension-collaboration": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-2.2.2.tgz",
"integrity": "sha512-oA+5Dx+L1GfFrP2tUol8lfKNrLitYgHBaBJbAiqh/QPKVuUiEWgFS2W1oYaSGmwYjzdPCVJqXyQLzSJvEdnBWQ==", "integrity": "sha512-tbElPmwAFIbsE/2hF9TaZJPjc37X8HKmbDES/KB9gdf6g/RL1MQiDOeO0j/8szbIUBiBHnh8jejl2Pd9D8lz+A==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4709,13 +4709,13 @@
"peerDependencies": { "peerDependencies": {
"@tiptap/core": "^2.0.0", "@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0", "@tiptap/pm": "^2.0.0",
"y-prosemirror": "1.0.20" "y-prosemirror": "^1.2.1"
} }
}, },
"node_modules/@tiptap/extension-collaboration-cursor": { "node_modules/@tiptap/extension-collaboration-cursor": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration-cursor/-/extension-collaboration-cursor-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration-cursor/-/extension-collaboration-cursor-2.2.2.tgz",
"integrity": "sha512-pBcsk3ZkK8IQK6UP/a7Y4rjZRW/anhxFaTCcTxrUvn/azqRI+mcCsRwbc5lNLzcYq5JVOHGROjriNmGGkIr5jA==", "integrity": "sha512-98h1N5oP3E0jGOFLUa2e1gmrgRxlvHh2qULVkvvQo5et9tjPlKu7eCatCbFNnR5+jRoQSN1t77GZ9GcfIETVVw==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4723,13 +4723,13 @@
}, },
"peerDependencies": { "peerDependencies": {
"@tiptap/core": "^2.0.0", "@tiptap/core": "^2.0.0",
"y-prosemirror": "1.0.20" "y-prosemirror": "^1.2.1"
} }
}, },
"node_modules/@tiptap/extension-document": { "node_modules/@tiptap/extension-document": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.2.tgz",
"integrity": "sha512-PsYeNQQBYIU9ayz1R11Kv/kKNPFNIV8tApJ9pxelXjzcAhkjncNUazPN/dyho60mzo+WpsmS3ceTj/gK3bCtWA==", "integrity": "sha512-eUhpYq8ErVAlxuTg5wslc96mniEQs+VN+tFmRrx9Q0n0nG/aDKUQFDgcSMpAMpHK7+h7tGc/rDq+ydpzZhFXlQ==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4740,9 +4740,9 @@
} }
}, },
"node_modules/@tiptap/extension-dropcursor": { "node_modules/@tiptap/extension-dropcursor": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.2.tgz",
"integrity": "sha512-McthMrfusn6PjcaynJLheZJcXto8TaIW5iVitYh8qQrDXr31MALC/5GvWuiswmQ8bAXiWPwlLDYE/OJfwtggaw==", "integrity": "sha512-HxXEf6m+W3PnT63Ib49qAmcwmapZvmyWgq9cvB5kSfl/znQT04wBgShEigkgUBLqgcM/R/RI8NS1GQl1Zpv9iQ==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4754,9 +4754,9 @@
} }
}, },
"node_modules/@tiptap/extension-floating-menu": { "node_modules/@tiptap/extension-floating-menu": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.2.tgz",
"integrity": "sha512-zN1vRGRvyK3pO2aHRmQSOTpl4UJraXYwKYM009n6WviYKUNm0LPGo+VD4OAtdzUhPXyccnlsTv2p6LIqFty6Bg==", "integrity": "sha512-DRz9kzcPt7S8s22EQC+KS/ghnHRV6j7Qequ+0kLjfLYPdqj2u4G5xTrFM7sWfzUqf2HdH8SS8Yo9WFMYm69D9w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"tippy.js": "^6.3.7" "tippy.js": "^6.3.7"
@ -4771,9 +4771,9 @@
} }
}, },
"node_modules/@tiptap/extension-focus": { "node_modules/@tiptap/extension-focus": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-focus/-/extension-focus-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-focus/-/extension-focus-2.2.2.tgz",
"integrity": "sha512-WTJEmbGyHK8F/v1k5/5viLAa7PqtNoWOO4Qt4PBoUPlFDW97QMEh5m8Cvqw/RtbxTiGDHz6T+I5IJsKXGJed/A==", "integrity": "sha512-AAkFu4bdqOU/fnYs6sI2UfNxBEwkWAFfqUlwe6UYj5a0tQCcAXdP64JECEVRQPH91IY562jvs6MNHKPZpnfLQQ==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4785,9 +4785,9 @@
} }
}, },
"node_modules/@tiptap/extension-gapcursor": { "node_modules/@tiptap/extension-gapcursor": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.2.tgz",
"integrity": "sha512-6I9EzzsYOyyqDvDvxIK6Rv3EXB+fHKFj8ntHO8IXmeNJ6pkhOinuXVsW6Yo7TcDYoTj4D5I2MNFAW2rIkgassw==", "integrity": "sha512-qsE8yI9nZOLHg6XdFwn4BYMhR2f/50gppHJdsHx53575y2ci6uowMI+WjdEentl6yR9ctgV1jelHLs9ShmPzwQ==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4799,9 +4799,9 @@
} }
}, },
"node_modules/@tiptap/extension-hard-break": { "node_modules/@tiptap/extension-hard-break": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.2.tgz",
"integrity": "sha512-RCln6ARn16jvKTjhkcAD5KzYXYS0xRMc0/LrHeV8TKdCd4Yd0YYHe0PU4F9gAgAfPQn7Dgt4uTVJLN11ICl8sQ==", "integrity": "sha512-zbG6/7xyMim2fnRESIx2FiFHjdY7BXKMe+GUgLGPnRfXrJqSZhdVguBrtYGBnBFCnuSiOZZ6rFy+k5uORGSrhA==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4812,9 +4812,9 @@
} }
}, },
"node_modules/@tiptap/extension-heading": { "node_modules/@tiptap/extension-heading": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.2.tgz",
"integrity": "sha512-f0IEv5ms6aCzL80WeZ1qLCXTkRVwbpRr1qAETjg3gG4eoJN18+lZNOJYpyZy3P92C5KwF2T3Av00eFyVLIbb8Q==", "integrity": "sha512-oCd8VsLnrqJFY+lgA+5I/2EjBa4mQzB5DFLzCI460PfZnQJ2DmaNUdpY38BpHUv8E2PbBXzxxWS9h88yycW6yw==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4825,9 +4825,9 @@
} }
}, },
"node_modules/@tiptap/extension-highlight": { "node_modules/@tiptap/extension-highlight": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.2.2.tgz",
"integrity": "sha512-NrtibY8cZkIjZMQuHRrKd4php+plOvAoSo8g3uVFu275I/Ixt5HqJ53R4voCXs8W8BOBRs2HS2QX8Cjh79XhtA==", "integrity": "sha512-tNDx0u54H/cnBVfGflq7a9WHzPTOdDgz0BzSj3ujHT8xAZG+yQWhm8bnq0BZc+7xODbGIQ22ZEzypIC7KNUzZQ==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4838,9 +4838,9 @@
} }
}, },
"node_modules/@tiptap/extension-history": { "node_modules/@tiptap/extension-history": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.2.tgz",
"integrity": "sha512-00KHIcJ8kivn2ARI6NQYphv2LfllVCXViHGm0EhzDW6NQxCrriJKE3tKDcTFCu7LlC5doMpq9Z6KXdljc4oVeQ==", "integrity": "sha512-hcCEh7mP5H38ZY3YtbyyUOTNfKWAvITkJhVqjKbrRI3E+FOlG3pWPH3wz4srW5bHK38oUsiKwyP9FqC3C2Mixg==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4852,9 +4852,9 @@
} }
}, },
"node_modules/@tiptap/extension-horizontal-rule": { "node_modules/@tiptap/extension-horizontal-rule": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.2.tgz",
"integrity": "sha512-SZRUSh07b/M0kJHNKnfBwBMWrZBEm/E2LrK1NbluwT3DBhE+gvwiEdBxgB32zKHNxaDEXUJwUIPNC3JSbKvPUA==", "integrity": "sha512-5hun56M9elO6slOoDH03q2of06KB1rX8MLvfiKpfAvjbhmuQJav20fz2MQ2lCunek0D8mUIySwhfMvBrTcd90A==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4866,9 +4866,9 @@
} }
}, },
"node_modules/@tiptap/extension-image": { "node_modules/@tiptap/extension-image": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.2.2.tgz",
"integrity": "sha512-hS9ZJwz0md07EHsC+o4NuuJkhCZsZn7TuRz/2CvRSj2fWFIz+40CyNAHf/2J0qNugG9ommXaemetsADeEZP9ag==", "integrity": "sha512-fqZ2VB3K/c/Mi/2QTfav6CmTe33yGRkeQEivllSCCxgDD+kNYGto/P9maHSIJSG3RZWZHYfIPHmUJKfUlJRTXQ==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4879,9 +4879,9 @@
} }
}, },
"node_modules/@tiptap/extension-italic": { "node_modules/@tiptap/extension-italic": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.2.tgz",
"integrity": "sha512-cfS5sW0gu7qf4ihwnLtW/QMTBrBEXaT0sJl3RwkhjIBg/65ywJKE5Nz9ewnQHmDeT18hvMJJ1VIb4j4ze9jj9A==", "integrity": "sha512-l9NZK4vYqYY9Y5UskLQpdbvi0sXG4I/MuhRxPdjitK8E3SVhZxMnoNwCTkq0+I1xBjCD/jSrDMV4FqkKesrl2w==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4892,9 +4892,9 @@
} }
}, },
"node_modules/@tiptap/extension-link": { "node_modules/@tiptap/extension-link": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.2.tgz",
"integrity": "sha512-H72tXQ5rkVCkAhFaf08fbEU7EBUCK0uocsqOF+4th9sOlrhfgyJtc8Jv5EXPDpxNgG5jixSqWBo0zKXQm9s9eg==", "integrity": "sha512-hk2cxSWeFagv2erxVI4UUN9kTLqhTSLhtHKVNbKOW50dtkDqjzp9tri1+LYYpiObxDKoFFKfKjE6ojVtqMyn2w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"linkifyjs": "^4.1.0" "linkifyjs": "^4.1.0"
@ -4909,9 +4909,9 @@
} }
}, },
"node_modules/@tiptap/extension-list-item": { "node_modules/@tiptap/extension-list-item": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.2.tgz",
"integrity": "sha512-p7cUsk0LpM1PfdAuFE8wYBNJ3gvA0UhNGR08Lo++rt9UaCeFLSN1SXRxg97c0oa5+Ski7SrCjIJ5Ynhz0viTjQ==", "integrity": "sha512-VuHlbhLePXvKTx55X0iIZ1EXARAoOf6lpbKJK8180jny2gpYxGhk7rwG1G8s6G6ZDST+kyVa04gncxz8F/z6oA==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4922,9 +4922,9 @@
} }
}, },
"node_modules/@tiptap/extension-ordered-list": { "node_modules/@tiptap/extension-ordered-list": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.2.tgz",
"integrity": "sha512-ZB3MpZh/GEy1zKgw7XDQF4FIwycZWNof1k9WbDZOI063Ch4qHZowhVttH2mTCELuyvTMM/o9a8CS7qMqQB48bw==", "integrity": "sha512-TgG+mJyQB5CfeqCD65B9CLesl2IQTjc7tAKm8ZxRzF80GrCrmWNnoXi424TWmSF6cUV/4TY0G5dTkc9kB+S2tw==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4935,9 +4935,9 @@
} }
}, },
"node_modules/@tiptap/extension-paragraph": { "node_modules/@tiptap/extension-paragraph": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.2.tgz",
"integrity": "sha512-a+tKtmj4bU3GVCH1NE8VHWnhVexxX5boTVxsHIr4yGG3UoKo1c5AO7YMaeX2W5xB5iIA+BQqOPCDPEAx34dd2A==", "integrity": "sha512-USTzajni/hsQXsBF0Lbw++FyPJKCDlROyaKbZi77QQoUsU2MbJIka7k4tGc0kwyTB04aAl+E6+0iS4xIhC3rug==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4948,9 +4948,9 @@
} }
}, },
"node_modules/@tiptap/extension-placeholder": { "node_modules/@tiptap/extension-placeholder": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.2.2.tgz",
"integrity": "sha512-Z42jo0termRAf0S0L8oxrts94IWX5waU4isS2CUw8xCUigYyCFslkhQXkWATO1qRbjNFLKN2C9qvCgGf4UeBrw==", "integrity": "sha512-dPN15nVu+HlONJSCiKjEl9n5/61CltTLSefhyRVQJeE7lmtMUGrsErUdOYMxGskehDQWIQW1VM0OiF63ln/3sA==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4962,9 +4962,9 @@
} }
}, },
"node_modules/@tiptap/extension-strike": { "node_modules/@tiptap/extension-strike": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.2.tgz",
"integrity": "sha512-RO4/EYe2iPD6ifDHORT8fF6O9tfdtnzxLGwZIKZXnEgtweH+MgoqevEzXYdS+54Wraq4TUQGNcsYhe49pv7Rlw==", "integrity": "sha512-0wsqiZPatw9QrK3DJ1jCMukenc8DRQtEXo4/dQjtnzNDhe7ZySed6kPpGO9A4lASG7NV7GmYZ/k5iEELr+iE6Q==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4975,9 +4975,9 @@
} }
}, },
"node_modules/@tiptap/extension-text": { "node_modules/@tiptap/extension-text": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.2.tgz",
"integrity": "sha512-LvzChcTCcPSMNLUjZe/A9SHXWGDHtvk73fR7CBqAeNU0MxhBPEBI03GFQ6RzW3xX0CmDmjpZoDxFMB+hDEtW1A==", "integrity": "sha512-Zj53Vp/9MSQj5uiaObFaD3y7grUpMy+PfHmrK5XAZSFhRx+QpGUp+oItlKod6IJEIu8rq4dChgE7i6kT9uwWlA==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -4988,9 +4988,9 @@
} }
}, },
"node_modules/@tiptap/extension-underline": { "node_modules/@tiptap/extension-underline": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.2.2.tgz",
"integrity": "sha512-oMYa7qib/5wJjpUp79GZEe+E/iyf1oZBsgiG26IspEtVTHZmpn3+Ktud7l43y/hpTeEzFTKOF1/uVbayHtSERg==", "integrity": "sha512-sCgbFbBU1fMWKCmDjZ6Am257kXM6ZjCV24AwbNusweieQnnD3aTXC7/iZg101sa2VshLsXozm8t2QDTyafnL+Q==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -5001,9 +5001,9 @@
} }
}, },
"node_modules/@tiptap/extension-youtube": { "node_modules/@tiptap/extension-youtube": {
"version": "2.0.3", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/@tiptap/extension-youtube/-/extension-youtube-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@tiptap/extension-youtube/-/extension-youtube-2.2.2.tgz",
"integrity": "sha512-iZsMr+88I3hvfbJNLmiPsz2/8ZGpMucyCxRbrZGg1D6wBw4oiUhRPHzGJ3APlECzpanCjyQNMHIk/gvSDDX3ig==", "integrity": "sha512-kBLIRxEAfQbd/YmMuVeeqJLXb9p1pviAtPFmlufCt3tXeBc6Lqz9iOscdqOHOFSiNdzvFnN7016kKEpOwLftSw==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@ -13644,9 +13644,9 @@
} }
}, },
"node_modules/solid-tiptap": { "node_modules/solid-tiptap": {
"version": "0.6.0", "version": "0.7.0",
"resolved": "https://registry.npmjs.org/solid-tiptap/-/solid-tiptap-0.6.0.tgz", "resolved": "https://registry.npmjs.org/solid-tiptap/-/solid-tiptap-0.7.0.tgz",
"integrity": "sha512-79soXY4lSGkCdlfKalawGyvPE0kOvrKd7w9Zy3o3MY4dppti5Yd2RUVqyNPtYPpvCyqaLg+kofq81RRGl/Ql4Q==", "integrity": "sha512-EIOopM1gcV6Pjp6R5l5iQy5RqFodDpHzQDRdDJAqffi3XqMSu6lzd7dcDtb1DPbZtvl1uNTXRxmpUGGvB8KD0A==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"

View File

@ -66,35 +66,35 @@
"@solid-primitives/upload": "0.0.110", "@solid-primitives/upload": "0.0.110",
"@solidjs/meta": "0.29.1", "@solidjs/meta": "0.29.1",
"@thisbeyond/solid-select": "0.14.0", "@thisbeyond/solid-select": "0.14.0",
"@tiptap/core": "2.0.3", "@tiptap/core": "2.2.2",
"@tiptap/extension-blockquote": "2.0.3", "@tiptap/extension-blockquote": "2.2.2",
"@tiptap/extension-bold": "2.0.3", "@tiptap/extension-bold": "2.2.2",
"@tiptap/extension-bubble-menu": "2.0.3", "@tiptap/extension-bubble-menu": "2.2.2",
"@tiptap/extension-bullet-list": "2.0.3", "@tiptap/extension-bullet-list": "2.2.2",
"@tiptap/extension-character-count": "2.0.3", "@tiptap/extension-character-count": "2.2.2",
"@tiptap/extension-collaboration": "2.0.3", "@tiptap/extension-collaboration": "2.2.2",
"@tiptap/extension-collaboration-cursor": "2.0.3", "@tiptap/extension-collaboration-cursor": "2.2.2",
"@tiptap/extension-document": "2.0.3", "@tiptap/extension-document": "2.2.2",
"@tiptap/extension-dropcursor": "2.0.3", "@tiptap/extension-dropcursor": "2.2.2",
"@tiptap/extension-floating-menu": "2.0.3", "@tiptap/extension-floating-menu": "2.2.2",
"@tiptap/extension-focus": "2.0.3", "@tiptap/extension-focus": "2.2.2",
"@tiptap/extension-gapcursor": "2.0.3", "@tiptap/extension-gapcursor": "2.2.2",
"@tiptap/extension-hard-break": "2.0.3", "@tiptap/extension-hard-break": "2.2.2",
"@tiptap/extension-heading": "2.0.3", "@tiptap/extension-heading": "2.2.2",
"@tiptap/extension-highlight": "2.0.3", "@tiptap/extension-highlight": "2.2.2",
"@tiptap/extension-history": "2.0.3", "@tiptap/extension-history": "2.2.2",
"@tiptap/extension-horizontal-rule": "2.0.3", "@tiptap/extension-horizontal-rule": "2.2.2",
"@tiptap/extension-image": "2.0.3", "@tiptap/extension-image": "2.2.2",
"@tiptap/extension-italic": "2.0.3", "@tiptap/extension-italic": "2.2.2",
"@tiptap/extension-link": "2.0.3", "@tiptap/extension-link": "2.2.2",
"@tiptap/extension-list-item": "2.0.3", "@tiptap/extension-list-item": "2.2.2",
"@tiptap/extension-ordered-list": "2.0.3", "@tiptap/extension-ordered-list": "2.2.2",
"@tiptap/extension-paragraph": "2.0.3", "@tiptap/extension-paragraph": "2.2.2",
"@tiptap/extension-placeholder": "2.0.3", "@tiptap/extension-placeholder": "2.2.2",
"@tiptap/extension-strike": "2.0.3", "@tiptap/extension-strike": "2.2.2",
"@tiptap/extension-text": "2.0.3", "@tiptap/extension-text": "2.2.2",
"@tiptap/extension-underline": "2.0.3", "@tiptap/extension-underline": "2.2.2",
"@tiptap/extension-youtube": "2.0.3", "@tiptap/extension-youtube": "2.2.2",
"@types/js-cookie": "3.0.6", "@types/js-cookie": "3.0.6",
"@types/node": "20.9.0", "@types/node": "20.9.0",
"@urql/core": "4.2.3", "@urql/core": "4.2.3",
@ -124,7 +124,7 @@
"sass": "1.69.5", "sass": "1.69.5",
"solid-js": "1.8.7", "solid-js": "1.8.7",
"solid-popper": "0.3.0", "solid-popper": "0.3.0",
"solid-tiptap": "0.6.0", "solid-tiptap": "0.7.0",
"solid-transition-group": "0.2.3", "solid-transition-group": "0.2.3",
"sort-json": "2.0.1", "sort-json": "2.0.1",
"sort-package-json": "2.6.0", "sort-package-json": "2.6.0",

View File

@ -16,13 +16,10 @@ import { ConditionalWrapper } from '../../_shared/ConditionalWrapper'
import { Icon } from '../../_shared/Icon' import { Icon } from '../../_shared/Icon'
import { Userpic } from '../Userpic' import { Userpic } from '../Userpic'
import { FollowedInfo } from '../../../pages/types'
import stylesButton from '../../_shared/Button/Button.module.scss' import stylesButton from '../../_shared/Button/Button.module.scss'
import styles from './AuthorBadge.module.scss' import styles from './AuthorBadge.module.scss'
type FollowedInfo = {
value?: boolean
loaded?: boolean
}
type Props = { type Props = {
author: Author author: Author
minimizeSubscribeButton?: boolean minimizeSubscribeButton?: boolean

View File

@ -308,7 +308,13 @@ export const AuthorCard = (props: Props) => {
author={subscription} author={subscription}
/> />
) : ( ) : (
<TopicBadge topic={subscription} /> <TopicBadge
isFollowed={{
loaded: Boolean(authorSubs()),
value: isOwnerSubscribed(subscription.id),
}}
topic={subscription}
/>
) )
} }
</For> </For>

View File

@ -1,10 +1,13 @@
.TopicBadge { .TopicBadge {
display: flex;
flex-direction: row;
align-items: flex-start;
margin-bottom: 2rem; margin-bottom: 2rem;
gap: 1rem; gap: 1rem;
.content {
align-items: flex-start;
display: flex;
flex-direction: row;
margin-bottom: .8rem;
}
.basicInfo { .basicInfo {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
@ -78,3 +81,34 @@
width: 9em; width: 9em;
} }
} }
.stats {
@include font-size(1.5rem);
color: var(--secondary-color);
display: flex;
margin: 0 0 1em;
@include media-breakpoint-down(md) {
flex-wrap: wrap;
}
@include media-breakpoint-down(sm) {
margin-top: 0.5em;
}
.statsItem {
@include font-size(1.4rem);
margin-right: 1.6rem;
white-space: nowrap;
&:last-child {
margin-right: 0;
}
&.followers {
word-break: keep-all;
}
}
}

View File

@ -1,5 +1,5 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createEffect, createSignal } from 'solid-js' import { Show, createEffect, createSignal, on } from 'solid-js'
import { useFollowing } from '../../../context/following' import { useFollowing } from '../../../context/following'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '../../../context/localize'
@ -11,11 +11,14 @@ import { getImageUrl } from '../../../utils/getImageUrl'
import { Button } from '../../_shared/Button' import { Button } from '../../_shared/Button'
import { CheckButton } from '../../_shared/CheckButton' import { CheckButton } from '../../_shared/CheckButton'
import { FollowedInfo } from '../../../pages/types'
import styles from './TopicBadge.module.scss' import styles from './TopicBadge.module.scss'
type Props = { type Props = {
topic: Topic topic: Topic
minimizeSubscribeButton?: boolean minimizeSubscribeButton?: boolean
isFollowed?: FollowedInfo
showStat?: boolean
} }
export const TopicBadge = (props: Props) => { export const TopicBadge = (props: Props) => {
@ -24,12 +27,12 @@ export const TopicBadge = (props: Props) => {
const [isMobileView, setIsMobileView] = createSignal(false) const [isMobileView, setIsMobileView] = createSignal(false)
const { requireAuthentication } = useSession() const { requireAuthentication } = useSession()
const { setFollowing, loading: subLoading } = useFollowing() const { setFollowing, loading: subLoading } = useFollowing()
const [followed, setFollowed] = createSignal() const [isFollowed, setIsFollowed] = createSignal<boolean>()
const handleFollowClick = () => { const handleFollowClick = () => {
const value = !followed() const value = !isFollowed()
requireAuthentication(() => { requireAuthentication(() => {
setFollowed(value) setIsFollowed(value)
setFollowing(FollowingEntity.Topic, props.topic.slug, value) setFollowing(FollowingEntity.Topic, props.topic.slug, value)
}, 'subscribe') }, 'subscribe')
} }
@ -38,67 +41,85 @@ export const TopicBadge = (props: Props) => {
setIsMobileView(!mediaMatches.sm) setIsMobileView(!mediaMatches.sm)
}) })
createEffect(
on(
() => props.isFollowed,
() => {
setIsFollowed(props.isFollowed.value)
},
),
)
const title = () => const title = () =>
lang() === 'en' ? capitalize(props.topic.slug.replaceAll('-', ' ')) : props.topic.title lang() === 'en' ? capitalize(props.topic.slug.replaceAll('-', ' ')) : props.topic.title
return ( return (
<div class={styles.TopicBadge}> <div class={styles.TopicBadge}>
<div class={styles.basicInfo}> <div class={styles.content}>
<a <div class={styles.basicInfo}>
href={`/topic/${props.topic.slug}`} <a
class={clsx(styles.picture, { href={`/topic/${props.topic.slug}`}
[styles.withImage]: props.topic.pic, class={clsx(styles.picture, {
[styles.smallSize]: isMobileView(), [styles.withImage]: props.topic.pic,
})} [styles.smallSize]: isMobileView(),
style={ })}
props.topic.pic && { style={
'background-image': `url('${getImageUrl(props.topic.pic, { width: 40, height: 40 })}')`, props.topic.pic && {
'background-image': `url('${getImageUrl(props.topic.pic, { width: 40, height: 40 })}')`,
}
} }
} />
/> <a href={`/topic/${props.topic.slug}`} class={styles.info}>
<a href={`/topic/${props.topic.slug}`} class={styles.info}> <span class={styles.title}>{title()}</span>
<span class={styles.title}>{title()}</span> <Show
when={props.topic.body}
fallback={
<div class={styles.description}>
{t('PublicationsWithCount', { count: props.topic.stat.shouts ?? 0 })}
</div>
}
>
<div class={clsx('text-truncate', styles.description)}>{props.topic.body}</div>
</Show>
</a>
</div>
<div class={styles.actions}>
<Show <Show
when={props.topic.body} when={!props.minimizeSubscribeButton}
fallback={ fallback={
<div class={styles.description}> <CheckButton text={t('Follow')} checked={Boolean(isFollowed())} onClick={handleFollowClick} />
{t('PublicationsWithCount', { count: props.topic.stat.shouts ?? 0 })}
</div>
} }
> >
<div class={clsx('text-truncate', styles.description)}>{props.topic.body}</div> <Show
</Show> when={isFollowed()}
</a> fallback={
</div> <Button
variant="primary"
<div class={styles.actions}> size="S"
<Show value={subLoading() ? t('subscribing...') : t('Subscribe')}
when={!props.minimizeSubscribeButton} onClick={handleFollowClick}
fallback={ class={styles.subscribeButton}
<CheckButton text={t('Follow')} checked={Boolean(followed())} onClick={handleFollowClick} /> />
} }
> >
<Show
when={followed()}
fallback={
<Button <Button
variant="primary"
size="S"
value={subLoading() ? t('subscribing...') : t('Subscribe')}
onClick={handleFollowClick} onClick={handleFollowClick}
variant="bordered"
size="S"
value={t('Following')}
class={styles.subscribeButton} class={styles.subscribeButton}
/> />
} </Show>
>
<Button
onClick={handleFollowClick}
variant="bordered"
size="S"
value={t('Following')}
class={styles.subscribeButton}
/>
</Show> </Show>
</Show> </div>
</div>
<div class={styles.stats}>
<span class={styles.statsItem}>{t('shoutsWithCount', { count: props.topic?.stat?.shouts })}</span>
<span class={styles.statsItem}>{t('authorsWithCount', { count: props.topic?.stat?.authors })}</span>
<span class={styles.statsItem}>
{t('followersWithCount', { count: props.topic?.stat?.followers })}
</span>
</div> </div>
</div> </div>
) )

View File

@ -32,45 +32,6 @@
} }
} }
.stats {
@include font-size(1.7rem);
color: #9fa1a7;
display: flex;
margin: 0 0 1em;
@include media-breakpoint-down(md) {
flex-wrap: wrap;
}
@include media-breakpoint-down(sm) {
margin-top: 0.5em;
}
.statsItem {
@include font-size(1.5rem);
margin-right: 1.6rem;
white-space: nowrap;
&:last-child {
margin-right: 0;
}
&.compact {
font-size: small;
}
&.followers {
word-break: keep-all;
}
&.button {
float: right;
}
}
}
.loadMoreContainer { .loadMoreContainer {
margin-top: 48px; margin-top: 48px;
text-align: center; text-align: center;

View File

@ -1,21 +1,22 @@
import type { Topic } from '../../graphql/schema/core.gen' import type { Topic } from '../../../graphql/schema/core.gen'
import { Meta } from '@solidjs/meta' import { Meta } from '@solidjs/meta'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createEffect, createMemo, createSignal } from 'solid-js' import { For, Show, createEffect, createMemo, createSignal } from 'solid-js'
import { useFollowing } from '../../context/following' import { useFollowing } from '../../../context/following'
import { useLocalize } from '../../context/localize' import { useLocalize } from '../../../context/localize'
import { useRouter } from '../../stores/router' import { useRouter } from '../../../stores/router'
import { setTopicsSort, useTopicsStore } from '../../stores/zine/topics' import { setTopicsSort, useTopicsStore } from '../../../stores/zine/topics'
import { capitalize } from '../../utils/capitalize' import { capitalize } from '../../../utils/capitalize'
import { dummyFilter } from '../../utils/dummyFilter' import { dummyFilter } from '../../../utils/dummyFilter'
import { getImageUrl } from '../../utils/getImageUrl' import { getImageUrl } from '../../../utils/getImageUrl'
import { scrollHandler } from '../../utils/scroll' import { scrollHandler } from '../../../utils/scroll'
import { TopicCard } from '../Topic/Card' import { TopicCard } from '../../Topic/Card'
import { Loading } from '../_shared/Loading' import { Loading } from '../../_shared/Loading'
import { SearchField } from '../_shared/SearchField' import { SearchField } from '../../_shared/SearchField'
import { TopicBadge } from '../../Topic/TopicBadge'
import styles from './AllTopics.module.scss' import styles from './AllTopics.module.scss'
type AllTopicsPageSearchParams = { type AllTopicsPageSearchParams = {
@ -29,7 +30,7 @@ type Props = {
const PAGE_SIZE = 20 const PAGE_SIZE = 20
export const AllTopicsView = (props: Props) => { export const AllTopics = (props: Props) => {
const { t, lang } = useLocalize() const { t, lang } = useLocalize()
const { searchParams, changeSearchParams } = useRouter<AllTopicsPageSearchParams>() const { searchParams, changeSearchParams } = useRouter<AllTopicsPageSearchParams>()
const [limit, setLimit] = createSignal(PAGE_SIZE) const [limit, setLimit] = createSignal(PAGE_SIZE)
@ -41,8 +42,6 @@ export const AllTopicsView = (props: Props) => {
sortBy: searchParams().by || 'shouts', sortBy: searchParams().by || 'shouts',
}) })
const { subscriptions } = useFollowing()
createEffect(() => { createEffect(() => {
if (!searchParams().by) { if (!searchParams().by) {
changeSearchParams({ changeSearchParams({
@ -76,7 +75,7 @@ export const AllTopicsView = (props: Props) => {
return keys return keys
}) })
const subscribed = (topicSlug: string) => subscriptions.topics.some((topic) => topic.slug === topicSlug) const { isOwnerSubscribed } = useFollowing()
const showMore = () => setLimit((oldLimit) => oldLimit + PAGE_SIZE) const showMore = () => setLimit((oldLimit) => oldLimit + PAGE_SIZE)
const [searchQuery, setSearchQuery] = createSignal('') const [searchQuery, setSearchQuery] = createSignal('')
@ -186,28 +185,18 @@ export const AllTopicsView = (props: Props) => {
<Show when={searchParams().by && searchParams().by !== 'title'}> <Show when={searchParams().by && searchParams().by !== 'title'}>
<div class="row"> <div class="row">
<div class="col-lg-20 col-xl-18"> <div class="col-lg-20 col-xl-18 py-4">
<For each={filteredResults().slice(0, limit())}> <For each={filteredResults().slice(0, limit())}>
{(topic) => ( {(topic) => (
<> <>
<TopicCard <TopicBadge
topic={topic} topic={topic}
compact={false} isFollowed={{
subscribed={subscribed(topic.slug)} loaded: filteredResults().length > 0,
showPublications={true} value: isOwnerSubscribed(topic.slug),
showDescription={true} }}
showStat={true}
/> />
<div class={styles.stats}>
<span class={styles.statsItem}>
{t('shoutsWithCount', { count: topic.stat.shouts })}
</span>
<span class={styles.statsItem}>
{t('authorsWithCount', { count: topic.stat.authors })}
</span>
<span class={styles.statsItem}>
{t('followersWithCount', { count: topic.stat.followers })}
</span>
</div>
</> </>
)} )}
</For> </For>

View File

@ -0,0 +1 @@
export { AllTopics } from './AllTopics'

View File

@ -128,7 +128,6 @@ export const AuthorView = (props: Props) => {
const data = await apiClient.getReactionsBy({ const data = await apiClient.getReactionsBy({
by: { comment: false, created_by: commenter.id }, by: { comment: false, created_by: commenter.id },
}) })
console.debug('[components.Author] fetched comments', data)
setCommented(data) setCommented(data)
} }

View File

@ -12,17 +12,15 @@ export const StaticPage = (props: Props) => {
return ( return (
<PageLayout title={props.title}> <PageLayout title={props.title}>
<div class="wide-container"> <article
class="wide-container container--static-page"
id="articleBody"
ref={(el) => (articleBodyElement.current = el)}
>
<div class="row"> <div class="row">
<article <div class="col-md-12 col-xl-14 offset-md-5 order-md-first">{props.children}</div>
class="col-md-16 col-lg-14 col-xl-12 offset-md-5"
id="articleBody"
ref={(el) => (articleBodyElement.current = el)}
>
{props.children}
</article>
<div class="col-md-6 offset-md-1"> <div class="col-md-6 col-lg-4 order-md-last">
<TableOfContents <TableOfContents
variant="article" variant="article"
parentSelector="#articleBody" parentSelector="#articleBody"
@ -30,7 +28,7 @@ export const StaticPage = (props: Props) => {
/> />
</div> </div>
</div> </div>
</div> </article>
</PageLayout> </PageLayout>
) )
} }

View File

@ -20,7 +20,7 @@ interface FollowingContextType {
loadSubscriptions: () => void loadSubscriptions: () => void
follow: (what: FollowingEntity, slug: string) => Promise<void> follow: (what: FollowingEntity, slug: string) => Promise<void>
unfollow: (what: FollowingEntity, slug: string) => Promise<void> unfollow: (what: FollowingEntity, slug: string) => Promise<void>
isOwnerSubscribed: (userId: number) => boolean isOwnerSubscribed: (id: number | string) => boolean
} }
const FollowingContext = createContext<FollowingContextType>() const FollowingContext = createContext<FollowingContextType>()
@ -109,9 +109,11 @@ export const FollowingProvider = (props: { children: JSX.Element }) => {
} }
} }
const isOwnerSubscribed = (userId: number) => { const isOwnerSubscribed = (id?: number | string) => {
if (!author()) return if (!author() || !subscriptions) return
return !!subscriptions?.authors?.some((authorEntity) => authorEntity.id === userId) const isAuthorSubscribed = subscriptions.authors?.some((authorEntity) => authorEntity.id === id)
const isTopicSubscribed = subscriptions.topics?.some((topicEntity) => topicEntity.slug === id)
return !!isAuthorSubscribed || !!isTopicSubscribed
} }
const value: FollowingContextType = { const value: FollowingContextType = {

View File

@ -15,115 +15,113 @@ export const DiscussionRulesPage = () => {
return ( return (
<StaticPage title={ogTitle}> <StaticPage title={ogTitle}>
<article class="wide-container container--static-page"> <Meta name="descprition" content={description} />
<Meta name="descprition" content={description} /> <Meta name="keywords" content={t('principles keywords')} />
<Meta name="keywords" content={t('principles keywords')} /> <Meta name="og:type" content="article" />
<Meta name="og:type" content="article" /> <Meta name="og:title" content={ogTitle} />
<Meta name="og:title" content={ogTitle} /> <Meta name="og:image" content={ogImage} />
<Meta name="og:image" content={ogImage} /> <Meta name="twitter:image" content={ogImage} />
<Meta name="twitter:image" content={ogImage} /> <Meta name="og:description" content={description} />
<Meta name="og:description" content={description} /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:description" content={description} />
<Meta name="twitter:description" content={description} />
<h1>{ogTitle}</h1> <h1>{ogTitle}</h1>
<p> <p>
Открытая редакция существует благодаря дружному сообществу авторов и&nbsp;читателей&nbsp;&mdash; Открытая редакция существует благодаря дружному сообществу авторов и&nbsp;читателей&nbsp;&mdash;
вдумчивых и&nbsp;сознательных людей, приверженных ценностям гуманизма, демократии и&nbsp;прав вдумчивых и&nbsp;сознательных людей, приверженных ценностям гуманизма, демократии и&nbsp;прав
человека. Мы&nbsp;очень ценим атмосферу осмысленного общения, которая здесь сложилась. Чтобы человека. Мы&nbsp;очень ценим атмосферу осмысленного общения, которая здесь сложилась. Чтобы
сохранить ее&nbsp;такой&nbsp;же уютной и&nbsp;творческой, мы&nbsp;составили правила общения сохранить ее&nbsp;такой&nbsp;же уютной и&nbsp;творческой, мы&nbsp;составили правила общения
в&nbsp;сообществе, руководствуясь которыми каждый мог&nbsp;бы соучаствовать в&nbsp;плодотворных в&nbsp;сообществе, руководствуясь которыми каждый мог&nbsp;бы соучаствовать в&nbsp;плодотворных
дискуссиях, не&nbsp;задевая других. Ключевой принцип этих правил предельно прост&nbsp;&mdash; дискуссиях, не&nbsp;задевая других. Ключевой принцип этих правил предельно прост&nbsp;&mdash;
уважайте ближних, постарайтесь не&nbsp;нарушать законы Российской Федерации без крайней уважайте ближних, постарайтесь не&nbsp;нарушать законы Российской Федерации без крайней
на&nbsp;то&nbsp;необходимости и&nbsp;помните, что в&nbsp;дискуссиях чутких и&nbsp;здравомыслящих на&nbsp;то&nbsp;необходимости и&nbsp;помните, что в&nbsp;дискуссиях чутких и&nbsp;здравомыслящих
людей рождается истина. людей рождается истина.
</p> </p>
<h3>За&nbsp;что можно получить дырку в&nbsp;карме и&nbsp;выиграть бан в&nbsp;сообществе</h3> <h3>За&nbsp;что можно получить дырку в&nbsp;карме и&nbsp;выиграть бан в&nbsp;сообществе</h3>
<ol> <ol>
<li> <li>
<p> <p>
Оскорбления, личные нападки, травля и&nbsp;угрозы. В&nbsp;любом виде. Конкретного человека или Оскорбления, личные нападки, травля и&nbsp;угрозы. В&nbsp;любом виде. Конкретного человека или
социальной группы&nbsp;&mdash; не&nbsp;суть. Агрессия, переход на&nbsp;личности социальной группы&nbsp;&mdash; не&nbsp;суть. Агрессия, переход на&nbsp;личности
и&nbsp;токсичность едва&nbsp;ли способствуют плодотворному общению. и&nbsp;токсичность едва&nbsp;ли способствуют плодотворному общению.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Шовинизм, расизм, сексизм, гомофобия, пропаганда ненависти, педофилии, суицида, Шовинизм, расизм, сексизм, гомофобия, пропаганда ненависти, педофилии, суицида, распространение
распространение детской порнографии и&nbsp;другого человеконенавистнического контента. детской порнографии и&nbsp;другого человеконенавистнического контента.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Спам, реклама, фейкньюз, ссылки на&nbsp;пропагандистские СМИ, вбросы дезинформации, специально Спам, реклама, фейкньюз, ссылки на&nbsp;пропагандистские СМИ, вбросы дезинформации, специально
уводящий от&nbsp;темы флуд, провокации, разжигание конфликтов, намеренный срыв дискуссий. уводящий от&nbsp;темы флуд, провокации, разжигание конфликтов, намеренный срыв дискуссий.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Неаргументированная критика и&nbsp;комментарии вроде &laquo;отстой&raquo;, &laquo;зачем Неаргументированная критика и&nbsp;комментарии вроде &laquo;отстой&raquo;, &laquo;зачем
я&nbsp;это увидел/а&raquo;, &laquo;не&nbsp;читал, но&nbsp;осуждаю&raquo;, &laquo;либераху я&nbsp;это увидел/а&raquo;, &laquo;не&nbsp;читал, но&nbsp;осуждаю&raquo;, &laquo;либераху
порвало&raquo;, &laquo;лол&raquo;, &laquo;скатились&raquo;, &laquo;первый нах&raquo; порвало&raquo;, &laquo;лол&raquo;, &laquo;скатились&raquo;, &laquo;первый нах&raquo; и&nbsp;тому
и&nbsp;тому подобные. Односложные реплики не&nbsp;подразумевают возможность обогащающего подобные. Односложные реплики не&nbsp;подразумевают возможность обогащающего диалога,
диалога, не&nbsp;продуктивны и&nbsp;никак не&nbsp;помогают авторам делать материалы лучше, не&nbsp;продуктивны и&nbsp;никак не&nbsp;помогают авторам делать материалы лучше,
а&nbsp;читателям&nbsp;&mdash; разобраться. а&nbsp;читателям&nbsp;&mdash; разобраться.
</p> </p>
</li> </li>
</ol> </ol>
<h3>За&nbsp;что можно получить лучи добра и&nbsp;благодарности в&nbsp;сообществе</h3> <h3>За&nbsp;что можно получить лучи добра и&nbsp;благодарности в&nbsp;сообществе</h3>
<ol> <ol>
<li> <li>
<p> <p>
<strong>Вежливость и&nbsp;конструктивность.</strong> Мы&nbsp;выступаем за&nbsp;конструктивный <strong>Вежливость и&nbsp;конструктивность.</strong> Мы&nbsp;выступаем за&nbsp;конструктивный
диалог, аргументированные комментарии и&nbsp;доброжелательное отношение друг к&nbsp;другу. диалог, аргументированные комментарии и&nbsp;доброжелательное отношение друг к&nbsp;другу.
Задавайте содержательные вопросы, пишите развернутые комментарии, подкрепляйте Задавайте содержательные вопросы, пишите развернутые комментарии, подкрепляйте
их&nbsp;аргументами, чтобы диалог был полезен всем участникам, помогая глубже понять тему их&nbsp;аргументами, чтобы диалог был полезен всем участникам, помогая глубже понять тему
и&nbsp;разобраться в&nbsp;вопросе. И, пожалуйста, уважайте собеседника, даже если он&nbsp;вам и&nbsp;разобраться в&nbsp;вопросе. И, пожалуйста, уважайте собеседника, даже если он&nbsp;вам
лично не&nbsp;импонирует: только так получаются продуктивные дискуссии. лично не&nbsp;импонирует: только так получаются продуктивные дискуссии.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
<strong>Обмен знаниями и&nbsp;историями.</strong> Осмысленные высказывания по&nbsp;теме поста, <strong>Обмен знаниями и&nbsp;историями.</strong> Осмысленные высказывания по&nbsp;теме поста,
оригинальные рассуждения, рассказы о&nbsp;личном опыте и&nbsp;проектах, обмен профессиональной оригинальные рассуждения, рассказы о&nbsp;личном опыте и&nbsp;проектах, обмен профессиональной
экспертизой, наблюдения и&nbsp;реальные истории из&nbsp;жизни&nbsp;&mdash; чем больше экспертизой, наблюдения и&nbsp;реальные истории из&nbsp;жизни&nbsp;&mdash; чем больше
мы&nbsp;делимся друг с&nbsp;другом знаниями, тем интереснее и&nbsp;плодотворнее становится мы&nbsp;делимся друг с&nbsp;другом знаниями, тем интереснее и&nbsp;плодотворнее становится наше
наше общение. Помните, что каждый вдумчивый ответ повышает качество дискуссий общение. Помните, что каждый вдумчивый ответ повышает качество дискуссий в&nbsp;сообществе
в&nbsp;сообществе и&nbsp;делает чтение самиздата ещё интереснее. и&nbsp;делает чтение самиздата ещё интереснее.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
<strong>Чувство юмора и&nbsp;добродушие.</strong> Остроумие и&nbsp;дружелюбие не&nbsp;только <strong>Чувство юмора и&nbsp;добродушие.</strong> Остроумие и&nbsp;дружелюбие не&nbsp;только
направляют дискуссии в&nbsp;продуктивное русло, но&nbsp;и&nbsp;улучшают настроение. направляют дискуссии в&nbsp;продуктивное русло, но&nbsp;и&nbsp;улучшают настроение.
Не&nbsp;вредите негативом, которого в&nbsp;интернете и&nbsp;без нас хватает, Не&nbsp;вредите негативом, которого в&nbsp;интернете и&nbsp;без нас хватает,
и&nbsp;не&nbsp;травите на&nbsp;корню классные инициативы&nbsp;&mdash; всё великое начинается и&nbsp;не&nbsp;травите на&nbsp;корню классные инициативы&nbsp;&mdash; всё великое начинается
с&nbsp;малого. Мы&nbsp;за&nbsp;поддерживающую и&nbsp;вдохновляющую атмосферу с&nbsp;малого. Мы&nbsp;за&nbsp;поддерживающую и&nbsp;вдохновляющую атмосферу в&nbsp;сообществе.
в&nbsp;сообществе. Надеемся, вы&nbsp;тоже. Надеемся, вы&nbsp;тоже.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
<strong>Благодарность и&nbsp;поддержка.</strong> Если публикация вам зашла, <strong>Благодарность и&nbsp;поддержка.</strong> Если публикация вам зашла, не&nbsp;стесняйтесь
не&nbsp;стесняйтесь ставить лайки, делиться понравившимися материалами, благодарить авторов, ставить лайки, делиться понравившимися материалами, благодарить авторов, читателей, художников
читателей, художников и&nbsp;редакторов в&nbsp;комментариях. Цените и&nbsp;поддерживайте и&nbsp;редакторов в&nbsp;комментариях. Цените и&nbsp;поддерживайте классные проекты, сильные
классные проекты, сильные тексты, новое искусство, осмысленные комментарии и&nbsp;вклад других тексты, новое искусство, осмысленные комментарии и&nbsp;вклад других
в&nbsp;самиздат&nbsp;&mdash; сотрудничество делает нас сильнее и&nbsp;усиливает звучание идей в&nbsp;самиздат&nbsp;&mdash; сотрудничество делает нас сильнее и&nbsp;усиливает звучание идей
и&nbsp;смыслов, которые помогают лучше понимать мир. и&nbsp;смыслов, которые помогают лучше понимать мир.
</p> </p>
</li> </li>
</ol> </ol>
</article>
</StaticPage> </StaticPage>
) )
} }

View File

@ -23,47 +23,49 @@ export const DogmaPage = () => {
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:description" content={description} /> <Meta name="twitter:description" content={description} />
<article class="wide-container container--static-page">
<h4>Редакционные принципы</h4> <h1>
<p> <span class="wrapped">Редакционные принципы</span>
Дискурс журнал с открытой горизонтальной редакцией. Содержание журнала определяется прямым </h1>
голосованием его авторов. Мы нередко занимаем различные позиции по разным проблемам, но
придерживаемся общих профессиональных принципов: <p>
</p> Дискурс журнал с открытой горизонтальной редакцией. Содержание журнала определяется прямым
<ol> голосованием его авторов. Мы нередко занимаем различные позиции по разным проблемам, но
<li> придерживаемся общих профессиональных принципов:
<b>На первое место ставим факты.</b> Наша задача не судить, а наблюдать и непредвзято </p>
фиксировать происходящее. Все утверждения и выводы, которые мы делаем, подтверждаются фактами, <ol>
цифрами, мнениями экспертов или ссылками на авторитетные источники. <li>
</li> <b>На первое место ставим факты.</b> Наша задача не судить, а наблюдать и непредвзято
<li> фиксировать происходящее. Все утверждения и выводы, которые мы делаем, подтверждаются фактами,
<b>Ответственно относимся к источникам.</b> цифрами, мнениями экспертов или ссылками на авторитетные источники.
Мы выбираем только надежные источники, проверяем информацию и рассказываем, как и откуда мы её </li>
получили, кроме случаев, когда это может нанести вред источникам. Тогда мы не раскроем их, даже <li>
в суде. <b>Ответственно относимся к источникам.</b>
</li> Мы выбираем только надежные источники, проверяем информацию и рассказываем, как и откуда мы её
<li> получили, кроме случаев, когда это может нанести вред источникам. Тогда мы не раскроем их, даже в
<b>Выбираем компетентных и независимых экспертов</b>, понимая всю степень ответственности перед суде.
аудиторией. </li>
</li> <li>
<li> <b>Выбираем компетентных и независимых экспертов</b>, понимая всю степень ответственности перед
<b> аудиторией.
Даем возможность высказаться всем заинтересованным сторонам, но не присоединяемся ни к чьему </li>
лагерю. <li>
</b> <b>
Ко всем событиям, компаниям и людям мы относимся с одинаковым скептицизмом. Даем возможность высказаться всем заинтересованным сторонам, но не присоединяемся ни к чьему
</li> лагерю.
<li> </b>
<b>Всегда исправляем ошибки, если мы их допустили.</b> Ко всем событиям, компаниям и людям мы относимся с одинаковым скептицизмом.
Никто не безгрешен, иногда и мы ошибаемся. Заметили ошибку отправьте{' '} </li>
<a href="/about/guide#editing">ремарку</a> автору или напишите нам на{' '} <li>
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> <b>Всегда исправляем ошибки, если мы их допустили.</b>
welcome@discours.io Никто не безгрешен, иногда и мы ошибаемся. Заметили ошибку отправьте{' '}
</a> <a href="/about/guide#editing">ремарку</a> автору или напишите нам на{' '}
. <a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
</li> welcome@discours.io
</ol> </a>
</article> .
</li>
</ol>
</StaticPage> </StaticPage>
) )
} }

View File

@ -24,38 +24,37 @@ export const GuidePage = () => {
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:description" content={description} /> <Meta name="twitter:description" content={description} />
<article class="wide-container container--static-page">
<h1 id="about">
<span class="wrapped">{ogTitle}</span>
</h1>
<p> <h1 id="about">
Дискурс&nbsp;&mdash; независимый журнал о&nbsp;культуре, науке, искусстве и&nbsp;обществе <span class="wrapped">{ogTitle}</span>
с&nbsp; </h1>
<a href="/about/manifest">открытой редакцией</a>. У&nbsp;нас нет главного редактора, инвестора
и&nbsp;вообще никого, кто&nbsp;бы принимал единоличные решения. Вместо традиционных иерархий <p>
Дискурс основан на&nbsp;принципах прямой демократии: в&nbsp;нашем горизонтальном сообществе все Дискурс&nbsp;&mdash; независимый журнал о&nbsp;культуре, науке, искусстве и&nbsp;обществе с&nbsp;
редакционные вопросы решаются открытым голосованием авторов журнала. Вот как это работает. <a href="/about/manifest">открытой редакцией</a>. У&nbsp;нас нет главного редактора, инвестора
</p> и&nbsp;вообще никого, кто&nbsp;бы принимал единоличные решения. Вместо традиционных иерархий
<h3 id="how-it-works">Как устроен сайт Дискурса</h3> Дискурс основан на&nbsp;принципах прямой демократии: в&nbsp;нашем горизонтальном сообществе все
<p>Дискурс состоит из&nbsp;четырех основных разделов:</p> редакционные вопросы решаются открытым голосованием авторов журнала. Вот как это работает.
<ul> </p>
<li> <h3 id="how-it-works">Как устроен сайт Дискурса</h3>
<p> <p>Дискурс состоит из&nbsp;четырех основных разделов:</p>
<a href="/topics">Темы</a> <ul>
&nbsp;&mdash; у&nbsp;нас публикуются исследования, обзоры, эссе, интервью, репортажи, <li>
аналитика и&nbsp;другие материалы о&nbsp;культуре, науке, искусстве и&nbsp;обществе. <p>
</p> <a href="/topics">Темы</a>
</li> &nbsp;&mdash; у&nbsp;нас публикуются исследования, обзоры, эссе, интервью, репортажи,
<li> аналитика и&nbsp;другие материалы о&nbsp;культуре, науке, искусстве и&nbsp;обществе.
<p> </p>
<a href="/topic/art">Искусство</a> </li>
&nbsp;&mdash; здесь, например, представлены художественные произведения: литература, <li>
живопись, музыка, фотографии, видео. Этот раздел помогает прозвучать новому искусству, <p>
которое создают российские художники, писатели, режиссёры и&nbsp;музыканты. <a href="/topic/art">Искусство</a>
</p> &nbsp;&mdash; здесь, например, представлены художественные произведения: литература, живопись,
</li> музыка, фотографии, видео. Этот раздел помогает прозвучать новому искусству, которое создают
{/* российские художники, писатели, режиссёры и&nbsp;музыканты.
</p>
</li>
{/*
<li> <li>
<p> <p>
<a href="/topic/events">События</a>&nbsp; в&nbsp;этом разделе <a href="/topic/events">События</a>&nbsp; в&nbsp;этом разделе
@ -76,172 +75,170 @@ export const GuidePage = () => {
</p> </p>
</li> </li>
*/} */}
</ul> </ul>
<p> <p>
Материалы в&nbsp;Дискурсе объединяются по&nbsp;<b>темам</b> Материалы в&nbsp;Дискурсе объединяются по&nbsp;<b>темам</b>
&mdash;&nbsp;ключевым словам, которые располагаются в&nbsp;конце материалов и&nbsp;связывают &mdash;&nbsp;ключевым словам, которые располагаются в&nbsp;конце материалов и&nbsp;связывают
материалы по&nbsp;жанрам (например, <a href="/topic/interview">интервью</a>,{' '} материалы по&nbsp;жанрам (например, <a href="/topic/interview">интервью</a>,{' '}
<a href="/topic/reportage">репортажи</a>, <a href="/topic/essay">эссе</a>,{' '} <a href="/topic/reportage">репортажи</a>, <a href="/topic/essay">эссе</a>,{' '}
<a href="/topic/likbez">ликбезы</a> <a href="/topic/likbez">ликбезы</a>
), по&nbsp;тематике (<a href="/topic/cinema">кино</a>, <a href="/topic/philosophy">философия</a> ), по&nbsp;тематике (<a href="/topic/cinema">кино</a>, <a href="/topic/philosophy">философия</a>,{' '}
, <a href="/topic/history">история</a>, <a href="/topic/absurdism">абсурдизм</a>,{' '} <a href="/topic/history">история</a>, <a href="/topic/absurdism">абсурдизм</a>,{' '}
<a href="/topic/sex">секс</a> и&nbsp;т.д.) или в&nbsp;серии (как &laquo; <a href="/topic/sex">секс</a> и&nbsp;т.д.) или в&nbsp;серии (как &laquo;
<a href="/topic/zakony-mira">Законы мира</a>&raquo; или &laquo; <a href="/topic/zakony-mira">Законы мира</a>&raquo; или &laquo;
<a href="/topic/za-liniey-mannergeyma">За&nbsp;линией Маннергейма</a> <a href="/topic/za-liniey-mannergeyma">За&nbsp;линией Маннергейма</a>
&raquo;). Темы объединяют сотни публикаций, помогают ориентироваться в&nbsp;журнале &raquo;). Темы объединяют сотни публикаций, помогают ориентироваться в&nbsp;журнале и&nbsp;следить
и&nbsp;следить за&nbsp;интересными материалами. за&nbsp;интересными материалами.
</p> </p>
<section> <section>
<h3 id="become-author">Как стать автором журнала</h3> <h3 id="become-author">Как стать автором журнала</h3>
<p>
Дискурс объединяет журналистов, активистов, музыкантов, художников, фотографов, режиссеров,
философов, ученых и&nbsp;других замечательных людей. Каждый может <a href="/create">прислать</a>{' '}
свой материал в&nbsp;журнал. Формат и&nbsp;тематика не&nbsp;имеют значения, единственное, что
важно &mdash; <a href="/how-to-write-a-good-article">хороший</a> ли&nbsp;материал. Если
сообщество поддержит вашу публикацию, она выйдет в&nbsp;журнале и&nbsp;станет доступна тысячам
наших читателей.
</p>
</section>
<h3 id="voting">Как проходит голосование</h3>
<p>
Все присылаемые в&nbsp;Дискурс материалы попадают в&nbsp;
<strong>&laquo;Редакцию&raquo;</strong>. Это внутренний раздел сайта, где участники сообщества
решают, что будет опубликовано в&nbsp;Дискурсе. Как только работа получает одобрение как минимум
пятерых авторов открытой редакции, она немедленно публикуется в&nbsp;журнале. Если&nbsp;же
материал набирает более&nbsp;20% голосов &laquo;против&raquo;, он&nbsp;не&nbsp;выходит
и&nbsp;может быть отправлен на&nbsp;доработку. Жестких сроков рассмотрения материалов у&nbsp;нас
нет, иногда это занимает час, иногда месяц, обычно&nbsp;&mdash; несколько дней.
</p>
<section>
<p>
Как только сообщество поддержит публикацию, вы&nbsp;получите приглашение
в&nbsp;интернет-редакцию и&nbsp;сможете голосовать за&nbsp;новые материалы.
</p>
</section>
<h3 id="editing">Как мы&nbsp;делаем тексты друг друга лучше</h3>
<p>
Дискурс&nbsp;&mdash; журнал с&nbsp;совместным редактированием. Совершенствовать тексты нам
помогает <b>система ремарок</b>. Вы&nbsp;можете выделить часть текста в&nbsp;любой статье
и&nbsp;оставить к&nbsp;ней замечание, вопрос или предложение&nbsp;&mdash; автор текста получит
совет на&nbsp;почту и&nbsp;сможет его учесть. Так мы&nbsp;устраняем опечатки, неточности
и&nbsp;советуем друг другу, как сделать тексты качественнее и&nbsp;интереснее.
</p>
<p>
Среди участников сообщества есть профессиональные редакторы, которые помогают авторам делать
тексты лучше. Если вашему материалу потребуется доработка, они помогут отредактировать текст,
подобрать иллюстрации, придумать заголовок и&nbsp;красиво сверстать публикацию. Если
вы&nbsp;хотите обсудить текст, прежде чем загрузить материал в интернет-редакцию&nbsp;&mdash;
разместите его в&nbsp;google-документе, откройте доступ к&nbsp;редактированию по&nbsp;ссылке
и&nbsp;напишите нам на&nbsp;
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io
</a>
.
</p>
<p>
Если у&nbsp;вас возникают трудности с&nbsp;тем, чтобы подобрать к&nbsp;своему материалу
иллюстрации, тоже пишите на&nbsp;
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
почту
</a>
&mdash; наши коллеги-художники могут вам помочь{' '}
<a href="/create?collab" target="_blank" rel="noreferrer">
в&nbsp;режиме совместного редактирования
</a>
.
</p>
<h3 id="perks">Что сообщество дает авторам</h3>
<ul>
<li>
<p> <p>
Дискурс объединяет журналистов, активистов, музыкантов, художников, фотографов, режиссеров, <strong>Право определять, каким будет журнал</strong>. Дискурс&nbsp;&mdash; это общественная
философов, ученых и&nbsp;других замечательных людей. Каждый может{' '} институция, созданная людьми и&nbsp;ради людей, функционирующая на&nbsp;условиях прямой
<a href="/create">прислать</a> свой материал в&nbsp;журнал. Формат и&nbsp;тематика демократии. Авторы публикуют статьи и&nbsp;художественные проекты, участвуют
не&nbsp;имеют значения, единственное, что важно &mdash;{' '} в&nbsp;обсуждениях, голосуют за&nbsp;работы коллег и&nbsp;таким образом вносят свой вклад
<a href="/how-to-write-a-good-article">хороший</a> ли&nbsp;материал. Если сообщество поддержит в&nbsp;развитие проекта, определяя содержание и&nbsp;направление журнала.
вашу публикацию, она выйдет в&nbsp;журнале и&nbsp;станет доступна тысячам наших читателей.
</p> </p>
</section> </li>
<li>
<h3 id="voting">Как проходит голосование</h3>
<p>
Все присылаемые в&nbsp;Дискурс материалы попадают в&nbsp;
<strong>&laquo;Редакцию&raquo;</strong>. Это внутренний раздел сайта, где участники сообщества
решают, что будет опубликовано в&nbsp;Дискурсе. Как только работа получает одобрение как минимум
пятерых авторов открытой редакции, она немедленно публикуется в&nbsp;журнале. Если&nbsp;же
материал набирает более&nbsp;20% голосов &laquo;против&raquo;, он&nbsp;не&nbsp;выходит
и&nbsp;может быть отправлен на&nbsp;доработку. Жестких сроков рассмотрения материалов у&nbsp;нас
нет, иногда это занимает час, иногда месяц, обычно&nbsp;&mdash; несколько дней.
</p>
<section>
<p> <p>
Как только сообщество поддержит публикацию, вы&nbsp;получите приглашение <strong>Возможность обратиться к&nbsp;широкой аудитории</strong>. Дискурс читают десятки тысяч
в&nbsp;интернет-редакцию и&nbsp;сможете голосовать за&nbsp;новые материалы. людей, и&nbsp;с&nbsp;каждым днем их&nbsp;становится больше.
</p> </p>
</section> </li>
<li>
<p>
<strong>Поддержка редакции</strong>. Дискурс предоставляет авторам аккредитацию
на&nbsp;мероприятия, базу контактов, юридическую поддержку, ознакомление с&nbsp;книжными,
кино- и&nbsp;музыкальными новинками до&nbsp;их&nbsp;выхода в&nbsp;свет. Если что-то
из&nbsp;этого вам понадобится, пишите на&nbsp;почту{' '}
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io
</a>
&nbsp;&mdash; поможем.
</p>
</li>
<li>
<p>
<strong>Пресс-карты для корреспондентов</strong>. Три опубликованные статьи позволяют авторам
Дискурса получить официальные удостоверения журналистов (пресс-карты) на&nbsp;следующий год.
Пресс-карты удостоверяют, что вы&nbsp;журналист и&nbsp;можете пользоваться всеми теми правами,
которые гарантирует Закон о&nbsp;СМИ. Кроме того, многие культурные институции (музеи, галереи
и&nbsp;др.) предоставляют журналистам право свободного входа.
</p>
</li>
<li>
<p>
<strong>Помощь сотен специалистов в&nbsp;разных областях</strong>. В&nbsp;основе Дискурса
лежит идея совместного редактирования. Участники редакционного сообщества&nbsp;&mdash;
несколько сотен журналистов, исследователей, художников, литераторов из&nbsp;разных стран
&mdash; изучают материалы друг друга до&nbsp;публикации и&nbsp;помогают сделать
их&nbsp;качественнее и&nbsp;интереснее. Так, в&nbsp;редакции нередко складываются творческие
союзы: например, авторов текстов и&nbsp;художников, создающих для них иллюстрации.
</p>
</li>
<li>
<p>
<strong>Пространство общения полное выдающихся людей</strong>. Дискурс&nbsp;&mdash; большое
живое сообщество интеллектуалов, разбросанных по&nbsp;всему земному шару. Вступив
в&nbsp;редакцию, вы&nbsp;сможете познакомиться со&nbsp;множеством интересных людей, которые
определяют повестку завтрашнего дня, вдохновляют окружающих, создают новое и&nbsp;изучают
старое, ищут знания и&nbsp;готовы ими делиться, чтобы менять мир в&nbsp;соответствии
со&nbsp;своими идеалами.
</p>
</li>
</ul>
<h3 id="editing">Как мы&nbsp;делаем тексты друг друга лучше</h3> <h3 id="contacts">Как быть в&nbsp;курсе</h3>
<p> <p>
Дискурс&nbsp;&mdash; журнал с&nbsp;совместным редактированием. Совершенствовать тексты нам За&nbsp;свежими публикациями Дискурса можно следить не&nbsp;только на&nbsp;сайте,
помогает <b>система ремарок</b>. Вы&nbsp;можете выделить часть текста в&nbsp;любой статье но&nbsp;и&nbsp;на&nbsp;страницах в&nbsp;
и&nbsp;оставить к&nbsp;ней замечание, вопрос или предложение&nbsp;&mdash; автор текста получит <a href="https://facebook.com/discoursio/" target="_blank" rel="noreferrer">
совет на&nbsp;почту и&nbsp;сможет его учесть. Так мы&nbsp;устраняем опечатки, неточности Фейсбуке
и&nbsp;советуем друг другу, как сделать тексты качественнее и&nbsp;интереснее. </a>
</p> ,{' '}
<p> <a href="https://vk.com/discoursio" target="_blank" rel="noreferrer">
Среди участников сообщества есть профессиональные редакторы, которые помогают авторам делать ВКонтакте
тексты лучше. Если вашему материалу потребуется доработка, они помогут отредактировать текст, </a>{' '}
подобрать иллюстрации, придумать заголовок и&nbsp;красиво сверстать публикацию. Если и&nbsp;
вы&nbsp;хотите обсудить текст, прежде чем загрузить материал в интернет-редакцию&nbsp;&mdash; <a href="https://t.me/discoursio" target="_blank" rel="noreferrer">
разместите его в&nbsp;google-документе, откройте доступ к&nbsp;редактированию по&nbsp;ссылке Телеграме
и&nbsp;напишите нам на&nbsp; </a>
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> . А&nbsp;ещё раз в&nbsp;месяц мы&nbsp;отправляем <a href="#subscribe">почтовую рассылку</a>{' '}
welcome@discours.io с&nbsp;дайджестом лучших материалов.
</a> </p>
. <p>
</p> Если вы&nbsp;хотите сотрудничать, что-то обсудить или предложить &mdash; пожалуйста, пишите
<p> на&nbsp;
Если у&nbsp;вас возникают трудности с&nbsp;тем, чтобы подобрать к&nbsp;своему материалу <a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
иллюстрации, тоже пишите на&nbsp; welcome@discours.io
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> </a>
почту . Мы&nbsp;обязательно ответим.
</a> </p>
&mdash; наши коллеги-художники могут вам помочь{' '}
<a href="/create?collab" target="_blank" rel="noreferrer">
в&nbsp;режиме совместного редактирования
</a>
.
</p>
<h3 id="perks">Что сообщество дает авторам</h3>
<ul>
<li>
<p>
<strong>Право определять, каким будет журнал</strong>. Дискурс&nbsp;&mdash; это общественная
институция, созданная людьми и&nbsp;ради людей, функционирующая на&nbsp;условиях прямой
демократии. Авторы публикуют статьи и&nbsp;художественные проекты, участвуют
в&nbsp;обсуждениях, голосуют за&nbsp;работы коллег и&nbsp;таким образом вносят свой вклад
в&nbsp;развитие проекта, определяя содержание и&nbsp;направление журнала.
</p>
</li>
<li>
<p>
<strong>Возможность обратиться к&nbsp;широкой аудитории</strong>. Дискурс читают десятки
тысяч людей, и&nbsp;с&nbsp;каждым днем их&nbsp;становится больше.
</p>
</li>
<li>
<p>
<strong>Поддержка редакции</strong>. Дискурс предоставляет авторам аккредитацию
на&nbsp;мероприятия, базу контактов, юридическую поддержку, ознакомление с&nbsp;книжными,
кино- и&nbsp;музыкальными новинками до&nbsp;их&nbsp;выхода в&nbsp;свет. Если что-то
из&nbsp;этого вам понадобится, пишите на&nbsp;почту{' '}
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io
</a>
&nbsp;&mdash; поможем.
</p>
</li>
<li>
<p>
<strong>Пресс-карты для корреспондентов</strong>. Три опубликованные статьи позволяют
авторам Дискурса получить официальные удостоверения журналистов (пресс-карты)
на&nbsp;следующий год. Пресс-карты удостоверяют, что вы&nbsp;журналист и&nbsp;можете
пользоваться всеми теми правами, которые гарантирует Закон о&nbsp;СМИ. Кроме того, многие
культурные институции (музеи, галереи и&nbsp;др.) предоставляют журналистам право свободного
входа.
</p>
</li>
<li>
<p>
<strong>Помощь сотен специалистов в&nbsp;разных областях</strong>. В&nbsp;основе Дискурса
лежит идея совместного редактирования. Участники редакционного сообщества&nbsp;&mdash;
несколько сотен журналистов, исследователей, художников, литераторов из&nbsp;разных стран
&mdash; изучают материалы друг друга до&nbsp;публикации и&nbsp;помогают сделать
их&nbsp;качественнее и&nbsp;интереснее. Так, в&nbsp;редакции нередко складываются творческие
союзы: например, авторов текстов и&nbsp;художников, создающих для них иллюстрации.
</p>
</li>
<li>
<p>
<strong>Пространство общения полное выдающихся людей</strong>. Дискурс&nbsp;&mdash; большое
живое сообщество интеллектуалов, разбросанных по&nbsp;всему земному шару. Вступив
в&nbsp;редакцию, вы&nbsp;сможете познакомиться со&nbsp;множеством интересных людей, которые
определяют повестку завтрашнего дня, вдохновляют окружающих, создают новое и&nbsp;изучают
старое, ищут знания и&nbsp;готовы ими делиться, чтобы менять мир в&nbsp;соответствии
со&nbsp;своими идеалами.
</p>
</li>
</ul>
<h3 id="contacts">Как быть в&nbsp;курсе</h3>
<p>
За&nbsp;свежими публикациями Дискурса можно следить не&nbsp;только на&nbsp;сайте,
но&nbsp;и&nbsp;на&nbsp;страницах в&nbsp;
<a href="https://facebook.com/discoursio/" target="_blank" rel="noreferrer">
Фейсбуке
</a>
,{' '}
<a href="https://vk.com/discoursio" target="_blank" rel="noreferrer">
ВКонтакте
</a>{' '}
и&nbsp;
<a href="https://t.me/discoursio" target="_blank" rel="noreferrer">
Телеграме
</a>
. А&nbsp;ещё раз в&nbsp;месяц мы&nbsp;отправляем <a href="#subscribe">почтовую рассылку</a>{' '}
с&nbsp;дайджестом лучших материалов.
</p>
<p>
Если вы&nbsp;хотите сотрудничать, что-то обсудить или предложить &mdash; пожалуйста, пишите
на&nbsp;
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io
</a>
. Мы&nbsp;обязательно ответим.
</p>
</article>
</> </>
</StaticPage> </StaticPage>
) )

View File

@ -27,113 +27,111 @@ export const HelpPage = () => {
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:description" content={description} /> <Meta name="twitter:description" content={description} />
<article class="wide-container container--static-page">
<h1 id="help-us">
<span class="wrapped">Как вы&nbsp;можете поддержать Дискурс?</span>
</h1>
<p> <h1 id="help-us">
Дискурс&nbsp;&mdash; уникальное независимое издание с&nbsp;горизонтальной редакцией, <span class="wrapped">Как вы&nbsp;можете поддержать Дискурс?</span>
существующее в&nbsp;интересах своих читателей. Ваша поддержка действительно много </h1>
значит&nbsp;&mdash; не&nbsp;только для редакции Дискурса, но&nbsp;и&nbsp;для сохранения
свободной мысли и&nbsp;некоммерческого искусства в&nbsp;нашем обществе. <p>
</p> Дискурс&nbsp;&mdash; уникальное независимое издание с&nbsp;горизонтальной редакцией, существующее
<p> в&nbsp;интересах своих читателей. Ваша поддержка действительно много значит&nbsp;&mdash;
Дискурс существует на&nbsp;добровольных началах. Никакой медиахолдинг, фонд или государственная не&nbsp;только для редакции Дискурса, но&nbsp;и&nbsp;для сохранения свободной мысли
структура не&nbsp;финансирует нас&nbsp;&mdash; благодаря этому мы&nbsp;можем писать о&nbsp;том, и&nbsp;некоммерческого искусства в&nbsp;нашем обществе.
что важно, а&nbsp;не&nbsp;о&nbsp;том, что выгодно. Сообщество наших волонтеров ежедневно </p>
трудится, чтобы рассказывать вам интересные, не&nbsp;освещенные другими изданиями <p>
истории&nbsp;&mdash; но&nbsp;мы&nbsp;не&nbsp;сможем делать это без вашей помощи. Пожертвования Дискурс существует на&nbsp;добровольных началах. Никакой медиахолдинг, фонд или государственная
читателей составляют основу нашего бюджета и&nbsp;позволяют нам существовать. структура не&nbsp;финансирует нас&nbsp;&mdash; благодаря этому мы&nbsp;можем писать о&nbsp;том,
</p> что важно, а&nbsp;не&nbsp;о&nbsp;том, что выгодно. Сообщество наших волонтеров ежедневно трудится,
<p> чтобы рассказывать вам интересные, не&nbsp;освещенные другими изданиями истории&nbsp;&mdash;
Если вам нравится&nbsp;то, что мы&nbsp;делаем и&nbsp;вы&nbsp;хотите, чтобы Дискурс продолжался, но&nbsp;мы&nbsp;не&nbsp;сможем делать это без вашей помощи. Пожертвования читателей составляют
пожалуйста, поддержите проект. основу нашего бюджета и&nbsp;позволяют нам существовать.
</p> </p>
<div class="row"> <p>
<div class="col-sm-22 col-md-24"> Если вам нравится&nbsp;то, что мы&nbsp;делаем и&nbsp;вы&nbsp;хотите, чтобы Дискурс продолжался,
<Donate /> пожалуйста, поддержите проект.
</div> </p>
<div class="row">
<div class="col-sm-22 col-md-24">
<Donate />
</div> </div>
<h3 id="financial-report">На&nbsp;что пойдут деньги?</h3> </div>
<p> <h3 id="financial-report">На&nbsp;что пойдут деньги?</h3>
Ваши пожертвования пойдут на&nbsp;оплату серверов, содержание офиса, зарплату редакции <p>
и&nbsp;налоги, оплату юридического сопровождения и&nbsp;труда бухгалтера, совершенствование Ваши пожертвования пойдут на&nbsp;оплату серверов, содержание офиса, зарплату редакции
сайта, аренду помещения для открытой редакции, на&nbsp;печать альманаха Дискурс с&nbsp;лучшими и&nbsp;налоги, оплату юридического сопровождения и&nbsp;труда бухгалтера, совершенствование сайта,
текстами авторов за&nbsp;полгода, а&nbsp;также на&nbsp;другие редакционные и&nbsp;технические аренду помещения для открытой редакции, на&nbsp;печать альманаха Дискурс с&nbsp;лучшими текстами
расходы. авторов за&nbsp;полгода, а&nbsp;также на&nbsp;другие редакционные и&nbsp;технические расходы.
</p> </p>
<h3>Ваша помощь позволит нам</h3> <h3>Ваша помощь позволит нам</h3>
<ul> <ul>
<li> <li>
<h4>Оставаться бесплатным изданием.</h4> <h4>Оставаться бесплатным изданием.</h4>
<p> <p>
Мы&nbsp;делаем открытый журнал для всех желающих, а&nbsp;также собираем искусство лучших Мы&nbsp;делаем открытый журнал для всех желающих, а&nbsp;также собираем искусство лучших
авторов по&nbsp;всему миру. Ваша поддержка позволяет нам становиться лучше. авторов по&nbsp;всему миру. Ваша поддержка позволяет нам становиться лучше.
</p> </p>
</li> </li>
<li> <li>
<h4>Создавать еще больше контента.</h4> <h4>Создавать еще больше контента.</h4>
<p> <p>
Каждый день к&nbsp;нам присоединяются новые люди, и&nbsp;чем больше нас становится, тем Каждый день к&nbsp;нам присоединяются новые люди, и&nbsp;чем больше нас становится, тем больше
больше мы&nbsp;творим и&nbsp;строже оцениваем результаты творчества друг друга. мы&nbsp;творим и&nbsp;строже оцениваем результаты творчества друг друга. В&nbsp;результате
В&nbsp;результате повышается и&nbsp;количество, и&nbsp;качество контента. Каждый день мы повышается и&nbsp;количество, и&nbsp;качество контента. Каждый день мы трудимся, чтобы
трудимся, чтобы открывать нашим читателям новые грани окружающего мира. открывать нашим читателям новые грани окружающего мира.
</p> </p>
</li> </li>
<li> <li>
<h4>Развивать форматы и&nbsp;расширять деятельность Дискурса.</h4> <h4>Развивать форматы и&nbsp;расширять деятельность Дискурса.</h4>
<p> <p>
Мы&nbsp;создаем различные спецпроекты и&nbsp;регулярно проводим необычные мероприятия. Мы&nbsp;создаем различные спецпроекты и&nbsp;регулярно проводим необычные мероприятия.
Мы&nbsp;хотим приносить пользу человечеству всеми возможными способами. Мы&nbsp;хотим приносить пользу человечеству всеми возможными способами.
</p> </p>
</li> </li>
<li> <li>
<h4>Модернизировать сайт.</h4> <h4>Модернизировать сайт.</h4>
<p> <p>
Мы&nbsp;совершенствуем платформу и&nbsp;стараемся сделать проект максимально удобным для Мы&nbsp;совершенствуем платформу и&nbsp;стараемся сделать проект максимально удобным для вас.
вас. Мы&nbsp;работаем над мобильной версией, новым дизайном, фукционалом, системой Мы&nbsp;работаем над мобильной версией, новым дизайном, фукционалом, системой регистрации,
регистрации, навигации и&nbsp;рекомендаций, которые сделают наше общение еще увлекательней. навигации и&nbsp;рекомендаций, которые сделают наше общение еще увлекательней.
</p> </p>
</li> </li>
<li> <li>
<h4>Выпускать альманах.</h4> <h4>Выпускать альманах.</h4>
<p> <p>
Выпускать раз в&nbsp;полугодие печатный альманах Дискурс с&nbsp;33&nbsp;лучшими текстами Выпускать раз в&nbsp;полугодие печатный альманах Дискурс с&nbsp;33&nbsp;лучшими текстами
сайта. сайта.
</p> </p>
</li> </li>
<li> <li>
<h4>Захватить весь мир</h4> <h4>Захватить весь мир</h4>
<p>и&nbsp;принести &laquo;Дискурс&raquo; в&nbsp;каждый дом.</p> <p>и&nbsp;принести &laquo;Дискурс&raquo; в&nbsp;каждый дом.</p>
</li> </li>
</ul> </ul>
<h3 id="trustee">Войдите в&nbsp;попечительский совет Дискурса</h3> <h3 id="trustee">Войдите в&nbsp;попечительский совет Дискурса</h3>
<p> <p>
Вы&nbsp;хотите сделать крупное пожертвование? Станьте попечителем Дискурса&nbsp;&mdash;{' '} Вы&nbsp;хотите сделать крупное пожертвование? Станьте попечителем Дискурса&nbsp;&mdash;{' '}
<a class="black-link" href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> <a class="black-link" href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
напишите нам напишите нам
</a> </a>
, мы&nbsp;будем рады единомышленникам. , мы&nbsp;будем рады единомышленникам.
</p> </p>
<h3 id="other">Как ещё можно поддержать Дискурс?</h3> <h3 id="other">Как ещё можно поддержать Дискурс?</h3>
<p> <p>
Есть много других способов поддержать Дискурс и&nbsp;труд наших авторов. Например, Есть много других способов поддержать Дискурс и&nbsp;труд наших авторов. Например, вы&nbsp;можете
вы&nbsp;можете периодически рассказывать о&nbsp;проекте своим друзьям в&nbsp;соцсетях, делиться периодически рассказывать о&nbsp;проекте своим друзьям в&nbsp;соцсетях, делиться хорошими
хорошими материалами или&nbsp;&mdash; что еще лучше&nbsp;&mdash; публиковать свои статьи материалами или&nbsp;&mdash; что еще лучше&nbsp;&mdash; публиковать свои статьи
в&nbsp;&laquo;Дискурсе&raquo;. Но&nbsp;главное, что вы&nbsp;можете сделать для Дискурса, &mdash; в&nbsp;&laquo;Дискурсе&raquo;. Но&nbsp;главное, что вы&nbsp;можете сделать для Дискурса, &mdash;
читать нас. Мы&nbsp;вкладываем в&nbsp;журнал душу, и&nbsp;внимание каждого читателя убеждает нас читать нас. Мы&nbsp;вкладываем в&nbsp;журнал душу, и&nbsp;внимание каждого читателя убеждает нас
в&nbsp;правильности выбранного пути. Не&nbsp;переключайтесь. в&nbsp;правильности выбранного пути. Не&nbsp;переключайтесь.
</p> </p>
<p> <p>
Если вы&nbsp;хотите помочь проекту, но&nbsp;у&nbsp;вас возникли вопросы, напишите нам письмо Если вы&nbsp;хотите помочь проекту, но&nbsp;у&nbsp;вас возникли вопросы, напишите нам письмо
по&nbsp;адресу{' '} по&nbsp;адресу{' '}
<a class="black-link" href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> <a class="black-link" href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io welcome@discours.io
</a> </a>
. .
</p> </p>
</article>
</> </>
</StaticPage> </StaticPage>
) )

View File

@ -36,128 +36,127 @@ export const ManifestPage = () => {
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:description" content={description} /> <Meta name="twitter:description" content={description} />
<article class="wide-container container--static-page">
<h1 id="manifest">
<span class="wrapped">Манифест</span>
</h1>
<h1 id="manifest">
<span class="wrapped">Манифест</span>
</h1>
<p>
Дискурс&nbsp;&mdash; независимый художественно-аналитический журнал с&nbsp;горизонтальной
редакцией, основанный на&nbsp;принципах свободы слова, прямой демократии и&nbsp;совместного
редактирования. Дискурс создаётся открытым медиасообществом ученых, журналистов, музыкантов,
писателей, предпринимателей, философов, инженеров, художников и&nbsp;специалистов со&nbsp;всего
мира, объединившихся, чтобы вместе делать общий журнал и&nbsp;объяснять с&nbsp;разных точек зрения
мозаичную картину современности.
</p>
<p>
Мы&nbsp;пишем о&nbsp;культуре, науке и&nbsp;обществе, рассказываем о&nbsp;новых идеях
и&nbsp;современном искусстве, публикуем статьи, исследования, репортажи, интервью людей, чью
прямую речь стоит услышать, и&nbsp;работы художников из&nbsp;разных стран&nbsp;&mdash;
от&nbsp;фильмов и&nbsp;музыки до&nbsp;живописи и&nbsp;фотографии. Помогая друг другу делать
публикации качественнее и&nbsp;общим голосованием выбирая лучшие материалы для журнала,
мы&nbsp;создаём новую горизонтальную журналистику, чтобы честно рассказывать о&nbsp;важном
и&nbsp;интересном.
</p>
<p>
Редакция Дискурса открыта для всех: у&nbsp;нас нет цензуры, запретных тем и&nbsp;идеологических
рамок. Каждый может <a href="/create">прислать материал</a> в&nbsp;журнал и&nbsp;
<a href="/about/guide">присоединиться к&nbsp;редакции</a>. Предоставляя трибуну для независимой
журналистики и&nbsp;художественных проектов, мы&nbsp;помогаем людям рассказывать свои истории так,
чтобы они были услышаны. Мы&nbsp;убеждены: чем больше голосов будет звучать на&nbsp;Дискурсе, тем
громче в&nbsp;полифонии мнений будет слышна истина.
</p>
<h2 class="h2" id="participation">
<span class="wrapped">Как участвовать в&nbsp;самиздате</span>
</h2>
<p>
Дискурс создается <a href="/about/guide">открытым сообществом</a> энтузиастов новой независимой
журналистики. Участвовать в&nbsp;открытой редакции и&nbsp;помогать журналу можно следующими
способами:
</p>
<details open>
<summary>
<h3 id="contribute">Предлагать материалы</h3>
</summary>
<p> <p>
Дискурс&nbsp;&mdash; независимый художественно-аналитический журнал с&nbsp;горизонтальной <a href="/create">Создавайте</a> свои статьи и&nbsp;художественные работы&nbsp;&mdash; лучшие из
редакцией, основанный на&nbsp;принципах свободы слова, прямой демократии и&nbsp;совместного них будут опубликованы в&nbsp;журнале. Дискурс&nbsp;&mdash; некоммерческое издание, авторы
редактирования. Дискурс создаётся открытым медиасообществом ученых, журналистов, музыкантов, публикуются в&nbsp;журнале на&nbsp;общественных началах, получая при этом{' '}
писателей, предпринимателей, философов, инженеров, художников и&nbsp;специалистов со&nbsp;всего <a href="/create?collab=true">поддержку</a> редакции, право голоса, множество других
мира, объединившихся, чтобы вместе делать общий журнал и&nbsp;объяснять с&nbsp;разных точек возможностей и&nbsp;читателей по&nbsp;всему миру.
зрения мозаичную картину современности. </p>
</details>
<details>
<summary>
<h3 id="donate">Поддерживать проект</h3>
</summary>
<p>
Дискурс существует на&nbsp;пожертвования читателей. Если вам нравится журнал, пожалуйста,{' '}
<a href="/about/help">поддержите</a> нашу работу. Ваши пожертвования пойдут на&nbsp;выпуск новых
материалов, оплату серверов, труда программистов, дизайнеров и&nbsp;редакторов.
</p>
</details>
<details>
<summary>
<h3 id="cooperation">Сотрудничать с&nbsp;журналом</h3>
</summary>
<p>
Мы всегда открыты для сотрудничества и&nbsp;рады единомышленникам. Если вы хотите помогать
журналу с&nbsp;редактурой, корректурой, иллюстрациями, переводами, версткой, подкастами,
мероприятиями, фандрайзингом или как-то ещё&nbsp;&mdash; скорее пишите нам на&nbsp;
<a href="mailto:welcome@discours.io">welcome@discours.io</a>.
</p> </p>
<p> <p>
Мы&nbsp;пишем о&nbsp;культуре, науке и&nbsp;обществе, рассказываем о&nbsp;новых идеях Если вы представляете некоммерческую организацию и&nbsp;хотите сделать с&nbsp;нами совместный
и&nbsp;современном искусстве, публикуем статьи, исследования, репортажи, интервью людей, чью проект, получить информационную поддержку или предложить другую форму
прямую речь стоит услышать, и&nbsp;работы художников из&nbsp;разных стран&nbsp;&mdash; сотрудничества&nbsp;&mdash; <a href="mailto:welcome@discours.io">пишите</a>.
от&nbsp;фильмов и&nbsp;музыки до&nbsp;живописи и&nbsp;фотографии. Помогая друг другу делать
публикации качественнее и&nbsp;общим голосованием выбирая лучшие материалы для журнала,
мы&nbsp;создаём новую горизонтальную журналистику, чтобы честно рассказывать о&nbsp;важном
и&nbsp;интересном.
</p> </p>
<p> <p>
Редакция Дискурса открыта для всех: у&nbsp;нас нет цензуры, запретных тем и&nbsp;идеологических Если вы разработчик и&nbsp;хотите помогать с&nbsp;развитием сайта Дискурса,{' '}
рамок. Каждый может <a href="/create">прислать материал</a> в&nbsp;журнал и&nbsp; <a href="mailto:services@discours.io">присоединяйтесь к&nbsp;IT-команде самиздата</a>. Открытый
<a href="/about/guide">присоединиться к&nbsp;редакции</a>. Предоставляя трибуну для независимой код платформы для независимой журналистики, а&nbsp;также всех наших спецпроектов
журналистики и&nbsp;художественных проектов, мы&nbsp;помогаем людям рассказывать свои истории и&nbsp;медиаинструментов находится{' '}
так, чтобы они были услышаны. Мы&nbsp;убеждены: чем больше голосов будет звучать <a href="https://github.com/Discours">в&nbsp;свободном доступе на&nbsp;GitHub</a>.
на&nbsp;Дискурсе, тем громче в&nbsp;полифонии мнений будет слышна истина.
</p> </p>
</details>
<h2 class="h2" id="participation"> <details>
<span class="wrapped">Как участвовать в&nbsp;самиздате</span> <summary>
</h2> <h3 id="follow">Как еще можно помочь</h3>
</summary>
<p> <p>
Дискурс создается <a href="/about/guide">открытым сообществом</a> энтузиастов новой независимой Советуйте Дискурс друзьям и&nbsp;знакомым. Обсуждайте и&nbsp;распространяйте наши
журналистики. Участвовать в&nbsp;открытой редакции и&nbsp;помогать журналу можно следующими публикации&nbsp;&mdash; все материалы открытой редакции можно читать и&nbsp;перепечатывать
способами: бесплатно. Подпишитесь на&nbsp;самиздат <a href="https://vk.com/discoursio">ВКонтакте</a>,
в&nbsp;
<a href="https://facebook.com/discoursio">Фейсбуке</a> и&nbsp;в&nbsp;
<a href="https://t.me/discoursio">Телеграме</a>, а&nbsp;также на&nbsp;
<Opener name="subscribe">рассылку лучших материалов</Opener>, чтобы не&nbsp;пропустить ничего
интересного.
</p> </p>
<details open>
<summary>
<h3 id="contribute">Предлагать материалы</h3>
</summary>
<p>
<a href="/create">Создавайте</a> свои статьи и&nbsp;художественные работы&nbsp;&mdash; лучшие
из них будут опубликованы в&nbsp;журнале. Дискурс&nbsp;&mdash; некоммерческое издание, авторы
публикуются в&nbsp;журнале на&nbsp;общественных началах, получая при этом{' '}
<a href="/create?collab=true">поддержку</a> редакции, право голоса, множество других
возможностей и&nbsp;читателей по&nbsp;всему миру.
</p>
</details>
<details>
<summary>
<h3 id="donate">Поддерживать проект</h3>
</summary>
<p>
Дискурс существует на&nbsp;пожертвования читателей. Если вам нравится журнал, пожалуйста,{' '}
<a href="/about/help">поддержите</a> нашу работу. Ваши пожертвования пойдут на&nbsp;выпуск
новых материалов, оплату серверов, труда программистов, дизайнеров и&nbsp;редакторов.
</p>
</details>
<details>
<summary>
<h3 id="cooperation">Сотрудничать с&nbsp;журналом</h3>
</summary>
<p>
Мы всегда открыты для сотрудничества и&nbsp;рады единомышленникам. Если вы хотите помогать
журналу с&nbsp;редактурой, корректурой, иллюстрациями, переводами, версткой, подкастами,
мероприятиями, фандрайзингом или как-то ещё&nbsp;&mdash; скорее пишите нам на&nbsp;
<a href="mailto:welcome@discours.io">welcome@discours.io</a>.
</p>
<p>
Если вы представляете некоммерческую организацию и&nbsp;хотите сделать с&nbsp;нами совместный
проект, получить информационную поддержку или предложить другую форму
сотрудничества&nbsp;&mdash; <a href="mailto:welcome@discours.io">пишите</a>.
</p>
<p>
Если вы разработчик и&nbsp;хотите помогать с&nbsp;развитием сайта Дискурса,{' '}
<a href="mailto:services@discours.io">присоединяйтесь к&nbsp;IT-команде самиздата</a>.
Открытый код платформы для независимой журналистики, а&nbsp;также всех наших спецпроектов
и&nbsp;медиаинструментов находится{' '}
<a href="https://github.com/Discours">в&nbsp;свободном доступе на&nbsp;GitHub</a>.
</p>
</details>
<details>
<summary>
<h3 id="follow">Как еще можно помочь</h3>
</summary>
<p>
Советуйте Дискурс друзьям и&nbsp;знакомым. Обсуждайте и&nbsp;распространяйте наши
публикации&nbsp;&mdash; все материалы открытой редакции можно читать и&nbsp;перепечатывать
бесплатно. Подпишитесь на&nbsp;самиздат <a href="https://vk.com/discoursio">ВКонтакте</a>,
в&nbsp;
<a href="https://facebook.com/discoursio">Фейсбуке</a> и&nbsp;в&nbsp;
<a href="https://t.me/discoursio">Телеграме</a>, а&nbsp;также на&nbsp;
<Opener name="subscribe">рассылку лучших материалов</Opener>, чтобы не&nbsp;пропустить ничего
интересного.
</p>
<p>
<a href="https://forms.gle/9UnHBAz9Q3tjH5dAA">Рассказывайте о&nbsp;впечатлениях</a>{' '}
от&nbsp;материалов открытой редакции, <Opener name="feedback">делитесь идеями</Opener>,
интересными темами, о&nbsp;которых хотели бы узнать больше, и&nbsp;историями, которые нужно
рассказать.
</p>
</details>
<h2 class="h2" id="connection">
<span class="wrapped">Будем на&nbsp;связи</span>
</h2>
<p> <p>
Если вы хотите предложить материал, сотрудничать, рассказать о&nbsp;проблеме, которую нужно <a href="https://forms.gle/9UnHBAz9Q3tjH5dAA">Рассказывайте о&nbsp;впечатлениях</a>{' '}
осветить, сообщить об&nbsp;ошибке или баге, что-то обсудить, уточнить или посоветовать, от&nbsp;материалов открытой редакции, <Opener name="feedback">делитесь идеями</Opener>,
пожалуйста, <Opener name="feedback">напишите нам здесь</Opener> или на&nbsp;почту{' '} интересными темами, о&nbsp;которых хотели бы узнать больше, и&nbsp;историями, которые нужно
<a href="mailto:welcome@discours.io">welcome@discours.io</a>. Мы обязательно ответим рассказать.
и&nbsp;постараемся реализовать все хорошие задумки.
</p> </p>
</article> </details>
<h2 class="h2" id="connection">
<span class="wrapped">Будем на&nbsp;связи</span>
</h2>
<p>
Если вы хотите предложить материал, сотрудничать, рассказать о&nbsp;проблеме, которую нужно
осветить, сообщить об&nbsp;ошибке или баге, что-то обсудить, уточнить или посоветовать,
пожалуйста, <Opener name="feedback">напишите нам здесь</Opener> или на&nbsp;почту{' '}
<a href="mailto:welcome@discours.io">welcome@discours.io</a>. Мы обязательно ответим
и&nbsp;постараемся реализовать все хорошие задумки.
</p>
</> </>
</StaticPage> </StaticPage>
) )

View File

@ -13,23 +13,18 @@ export const PartnersPage = () => {
return ( return (
<StaticPage title={ogTitle}> <StaticPage title={ogTitle}>
<article class="wide-container container--static-page"> <Meta name="descprition" content={description} />
<Meta name="descprition" content={description} /> <Meta name="keywords" content={t('keywords')} />
<Meta name="keywords" content={t('keywords')} /> <Meta name="og:type" content="article" />
<Meta name="og:type" content="article" /> <Meta name="og:title" content={ogTitle} />
<Meta name="og:title" content={ogTitle} /> <Meta name="og:image" content={ogImage} />
<Meta name="og:image" content={ogImage} /> <Meta name="twitter:image" content={ogImage} />
<Meta name="twitter:image" content={ogImage} /> <Meta name="og:description" content={description} />
<Meta name="og:description" content={description} /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:description" content={description} />
<Meta name="twitter:description" content={description} />
<div class="row"> <h1>{t('Partners')}</h1>
<div class="col-md-12 col-xl-14 offset-md-5 order-md-first">
<h1>{t('Partners')}</h1>
</div>
</div>
</article>
</StaticPage> </StaticPage>
) )
} }

View File

@ -13,177 +13,174 @@ export const PrinciplesPage = () => {
return ( return (
<StaticPage title={ogTitle}> <StaticPage title={ogTitle}>
<article class="wide-container container--static-page"> <Meta name="descprition" content={description} />
<Meta name="descprition" content={description} /> <Meta name="keywords" content={t('principles keywords')} />
<Meta name="keywords" content={t('principles keywords')} /> <Meta name="og:type" content="article" />
<Meta name="og:type" content="article" /> <Meta name="og:title" content={ogTitle} />
<Meta name="og:title" content={ogTitle} /> <Meta name="og:image" content={ogImage} />
<Meta name="og:image" content={ogImage} /> <Meta name="twitter:image" content={ogImage} />
<Meta name="twitter:image" content={ogImage} /> <Meta name="og:description" content={description} />
<Meta name="og:description" content={description} /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:description" content={description} />
<Meta name="twitter:description" content={description} />
<h1>
<span class="wrapped">{ogTitle}</span>
</h1>
<ol> <h1>
<li> <span class="wrapped">{ogTitle}</span>
<p> </h1>
<strong>Горизонтальность</strong>. Мы&nbsp;все разные, и&nbsp;это классно. Вертикалей
в&nbsp;мире достаточно, мы&nbsp;&mdash; горизонтальное сообщество и&nbsp;ценим наши различия,
потому что знаем&nbsp;&mdash; в&nbsp;них наша сила. Благодаря разнообразию сотен голосов,
усиливающих друг друга, в&nbsp;сообществе складывается неповторимая синергия, которая помогает
вместе достигать большего.
</p>
</li>
<li>
<p>
<strong>Многоголосие</strong>. Мы&nbsp;ценим свободу слова и&nbsp;аргументированные мнения.
Предоставляя трибуну каждому, кому есть что сказать, самиздат отражает полифонию позиций,
знаний и&nbsp;опыта, которые открывают более полную картину реальности.
</p>
</li>
<li>
<p>
<strong>Взаимопомощь</strong>. Мы&nbsp;помогаем друг другу, потому что хотим, чтобы
в&nbsp;мире было еще больше хорошего. Обсуждая что-то, мы&nbsp;всегда интересуемся, чем можем
помочь. В&nbsp;самиздате можно найти специалистов практически в&nbsp;любых сферах
и&nbsp;получить поддержку от&nbsp;сотен людей. Благодаря коллективной экспертизе глобального
сообщества в&nbsp;самиздате выходят крутейшие публикации, которыми можно вечно гордиться.
</p>
</li>
<li>
<p>
<strong>Взаимоуважение</strong>. Мы&nbsp;ценим, искренне уважаем друг друга и&nbsp;вместо
борщевиков враждебности культивируем цветы добра, мира, знания и&nbsp;юмора. Нам некогда
доказывать друг другу, кто круче. Гораздо приятнее сотрудничать, помогать и&nbsp;создавать
что-то важное, интересное и&nbsp;полезное.
</p>
</li>
<li>
<p>
<strong>Созидание</strong>. Мы&nbsp;создаем, потому что любим создавать. Мы&nbsp;открыто
делимся опытом, дарим идеи, обмениваемся мнениями и&nbsp;благодарим за&nbsp;критику, используя
ее&nbsp;для совершенствования мастерства и&nbsp;саморазвития. Мы&nbsp;знаем, что мир
не&nbsp;идеальное место, и&nbsp;делаем всё возможное, чтобы он&nbsp;стал лучше.
</p>
</li>
</ol>
<h2 class="h2" id="participation"> <ol>
<span class="wrapped">Как у&nbsp;нас принято себя вести</span> <li>
</h2> <p>
<strong>Горизонтальность</strong>. Мы&nbsp;все разные, и&nbsp;это классно. Вертикалей
в&nbsp;мире достаточно, мы&nbsp;&mdash; горизонтальное сообщество и&nbsp;ценим наши различия,
потому что знаем&nbsp;&mdash; в&nbsp;них наша сила. Благодаря разнообразию сотен голосов,
усиливающих друг друга, в&nbsp;сообществе складывается неповторимая синергия, которая помогает
вместе достигать большего.
</p>
</li>
<li>
<p>
<strong>Многоголосие</strong>. Мы&nbsp;ценим свободу слова и&nbsp;аргументированные мнения.
Предоставляя трибуну каждому, кому есть что сказать, самиздат отражает полифонию позиций, знаний
и&nbsp;опыта, которые открывают более полную картину реальности.
</p>
</li>
<li>
<p>
<strong>Взаимопомощь</strong>. Мы&nbsp;помогаем друг другу, потому что хотим, чтобы в&nbsp;мире
было еще больше хорошего. Обсуждая что-то, мы&nbsp;всегда интересуемся, чем можем помочь.
В&nbsp;самиздате можно найти специалистов практически в&nbsp;любых сферах и&nbsp;получить
поддержку от&nbsp;сотен людей. Благодаря коллективной экспертизе глобального сообщества
в&nbsp;самиздате выходят крутейшие публикации, которыми можно вечно гордиться.
</p>
</li>
<li>
<p>
<strong>Взаимоуважение</strong>. Мы&nbsp;ценим, искренне уважаем друг друга и&nbsp;вместо
борщевиков враждебности культивируем цветы добра, мира, знания и&nbsp;юмора. Нам некогда
доказывать друг другу, кто круче. Гораздо приятнее сотрудничать, помогать и&nbsp;создавать
что-то важное, интересное и&nbsp;полезное.
</p>
</li>
<li>
<p>
<strong>Созидание</strong>. Мы&nbsp;создаем, потому что любим создавать. Мы&nbsp;открыто делимся
опытом, дарим идеи, обмениваемся мнениями и&nbsp;благодарим за&nbsp;критику, используя
ее&nbsp;для совершенствования мастерства и&nbsp;саморазвития. Мы&nbsp;знаем, что мир
не&nbsp;идеальное место, и&nbsp;делаем всё возможное, чтобы он&nbsp;стал лучше.
</p>
</li>
</ol>
<p> <h2 class="h2" id="participation">
Открытая редакция объединяет сотни потрясающих людей со&nbsp;всего мира, которые делают крутейшие <span class="wrapped">Как у&nbsp;нас принято себя вести</span>
вещи. Это пространство, где доверяют, вдохновляют, исследуют и&nbsp;создают новое вместе. </h2>
Поскольку все в&nbsp;сообществе очень разные, как-то мы&nbsp;собрались и&nbsp;решили зафиксировать
базовые ценности открытой редакции, а&nbsp;заодно придумали универсальные правила взаимодействия,
чтобы общение было не&nbsp;только плодотворным, но&nbsp;и&nbsp;приятным для всех участников
сообщества.
</p>
<ol>
<li>
<p>
<strong>Действуем, помогаем и&nbsp;делимся</strong>. В&nbsp;редакции мы&nbsp;создаем свои
проекты и&nbsp;помогаем другим создавать свои&nbsp;&mdash; советами, делом, участием,
вовлеченностью. Мы&nbsp;открыто делимся опытом, мнениями и&nbsp;идеями, потому что ценим силу
сотрудничества и&nbsp;знаем, что идеи реализуются скорее, лучше и&nbsp;веселее, если над ними
трудиться сообща.
</p>
</li>
<li> <p>
<p> Открытая редакция объединяет сотни потрясающих людей со&nbsp;всего мира, которые делают крутейшие
<strong>Общаемся дружелюбно</strong>. Помните, по&nbsp;ту&nbsp;сторону монитора находятся вещи. Это пространство, где доверяют, вдохновляют, исследуют и&nbsp;создают новое вместе. Поскольку
реальные люди. Неуважение ранит других так&nbsp;же, как ранило&nbsp;бы вас самих. Поэтому все в&nbsp;сообществе очень разные, как-то мы&nbsp;собрались и&nbsp;решили зафиксировать базовые
не&nbsp;стоит кричать (даже капслоком), заполнять эфир желчью и&nbsp;бросаться ценности открытой редакции, а&nbsp;заодно придумали универсальные правила взаимодействия, чтобы
грубостями&nbsp;&mdash; так вы&nbsp;рискуете не&nbsp;только растерять доверие окружающих, общение было не&nbsp;только плодотворным, но&nbsp;и&nbsp;приятным для всех участников сообщества.
но&nbsp;и&nbsp;остаться непонятым. </p>
</p> <ol>
</li> <li>
<p>
<strong>Действуем, помогаем и&nbsp;делимся</strong>. В&nbsp;редакции мы&nbsp;создаем свои
проекты и&nbsp;помогаем другим создавать свои&nbsp;&mdash; советами, делом, участием,
вовлеченностью. Мы&nbsp;открыто делимся опытом, мнениями и&nbsp;идеями, потому что ценим силу
сотрудничества и&nbsp;знаем, что идеи реализуются скорее, лучше и&nbsp;веселее, если над ними
трудиться сообща.
</p>
</li>
<li> <li>
<p> <p>
<strong>Критикуем и&nbsp;реагируем конструктивно</strong>. Самиздат про&nbsp;то, чтобы <strong>Общаемся дружелюбно</strong>. Помните, по&nbsp;ту&nbsp;сторону монитора находятся
разбираться в&nbsp;сложных вещах всем сообществом, поэтому мы&nbsp;тактично и&nbsp;без реальные люди. Неуважение ранит других так&nbsp;же, как ранило&nbsp;бы вас самих. Поэтому
агрессии делимся мнениями, стараясь убедительно аргументировать позиции. не&nbsp;стоит кричать (даже капслоком), заполнять эфир желчью и&nbsp;бросаться
И&nbsp;с&nbsp;благодарностью принимаем критику, используя ее&nbsp;для улучшения наших грубостями&nbsp;&mdash; так вы&nbsp;рискуете не&nbsp;только растерять доверие окружающих,
проектов. Мы&nbsp;верим, что каждый участник сообщества имеет добрые намерения, но&nbsp;и&nbsp;остаться непонятым.
и&nbsp;придерживаемся принципов доброжелательной критики, стараемся делиться </p>
советами&nbsp;&mdash; лучшим средством для самосовершенствования. Обоснованная критика </li>
помогает и&nbsp;адресату, и&nbsp;всем участникам сообщества досконально изучить тему
и&nbsp;глубже разобраться в&nbsp;проблеме.
</p>
</li>
<li> <li>
<p> <p>
<strong>Решаем трудности не&nbsp;агрессией, а&nbsp;диалогом</strong>. Обесценивать мнения <strong>Критикуем и&nbsp;реагируем конструктивно</strong>. Самиздат про&nbsp;то, чтобы
и&nbsp;оскорблять других людей только потому, что вы&nbsp;с&nbsp;ними разбираться в&nbsp;сложных вещах всем сообществом, поэтому мы&nbsp;тактично и&nbsp;без агрессии
не&nbsp;согласны,&nbsp;&mdash; не&nbsp;лучший способ донести свою точку зрения. Конечно, важно делимся мнениями, стараясь убедительно аргументировать позиции. И&nbsp;с&nbsp;благодарностью
высказаться, если вас что-то не&nbsp;устраивает и&nbsp;откровенно бесит. Но&nbsp;прежде чем принимаем критику, используя ее&nbsp;для улучшения наших проектов. Мы&nbsp;верим, что каждый
сжигать оппонента гневом, попробуйте понять, почему этот &laquo;нехороший человек&raquo; так участник сообщества имеет добрые намерения, и&nbsp;придерживаемся принципов доброжелательной
поступает. Возможно, аргументы собеседника окажутся убедительными или вам удастся изменить его критики, стараемся делиться советами&nbsp;&mdash; лучшим средством для самосовершенствования.
мнение. В&nbsp;любом случае конфликты решаются в&nbsp;диалогах и&nbsp;проходят, Обоснованная критика помогает и&nbsp;адресату, и&nbsp;всем участникам сообщества досконально
а&nbsp;налаженное взаимопонимание останется надолго. изучить тему и&nbsp;глубже разобраться в&nbsp;проблеме.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
<strong>Не&nbsp;переходим на&nbsp;личности&nbsp;&mdash; это признак токсичности</strong>. <strong>Решаем трудности не&nbsp;агрессией, а&nbsp;диалогом</strong>. Обесценивать мнения
Всегда мудрее обсуждать точку зрения человека, а&nbsp;не&nbsp;его самого, даже если и&nbsp;оскорблять других людей только потому, что вы&nbsp;с&nbsp;ними
он&nbsp;вам не&nbsp;импонирует. Предвзятое отношение ограничивает кругозор, добавляет не&nbsp;согласны,&nbsp;&mdash; не&nbsp;лучший способ донести свою точку зрения. Конечно, важно
преждевременные морщины и&nbsp;не&nbsp;помогает окружающим стать лучше. Вежливость высказаться, если вас что-то не&nbsp;устраивает и&nbsp;откровенно бесит. Но&nbsp;прежде чем
и&nbsp;взаимоуважение&nbsp;&mdash; краеугольная основа вдумчивых и&nbsp;осмысленных дискуссий. сжигать оппонента гневом, попробуйте понять, почему этот &laquo;нехороший человек&raquo; так
</p> поступает. Возможно, аргументы собеседника окажутся убедительными или вам удастся изменить его
</li> мнение. В&nbsp;любом случае конфликты решаются в&nbsp;диалогах и&nbsp;проходят,
а&nbsp;налаженное взаимопонимание останется надолго.
</p>
</li>
<li> <li>
<p> <p>
<strong>Благодарим за&nbsp;помощь</strong>. Благодарите коллег даже за&nbsp;самые, <strong>Не&nbsp;переходим на&nbsp;личности&nbsp;&mdash; это признак токсичности</strong>. Всегда
казалось&nbsp;бы, простые вещи. &laquo;Спасибо&raquo; не&nbsp;зря называют волшебным мудрее обсуждать точку зрения человека, а&nbsp;не&nbsp;его самого, даже если он&nbsp;вам
словом&nbsp;&mdash; на&nbsp;искренней благодарности держится любое подлинное сотрудничество. не&nbsp;импонирует. Предвзятое отношение ограничивает кругозор, добавляет преждевременные
Поддержка воодушевляет на&nbsp;новые подвиги и&nbsp;напоминает, что мир делают прекрасным морщины и&nbsp;не&nbsp;помогает окружающим стать лучше. Вежливость
не&nbsp;машины, а&nbsp;живые люди. и&nbsp;взаимоуважение&nbsp;&mdash; краеугольная основа вдумчивых и&nbsp;осмысленных дискуссий.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
<strong>Даем еще один шанс</strong>. Все совершают ошибки, и&nbsp;за&nbsp;один проступок <strong>Благодарим за&nbsp;помощь</strong>. Благодарите коллег даже за&nbsp;самые,
не&nbsp;стоит вычеркивать людей из&nbsp;жизни. Ошибки нужны, чтобы на&nbsp;них учиться казалось&nbsp;бы, простые вещи. &laquo;Спасибо&raquo; не&nbsp;зря называют волшебным
и&nbsp;делать выводы. Однако если многократно и&nbsp;систематически нарушать правила словом&nbsp;&mdash; на&nbsp;искренней благодарности держится любое подлинное сотрудничество.
сообщества, наверняка можно заслужить минусы в&nbsp;карму от&nbsp;других участников Поддержка воодушевляет на&nbsp;новые подвиги и&nbsp;напоминает, что мир делают прекрасным
и&nbsp;потерять доступ к&nbsp;сообществу. не&nbsp;машины, а&nbsp;живые люди.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
<strong>Вместе создаем идеальную среду общения</strong>. Открытая редакция&nbsp;&mdash; это <strong>Даем еще один шанс</strong>. Все совершают ошибки, и&nbsp;за&nbsp;один проступок
утопическое пространство обогащающей и&nbsp;осмысленной коммуникации. Атмосфера не&nbsp;стоит вычеркивать людей из&nbsp;жизни. Ошибки нужны, чтобы на&nbsp;них учиться
горизонтального сообщества складывается из&nbsp;действий каждого, поэтому мы&nbsp;действуем и&nbsp;делать выводы. Однако если многократно и&nbsp;систематически нарушать правила сообщества,
так, чтобы способствовать сотворчеству, коллективному познанию и&nbsp;развитию самиздата наверняка можно заслужить минусы в&nbsp;карму от&nbsp;других участников и&nbsp;потерять доступ
и&nbsp;нашей альтернативной интеллектуальной медиасреды. к&nbsp;сообществу.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
<strong>Помним, что всё в&nbsp;сообществе зависит от&nbsp;нас</strong>. Если нам чего-то <strong>Вместе создаем идеальную среду общения</strong>. Открытая редакция&nbsp;&mdash; это
не&nbsp;хватает, мы&nbsp;начинаем действовать&nbsp;&mdash; рассказываем об&nbsp;идее, находим утопическое пространство обогащающей и&nbsp;осмысленной коммуникации. Атмосфера горизонтального
единомышленников, готовим и&nbsp;запускаем проект. Так в&nbsp;сообществе становится сообщества складывается из&nbsp;действий каждого, поэтому мы&nbsp;действуем так, чтобы
на&nbsp;одну крутую активность больше. Так появилось наше сообщество. Так появился самиздат способствовать сотворчеству, коллективному познанию и&nbsp;развитию самиздата и&nbsp;нашей
и&nbsp;все проекты открытой редакции. Чтобы в&nbsp;сообществе случилось что-то прекрасное, альтернативной интеллектуальной медиасреды.
достаточно просто положить этому начало. </p>
</p> </li>
</li>
</ol> <li>
</article> <p>
<strong>Помним, что всё в&nbsp;сообществе зависит от&nbsp;нас</strong>. Если нам чего-то
не&nbsp;хватает, мы&nbsp;начинаем действовать&nbsp;&mdash; рассказываем об&nbsp;идее, находим
единомышленников, готовим и&nbsp;запускаем проект. Так в&nbsp;сообществе становится на&nbsp;одну
крутую активность больше. Так появилось наше сообщество. Так появился самиздат и&nbsp;все
проекты открытой редакции. Чтобы в&nbsp;сообществе случилось что-то прекрасное, достаточно
просто положить этому начало.
</p>
</li>
</ol>
</StaticPage> </StaticPage>
) )
} }

View File

@ -24,223 +24,221 @@ export const TermsOfUsePage = () => {
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:description" content={description} /> <Meta name="twitter:description" content={description} />
<article class="wide-container container--static-page"> <h1 id="terms-of-use">
<h1 id="terms-of-use"> <span class="wrapped">Пользовательское соглашение</span>
<span class="wrapped">Пользовательское соглашение</span> </h1>
</h1>
<p> <p>
Дискурс&nbsp;&mdash; это сообщество творческих людей, объединенных идеей делать интересный журнал Дискурс&nbsp;&mdash; это сообщество творческих людей, объединенных идеей делать интересный журнал
для всех желающих. Авторы Дискурса сообща посредством прямого голосования определяют содержание для всех желающих. Авторы Дискурса сообща посредством прямого голосования определяют содержание
журнала. журнала.
</p> </p>
<p>Для того, чтобы Дискурс работал без помех, разработаны настоящие Правила.</p> <p>Для того, чтобы Дискурс работал без помех, разработаны настоящие Правила.</p>
<h3 id="definitions">Определения</h3> <h3 id="definitions">Определения</h3>
<p> <p>
<strong>Сайт</strong>&nbsp;&mdash; портал discours.io <strong>Сайт</strong>&nbsp;&mdash; портал discours.io
</p> </p>
<p> <p>
<strong>Пользователь</strong>&nbsp;&mdash; лицо, пользующееся Сайтом, либо юридическое лицо, <strong>Пользователь</strong>&nbsp;&mdash; лицо, пользующееся Сайтом, либо юридическое лицо,
обладающее правами на&nbsp;интеллектуальную собственность. обладающее правами на&nbsp;интеллектуальную собственность.
</p> </p>
<p> <p>
<strong>Публикация контента</strong>&nbsp;&mdash; размещение Пользователем посредством Сайта <strong>Публикация контента</strong>&nbsp;&mdash; размещение Пользователем посредством Сайта
объектов авторских прав и&nbsp;другой информации для других пользователей. объектов авторских прав и&nbsp;другой информации для других пользователей.
</p> </p>
<p> <p>
<strong>Издательство</strong>&nbsp;&mdash; администрация сайта, которая занимается технической <strong>Издательство</strong>&nbsp;&mdash; администрация сайта, которая занимается технической
и&nbsp;издательской деятельностью для обеспечения функционирования Сайта и&nbsp;Альманаха. и&nbsp;издательской деятельностью для обеспечения функционирования Сайта и&nbsp;Альманаха.
Издательство не&nbsp;вмешивается в&nbsp;принятие редакционных решений авторским сообществом. Издательство не&nbsp;вмешивается в&nbsp;принятие редакционных решений авторским сообществом.
</p> </p>
<p> <p>
<strong>Альманах &laquo;Дискурс&raquo;</strong> (свидетельство о&nbsp;регистрации СМИ: ПИ &#8470; <strong>Альманах &laquo;Дискурс&raquo;</strong> (свидетельство о&nbsp;регистрации СМИ: ПИ &#8470;
ФС77-63947 от&nbsp;18.12.15)&nbsp;&mdash; печатное периодическое издание, которое выходит раз ФС77-63947 от&nbsp;18.12.15)&nbsp;&mdash; печатное периодическое издание, которое выходит раз
в&nbsp;год и&nbsp;состоит из&nbsp;лучших публикаций на&nbsp;Сайте за&nbsp;это время. в&nbsp;год и&nbsp;состоит из&nbsp;лучших публикаций на&nbsp;Сайте за&nbsp;это время.
</p> </p>
<h3 id="copyright">Авторские права</h3> <h3 id="copyright">Авторские права</h3>
<ol> <ol>
<li> <li>
<p> <p>
Вся информация на&nbsp;сайте (включая тексты, изображения, видеоматериалы, аудиозаписи, Вся информация на&nbsp;сайте (включая тексты, изображения, видеоматериалы, аудиозаписи,
программный код, дизайн сайта и&nbsp;т.д.) является объектом интеллектуальной собственности программный код, дизайн сайта и&nbsp;т.д.) является объектом интеллектуальной собственности
ее&nbsp;правообладателей и&nbsp;охраняется законодательством РФ. ее&nbsp;правообладателей и&nbsp;охраняется законодательством РФ.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Публикуя контент на&nbsp;сайте, Пользователь на&nbsp;безвозмездной основе предоставляет Публикуя контент на&nbsp;сайте, Пользователь на&nbsp;безвозмездной основе предоставляет
Издательству право на&nbsp;воспроизведение, распространение, перевод, редактирование контента. Издательству право на&nbsp;воспроизведение, распространение, перевод, редактирование контента.
Данное право предоставляется Издательству на&nbsp;весь срок действия авторских прав Данное право предоставляется Издательству на&nbsp;весь срок действия авторских прав
Пользователя. Пользователя.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Пользователь предоставляет Издательству право редактировать контент, в&nbsp;том числе вносить Пользователь предоставляет Издательству право редактировать контент, в&nbsp;том числе вносить
в&nbsp;него изменения, сокращения и&nbsp;дополнения, снабжать его иллюстрациями в&nbsp;него изменения, сокращения и&nbsp;дополнения, снабжать его иллюстрациями
и&nbsp;пояснениями, исправлять ошибки и&nbsp;уточнять фактические сведения, при условии, что и&nbsp;пояснениями, исправлять ошибки и&nbsp;уточнять фактические сведения, при условии, что
этим не&nbsp;искажается авторский замысел. этим не&nbsp;искажается авторский замысел.
</p> </p>
</li> </li>
<li> <li>
<p class="ng-binding"> <p class="ng-binding">
Обнародование контента осуществляется Издательством в&nbsp;соответствии с&nbsp;условиями Обнародование контента осуществляется Издательством в&nbsp;соответствии с&nbsp;условиями
лицензии{' '} лицензии{' '}
<a <a
href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.ru" href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.ru"
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"
> >
Creative Commons BY-NC-ND 4.0 Creative Commons BY-NC-ND 4.0
</a> </a>
. Все материалы сайта предназначены исключительно для личного некоммерческого использования. . Все материалы сайта предназначены исключительно для личного некоммерческого использования.
Права на&nbsp;дизайн и&nbsp;программный код сайта принадлежат Издательству. Права на&nbsp;дизайн и&nbsp;программный код сайта принадлежат Издательству.
</p> </p>
</li> </li>
<li> <li>
<p class="ng-binding"> <p class="ng-binding">
Все аудиовизуальные произведения являются собственностью своих авторов и&nbsp;правообладателей Все аудиовизуальные произведения являются собственностью своих авторов и&nbsp;правообладателей
и&nbsp;используются только в&nbsp;образовательных и&nbsp;информационных целях. Если и&nbsp;используются только в&nbsp;образовательных и&nbsp;информационных целях. Если
вы&nbsp;являетесь собственником того или иного произведения и&nbsp;не&nbsp;согласны с&nbsp;его вы&nbsp;являетесь собственником того или иного произведения и&nbsp;не&nbsp;согласны с&nbsp;его
размещением на&nbsp;сайте, пожалуйста, напишите на&nbsp; размещением на&nbsp;сайте, пожалуйста, напишите на&nbsp;
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> <a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io welcome@discours.io
</a> </a>
. .
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Цитирование, распространение, доведение до&nbsp;всеобщего сведения материалов Cайта Цитирование, распространение, доведение до&nbsp;всеобщего сведения материалов Cайта
приветствуется. При использовании материалов сайта необходимо указать имя автора приветствуется. При использовании материалов сайта необходимо указать имя автора и&nbsp;активную
и&nbsp;активную ссылку на&nbsp;материал на&nbsp;Сайте. ссылку на&nbsp;материал на&nbsp;Сайте.
</p> </p>
</li> </li>
</ol> </ol>
<h3 id="rules">Правила поведения</h3> <h3 id="rules">Правила поведения</h3>
<ol> <ol>
<li> <li>
<p> <p>
Находясь на&nbsp;Сайте, Пользователь подтверждает свое совершеннолетие, правоспособность, Находясь на&nbsp;Сайте, Пользователь подтверждает свое совершеннолетие, правоспособность,
а&nbsp;также согласие с&nbsp;настоящими Правилами и&nbsp;политикой конфиденциальности а&nbsp;также согласие с&nbsp;настоящими Правилами и&nbsp;политикой конфиденциальности
и&nbsp;готовность нести полную ответственность за&nbsp;их соблюдение. и&nbsp;готовность нести полную ответственность за&nbsp;их соблюдение.
</p> </p>
</li> </li>
<li> <li>
<h4>На&nbsp;сайте запрещено:</h4> <h4>На&nbsp;сайте запрещено:</h4>
<ul> <ul>
<li> <li>
Публиковать контент, авторские права на&nbsp;который принадлежат третьим лицам, без согласия Публиковать контент, авторские права на&nbsp;который принадлежат третьим лицам, без согласия
этих лиц. Если авторские права на контент принадлежат нескольким лицам, то&nbsp;его этих лиц. Если авторские права на контент принадлежат нескольким лицам, то&nbsp;его публикация
публикация предполагает согласие их&nbsp;всех. предполагает согласие их&nbsp;всех.
</li> </li>
<li>Размещать коммерческую и&nbsp;политическую рекламу.</li> <li>Размещать коммерческую и&nbsp;политическую рекламу.</li>
<li> <li>
Целенаправленно препятствовать нормальному функционированию сообщества и&nbsp;сайта Целенаправленно препятствовать нормальному функционированию сообщества и&nbsp;сайта
discours.io discours.io
</li> </li>
<li>Выдавать себя за&nbsp;другого человека и&nbsp;представляться его именем.</li> <li>Выдавать себя за&nbsp;другого человека и&nbsp;представляться его именем.</li>
<li> <li>
Размещать информацию, которая не&nbsp;соответствует целям создания Сайта, ущемляет интересы Размещать информацию, которая не&nbsp;соответствует целям создания Сайта, ущемляет интересы
других пользователей или третьих лиц, нарушает законы Российской Федерации. других пользователей или третьих лиц, нарушает законы Российской Федерации.
</li> </li>
</ul> </ul>
</li> </li>
<li> <li>
<p> <p>
Пользователь несет всю ответственность за&nbsp;содержание публикуемого контента и&nbsp;свое Пользователь несет всю ответственность за&nbsp;содержание публикуемого контента и&nbsp;свое
взаимодействие с&nbsp;другими пользователями, и&nbsp;обязуется возместить все расходы взаимодействие с&nbsp;другими пользователями, и&nbsp;обязуется возместить все расходы
в&nbsp;случае предъявления каких-либо претензий третьими лицами. Издательство не&nbsp;несет в&nbsp;случае предъявления каких-либо претензий третьими лицами. Издательство не&nbsp;несет
ответственности за&nbsp;содержание публикуемой пользователями информации, в&nbsp;том числе ответственности за&nbsp;содержание публикуемой пользователями информации, в&nbsp;том числе
за&nbsp;размещенные на&nbsp;сайте комментарии. Переписка между Пользователем за&nbsp;размещенные на&nbsp;сайте комментарии. Переписка между Пользователем
и&nbsp;Издательством считается юридически значимой. Настоящие Правила могут быть изменены и&nbsp;Издательством считается юридически значимой. Настоящие Правила могут быть изменены
Издательством, изменения вступают в&nbsp;силу с&nbsp;момента публикации на&nbsp;Сайте. Издательством, изменения вступают в&nbsp;силу с&nbsp;момента публикации на&nbsp;Сайте.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Если Пользователь очевидно и&nbsp;целенаправленно нарушает правила, Издательство может Если Пользователь очевидно и&nbsp;целенаправленно нарушает правила, Издательство может
и&nbsp;принять в&nbsp;отношении автора следующие меры: вынести предупреждение и&nbsp;обязать и&nbsp;принять в&nbsp;отношении автора следующие меры: вынести предупреждение и&nbsp;обязать
автора устранить допущенное нарушение, удалить контент, нарушающий правила, заблокировать или автора устранить допущенное нарушение, удалить контент, нарушающий правила, заблокировать или
удалить аккаунт нарушителя. удалить аккаунт нарушителя.
</p> </p>
</li> </li>
</ol> </ol>
<h3 id="privacy-policy">Политика конфиденциальности</h3> <h3 id="privacy-policy">Политика конфиденциальности</h3>
<ol> <ol>
<li> <li>
<p>Сайт может собирать у&nbsp;пользователей следующие данные:</p> <p>Сайт может собирать у&nbsp;пользователей следующие данные:</p>
<ul> <ul>
<li> <li>
<p> <p>
Данные, которые пользователи сообщают о&nbsp;себе сами при подаче заявки, регистрации, Данные, которые пользователи сообщают о&nbsp;себе сами при подаче заявки, регистрации,
авторизации или заполнения профиля, в&nbsp;том числе ФИО и&nbsp;контактную информацию. авторизации или заполнения профиля, в&nbsp;том числе ФИО и&nbsp;контактную информацию.
Конфиденциальные данные, такие как идентификатор и&nbsp;электронный адрес, используются Конфиденциальные данные, такие как идентификатор и&nbsp;электронный адрес, используются для
для идентификации пользователя. Данные профиля, размещённые публично по&nbsp;желанию идентификации пользователя. Данные профиля, размещённые публично по&nbsp;желанию
пользователя, которое выражается фактом их&nbsp;предоставления, используется для пользователя, которое выражается фактом их&nbsp;предоставления, используется для
демонстрации другим пользователям той информации о&nbsp;себе, которую пользователь готов демонстрации другим пользователям той информации о&nbsp;себе, которую пользователь готов
предоставить. предоставить.
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Данные, собранные автоматическим путем, такие, как cookie-файлы. Эти неперсонализированные Данные, собранные автоматическим путем, такие, как cookie-файлы. Эти неперсонализированные
данные могут использоваться для сбора статистики и&nbsp;улучшения работы сайта. данные могут использоваться для сбора статистики и&nbsp;улучшения работы сайта.
</p> </p>
</li> </li>
</ul> </ul>
</li> </li>
<li> <li>
<p> <p>
Издательство обеспечивает конфиденциальность персональных данных и&nbsp;применяет все Издательство обеспечивает конфиденциальность персональных данных и&nbsp;применяет все
необходимые организационные и&nbsp;технические меры по&nbsp;их защите. необходимые организационные и&nbsp;технические меры по&nbsp;их защите.
</p> </p>
</li> </li>
<li> <li>
<p class="ng-binding"> <p class="ng-binding">
По&nbsp;желанию пользователя Издательство готово удалить любую информацию о&nbsp;нем, По&nbsp;желанию пользователя Издательство готово удалить любую информацию о&nbsp;нем, собранную
собранную автоматическим путем. Для этого следует написать на&nbsp;адрес электронной почты{' '} автоматическим путем. Для этого следует написать на&nbsp;адрес электронной почты{' '}
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> <a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io welcome@discours.io
</a> </a>
. .
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Если в&nbsp;информации, предоставляемой Издательству Пользователем, содержатся персональные Если в&nbsp;информации, предоставляемой Издательству Пользователем, содержатся персональные
данные последнего, то&nbsp;фактом их&nbsp;предоставления он соглашается данные последнего, то&nbsp;фактом их&nbsp;предоставления он соглашается
на&nbsp;их&nbsp;обработку любым способом, не&nbsp;запрещенным законодательством РФ. на&nbsp;их&nbsp;обработку любым способом, не&nbsp;запрещенным законодательством РФ.
</p> </p>
<p class="ng-binding"> <p class="ng-binding">
Общедоступные видео на&nbsp;сайте могут транслироваться с&nbsp;YouTube и&nbsp;регулируются{' '} Общедоступные видео на&nbsp;сайте могут транслироваться с&nbsp;YouTube и&nbsp;регулируются{' '}
<a href="https://policies.google.com/privacy" target="_blank" rel="noreferrer"> <a href="https://policies.google.com/privacy" target="_blank" rel="noreferrer">
политикой конфиденциальности Google политикой конфиденциальности Google
</a> </a>
. Загрузка видео на&nbsp;сайт также означает согласие с&nbsp; . Загрузка видео на&nbsp;сайт также означает согласие с&nbsp;
<a href="https://www.youtube.com/t/terms" target="_blank" rel="noreferrer"> <a href="https://www.youtube.com/t/terms" target="_blank" rel="noreferrer">
Условиями использования YouTube Условиями использования YouTube
</a> </a>
. .
</p> </p>
</li> </li>
<li> <li>
<p> <p>
Данные, которые мы&nbsp;получаем от&nbsp;вас, мы&nbsp;используем только в&nbsp;соответствии Данные, которые мы&nbsp;получаем от&nbsp;вас, мы&nbsp;используем только в&nbsp;соответствии
с&nbsp;принципами обработки данных, указанными в&nbsp;этом документе. с&nbsp;принципами обработки данных, указанными в&nbsp;этом документе.
</p> </p>
</li> </li>
</ol> </ol>
<h3 id="feedback">Обратная связь</h3> <h3 id="feedback">Обратная связь</h3>
<p class="ng-binding"> <p class="ng-binding">
Любые вопросы и&nbsp;предложения по&nbsp;поводу функционирования сайта можно направить Любые вопросы и&nbsp;предложения по&nbsp;поводу функционирования сайта можно направить
по&nbsp;электронной почте{' '} по&nbsp;электронной почте{' '}
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer"> <a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
welcome@discours.io welcome@discours.io
</a>{' '} </a>{' '}
или через форму <a href="/connect">&laquo;предложить идею&raquo;</a>. или через форму <a href="/connect">&laquo;предложить идею&raquo;</a>.
</p> </p>
</article>
</StaticPage> </StaticPage>
) )
} }

View File

@ -14,21 +14,21 @@ export const ThanksPage = () => {
return ( return (
<StaticPage title={ogTitle}> <StaticPage title={ogTitle}>
<article class="wide-container container--static-page"> <Meta name="descprition" content={description} />
<Meta name="descprition" content={description} /> <Meta name="keywords" content={t('keywords')} />
<Meta name="keywords" content={t('keywords')} /> <Meta name="og:type" content="article" />
<Meta name="og:type" content="article" /> <Meta name="og:title" content={ogTitle} />
<Meta name="og:title" content={ogTitle} /> <Meta name="og:image" content={ogImage} />
<Meta name="og:image" content={ogImage} /> <Meta name="twitter:image" content={ogImage} />
<Meta name="twitter:image" content={ogImage} /> <Meta name="og:description" content={description} />
<Meta name="og:description" content={description} /> <Meta name="twitter:card" content="summary_large_image" />
<Meta name="twitter:card" content="summary_large_image" /> <Meta name="twitter:title" content={ogTitle} />
<Meta name="twitter:title" content={ogTitle} /> <Meta name="twitter:description" content={description} />
<Meta name="twitter:description" content={description} />
<h1> <h1>
<span class="wrapped">{ogTitle}</span> <span class="wrapped">{ogTitle}</span>
</h1> </h1>
{/* {/*
<h3><b>Команда</b></h3> <h3><b>Команда</b></h3>
<p> <p>
Константин Ворович исполнительный директор, Константин Ворович исполнительный директор,
@ -53,42 +53,41 @@ export const ThanksPage = () => {
> >
</p> </p>
*/} */}
<h3>Неоценимый вклад в&nbsp;Дискурс внесли и&nbsp;вносят</h3> <h3>Неоценимый вклад в&nbsp;Дискурс внесли и&nbsp;вносят</h3>
<p> <p>
Мария Бессмертная, Дамир Бикчурин, Константин Ворович, Ян&nbsp;Выговский, Эльдар Гариффулин, Павел Мария Бессмертная, Дамир Бикчурин, Константин Ворович, Ян&nbsp;Выговский, Эльдар Гариффулин, Павел
Гафаров, Виктория Гендлина, Александр Гусев, Данила Давыдов, Константин Дубовик, Вячеслав Гафаров, Виктория Гендлина, Александр Гусев, Данила Давыдов, Константин Дубовик, Вячеслав Еременко,
Еременко, Кристина Ибрагим, Екатерина Ильина, Анна Капаева, Яна Климова, Александр Коренков, Ирэна Кристина Ибрагим, Екатерина Ильина, Анна Капаева, Яна Климова, Александр Коренков, Ирэна Лесневская,
Лесневская, Игорь Лобанов, Анастасия Лозовая, Григорий Ломизе, Евгений Медведев, Павел Никулин, Игорь Лобанов, Анастасия Лозовая, Григорий Ломизе, Евгений Медведев, Павел Никулин, Николай
Николай Носачевский, Андрей Орловский, Михаил Панин, Антон Панов, Павел Пепперштейн, Любовь Носачевский, Андрей Орловский, Михаил Панин, Антон Панов, Павел Пепперштейн, Любовь Покровская, Илья
Покровская, Илья Розовский, Денис Светличный, Павел Соколов, Сергей Стрельников, Глеб Струнников, Розовский, Денис Светличный, Павел Соколов, Сергей Стрельников, Глеб Струнников, Николай Тарковский,
Николай Тарковский, Кирилл Филимонов, Алексей Хапов, Екатерина Харитонова Кирилл Филимонов, Алексей Хапов, Екатерина Харитонова
</p> </p>
<h3>Авторы</h3> <h3>Авторы</h3>
<p> <p>
Мы&nbsp;безмерно благодарны{' '} Мы&nbsp;безмерно благодарны{' '}
<a href="/authors" target="_blank" rel="noopener noreferrer"> <a href="/authors" target="_blank" rel="noopener noreferrer">
каждому автору каждому автору
</a>{' '} </a>{' '}
за&nbsp;участие и&nbsp;поддержку проекта. Сегодня, когда для большинства деньги стали целью за&nbsp;участие и&nbsp;поддержку проекта. Сегодня, когда для большинства деньги стали целью
и&nbsp;основным источником мотивации, бескорыстная помощь и&nbsp;основанный на&nbsp;энтузиазме и&nbsp;основным источником мотивации, бескорыстная помощь и&nbsp;основанный на&nbsp;энтузиазме труд
труд бесценны. Именно вы&nbsp;своим трудом каждый день делаете Дискурс таким, какой он&nbsp;есть. бесценны. Именно вы&nbsp;своим трудом каждый день делаете Дискурс таким, какой он&nbsp;есть.
</p> </p>
<h3>Иллюстраторы</h3> <h3>Иллюстраторы</h3>
<p> <p>
Ольга Аверинова, Регина Акчурина, Айгуль Берхеева, Екатерина Вакуленко, Анастасия Викулова, Мария Ольга Аверинова, Регина Акчурина, Айгуль Берхеева, Екатерина Вакуленко, Анастасия Викулова, Мария
Власенко, Ванесса Гаврилова, Ольга Горше, Ксения Горшкова, Ангелина Гребенюкова, Илья Diliago, Власенко, Ванесса Гаврилова, Ольга Горше, Ксения Горшкова, Ангелина Гребенюкова, Илья Diliago, Антон
Антон Жаголкин, Саша Керова, Ольга Машинец, Злата Мечетина, Тала Никитина, Никита Поздняков, Жаголкин, Саша Керова, Ольга Машинец, Злата Мечетина, Тала Никитина, Никита Поздняков, Матвей
Матвей Сапегин, Татьяна Сафонова, Виктория Шибаева Сапегин, Татьяна Сафонова, Виктория Шибаева
</p> </p>
<h3>Меценаты</h3> <h3>Меценаты</h3>
<p> <p>
Дискурс существует исключительно на&nbsp;пожертвования читателей. Мы&nbsp;бесконечно признательны Дискурс существует исключительно на&nbsp;пожертвования читателей. Мы&nbsp;бесконечно признательны
всем, кто нас поддерживает. Ваши пожертвования&nbsp;&mdash; финансовый фундамент журнала. всем, кто нас поддерживает. Ваши пожертвования&nbsp;&mdash; финансовый фундамент журнала. Благодаря
Благодаря вам мы&nbsp;развиваем платформу качественной журналистики, которая помогает самым разным вам мы&nbsp;развиваем платформу качественной журналистики, которая помогает самым разным авторам
авторам быть услышанными. Стать нашим меценатом и&nbsp;подписаться на&nbsp;ежемесячную поддержку быть услышанными. Стать нашим меценатом и&nbsp;подписаться на&nbsp;ежемесячную поддержку проекта
проекта можно <a href="/about/help">здесь</a>. можно <a href="/about/help">здесь</a>.
</p> </p>
</article>
</StaticPage> </StaticPage>
) )
} }

View File

@ -2,7 +2,7 @@ import type { PageProps } from './types'
import { createSignal, onMount } from 'solid-js' import { createSignal, onMount } from 'solid-js'
import { AllTopicsView } from '../components/Views/AllTopics' import { AllTopics } from '../components/Views/AllTopics'
import { PageLayout } from '../components/_shared/PageLayout' import { PageLayout } from '../components/_shared/PageLayout'
import { useLocalize } from '../context/localize' import { useLocalize } from '../context/localize'
import { loadAllTopics } from '../stores/zine/topics' import { loadAllTopics } from '../stores/zine/topics'
@ -23,7 +23,7 @@ export const AllTopicsPage = (props: PageProps) => {
return ( return (
<PageLayout title={t('Themes and plots')}> <PageLayout title={t('Themes and plots')}>
<AllTopicsView isLoaded={isLoaded()} topics={props.allTopics} /> <AllTopics isLoaded={isLoaded()} topics={props.allTopics} />
</PageLayout> </PageLayout>
) )
} }

View File

@ -50,4 +50,9 @@ export type UploadedFile = {
originalFilename?: string originalFilename?: string
} }
export type FollowedInfo = {
value?: boolean
loaded?: boolean
}
export type SubscriptionFilter = 'all' | 'authors' | 'topics' | 'communities' export type SubscriptionFilter = 'all' | 'authors' | 'topics' | 'communities'