Merge branch 'dev' into 'main'

Merge from dev (build 68)

See merge request keanuapp/keanuapp-weblite!355
This commit is contained in:
N Pex 2025-09-05 12:41:29 +00:00 committed by GitLab
commit 86ab6830cc
No known key found for this signature in database
259 changed files with 17659 additions and 28729 deletions

View file

@ -29,8 +29,8 @@ var packs = [];
fromDir(process.argv[2], /\.png$/, function (filename) { fromDir(process.argv[2], /\.png$/, function (filename) {
let file = filename.substring(process.argv[2].length); let file = filename.substring(process.argv[2].length);
let parts = file.split("/"); let parts = file.split("/");
let pack = parts[1]; let pack = parts[parts.length - 2];
let sticker = parts[2]; let sticker = parts[parts.length - 1];
if (!packs[pack]) { if (!packs[pack]) {
packs[pack] = []; packs[pack] = [];
} }

View file

@ -4,9 +4,9 @@
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" id="favicon" href="<%= BASE_URL %>favicon.ico" /> <link rel="icon" id="favicon" href="/favicon.ico" />
<title><%= htmlWebpackPlugin.options.title %></title> <title></title>
<meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="mobile-web-app-capable" content="yes" />
<link rel="apple-touch-icon" href="./icons/icon-72x72.png" sizes="72x72" /> <link rel="apple-touch-icon" href="./icons/icon-72x72.png" sizes="72x72" />
<link rel="apple-touch-icon" href="./icons/icon-96x96.png" sizes="96x96" /> <link rel="apple-touch-icon" href="./icons/icon-96x96.png" sizes="96x96" />
<link rel="apple-touch-icon" href="./icons/icon-128x128.png" sizes="128x128" /> <link rel="apple-touch-icon" href="./icons/icon-128x128.png" sizes="128x128" />
@ -16,7 +16,7 @@
<link rel="apple-touch-icon" href="./icons/icon-384x384.png" sizes="384x384" /> <link rel="apple-touch-icon" href="./icons/icon-384x384.png" sizes="384x384" />
<link rel="apple-touch-icon" href="./icons/icon-512x512.png" sizes="512x512" /> <link rel="apple-touch-icon" href="./icons/icon-512x512.png" sizes="512x512" />
<link rel="manifest" href="./manifest.json" /> <link rel="manifest" href="./manifest.json" />
<script src="./lottie-player.js"></script> <script src="/lottie-player.js" type="module"></script>
<style> <style>
#loader { #loader {
position: fixed; position: fixed;
@ -31,11 +31,12 @@
justify-content: center; justify-content: center;
} }
</style> </style>
<script type="module" src="/src/main.js"></script>
</head> </head>
<body> <body>
<noscript> <noscript>
<strong <strong
>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please >We're sorry but the app doesn't work properly without JavaScript enabled. Please
enable it to continue.</strong enable it to continue.</strong
> >
</noscript> </noscript>
@ -46,6 +47,7 @@
<lottie-player autoplay loop mode="normal" src="./loader.json" style="width: 128px"> </lottie-player> <lottie-player autoplay loop mode="normal" src="./loader.json" style="width: 128px"> </lottie-player>
</div> </div>
</div> </div>
<div id="app2"></div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
</body> </body>

28380
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,69 +1,79 @@
{ {
"name": "keanuapp-weblite", "name": "keanuapp-weblite",
"version": "0.1.44", "version": "0.1.68",
"private": true, "private": true,
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "dev": "vite",
"build": "vue-cli-service build", "build": "vite build",
"lint": "vue-cli-service lint", "serve": "vite preview",
"create-sticker-config": "node ./create_sticker_config.js $1" "create-sticker-config": "node ./create_sticker_config.js $1"
}, },
"dependencies": { "dependencies": {
"@guardianproject/proofmode": "^0.4.0",
"@matrix-org/olm": "^3.2.12", "@matrix-org/olm": "^3.2.12",
"@vitejs/plugin-vue": "^5.2.3",
"aes-js": "^3.1.2", "aes-js": "^3.1.2",
"axios": "^1.4.0", "axios": "^1.4.0",
"browserify-fs": "^1.0.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"clean-insights-sdk": "^2.4", "clean-insights-sdk": "^2.4",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"crypto-browserify": "^3.12.0", "crypto-browserify": "^3.12.1",
"data-uri-to-buffer": "^3.0.1",
"dayjs": "^1.10.3", "dayjs": "^1.10.3",
"deepmerge": "^4.3.1",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fix-webm-duration": "^1.0.0", "image-resize": "^1.4.1",
"image-resize": "^1.1.5", "image-size": "^2.0.2",
"image-size": "^1.0.0",
"intersection-observer": "^0.12", "intersection-observer": "^0.12",
"js-sha256": "^0.9.0",
"json-web-key": "^0.4.0", "json-web-key": "^0.4.0",
"jszip": "^3.9.1",
"linkify-html": "^4.1.0", "linkify-html": "^4.1.0",
"linkifyjs": "^4.1.0", "linkifyjs": "^4.1.0",
"material-design-icons-iconfont": "^6.7.0", "material-design-icons-iconfont": "^6.7.0",
"matrix-js-sdk": "^23.4.0", "matrix-js-sdk": "^37.12.0",
"md-gum-polyfill": "^1.0.0", "md-gum-polyfill": "^1.0.0",
"mic-recorder-to-mp3": "^2.2.2",
"path-browserify": "^1.0.1", "path-browserify": "^1.0.1",
"pretty-bytes": "^5.6.0", "pretty-bytes": "^5.6.0",
"qrcode": "^1.4.4", "process": "^0.11.10",
"qrcode": "^1.5.4",
"raw-loader": "^4.0.2", "raw-loader": "^4.0.2",
"recordrtc": "^5.6.2",
"roboto-fontface": "*", "roboto-fontface": "*",
"stream-browserify": "^3.0.0", "stream-browserify": "^3.0.0",
"v-emoji-picker": "^2.3.1", "threads": "^1.7.0",
"vue": "^2.6.11", "tiny-emitter": "^2.1.0",
"vue-clipboard2": "^0.3.1", "util": "^0.12.5",
"vue-i18n": "^8.24.4", "vue": "^3.5.13",
"vue-resize": "^1.0", "vue-3-sanitize": "^0.1.4",
"vue-router": "^3.2.0", "vue-clipboard2": "^0.3.3",
"vue-sanitize": "^0.2.1", "vue-i18n": "^11.1.3",
"vue-router": "^4.5.1",
"vue-swipeable-bottom-sheet": "^0.0.5", "vue-swipeable-bottom-sheet": "^0.0.5",
"vuetify": "^2.2.11", "vue3-emoji-picker": "^1.1.8",
"vuex": "^3.5.1", "vue3-resize": "^0.2.0",
"vuetify": "^3.8.3",
"vuex": "^4.1.0",
"vuex-persist": "^3.1.3" "vuex-persist": "^3.1.3"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "^5.0.8", "@rollup/plugin-commonjs": "^28.0.3",
"@vue/cli-plugin-eslint": "^5.0.8", "@types/aes-js": "^3.1.4",
"@vue/cli-service": "^5.0.8", "@types/jszip": "^3.4.0",
"@vitejs/plugin-vue-jsx": "^4.1.2",
"@vue/compiler-sfc": "^3.5.13",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"copy-webpack-plugin": "^11.0.0", "copy-webpack-plugin": "^11.0.0",
"eslint": "^7.0", "eslint": "^7.0",
"eslint-plugin-vue": "^7.0", "eslint-plugin-vue": "^7.0",
"sass": "^1.19.0", "rollup-plugin-polyfill-node": "^0.13.0",
"sass": "^1.86.0",
"sass-loader": "^10", "sass-loader": "^10",
"vue-cli-plugin-vuetify": "^2.4", "typescript": "^5.8.3",
"vue-template-compiler": "^2.6.11", "unplugin-vue-components": "^28.4.1",
"vuetify-loader": "^1.3.0" "vite": "^6.2.2",
"vite-plugin-static-copy": "^2.3.0",
"vite-plugin-top-level-await": "^1.5.0",
"vite-plugin-vuetify": "^2.1.1",
"vite-plugin-wasm": "^3.4.1",
"vue-cli-plugin-vuetify": "^2.5.8"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,

View file

@ -1,69 +1,79 @@
{ {
"name": "keanuapp-weblite", "name": "keanuapp-weblite",
"version": "0.1.43", "version": "0.1.67",
"private": true, "private": true,
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "dev": "vite",
"build": "vue-cli-service build", "build": "vite build",
"lint": "vue-cli-service lint", "serve": "vite preview",
"create-sticker-config": "node ./create_sticker_config.js $1" "create-sticker-config": "node ./create_sticker_config.js $1"
}, },
"dependencies": { "dependencies": {
"@guardianproject/proofmode": "^0.4.0",
"@matrix-org/olm": "^3.2.12", "@matrix-org/olm": "^3.2.12",
"@vitejs/plugin-vue": "^5.2.3",
"aes-js": "^3.1.2", "aes-js": "^3.1.2",
"axios": "^1.4.0", "axios": "^1.4.0",
"browserify-fs": "^1.0.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"clean-insights-sdk": "^2.4", "clean-insights-sdk": "^2.4",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"crypto-browserify": "^3.12.0", "crypto-browserify": "^3.12.1",
"data-uri-to-buffer": "^3.0.1",
"dayjs": "^1.10.3", "dayjs": "^1.10.3",
"deepmerge": "^4.3.1",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fix-webm-duration": "^1.0.0", "image-resize": "^1.4.1",
"image-resize": "^1.1.5", "image-size": "^2.0.2",
"image-size": "^1.0.0",
"intersection-observer": "^0.12", "intersection-observer": "^0.12",
"js-sha256": "^0.9.0",
"json-web-key": "^0.4.0", "json-web-key": "^0.4.0",
"jszip": "^3.9.1",
"linkify-html": "^4.1.0", "linkify-html": "^4.1.0",
"linkifyjs": "^4.1.0", "linkifyjs": "^4.1.0",
"material-design-icons-iconfont": "^6.7.0", "material-design-icons-iconfont": "^6.7.0",
"matrix-js-sdk": "^23.4.0", "matrix-js-sdk": "^37.12.0",
"md-gum-polyfill": "^1.0.0", "md-gum-polyfill": "^1.0.0",
"mic-recorder-to-mp3": "^2.2.2",
"path-browserify": "^1.0.1", "path-browserify": "^1.0.1",
"pretty-bytes": "^5.6.0", "pretty-bytes": "^5.6.0",
"qrcode": "^1.4.4", "process": "^0.11.10",
"qrcode": "^1.5.4",
"raw-loader": "^4.0.2", "raw-loader": "^4.0.2",
"recordrtc": "^5.6.2",
"roboto-fontface": "*", "roboto-fontface": "*",
"stream-browserify": "^3.0.0", "stream-browserify": "^3.0.0",
"v-emoji-picker": "^2.3.1", "threads": "^1.7.0",
"vue": "^2.6.11", "tiny-emitter": "^2.1.0",
"vue-clipboard2": "^0.3.1", "util": "^0.12.5",
"vue-i18n": "^8.24.4", "vue": "^3.5.13",
"vue-resize": "^1.0", "vue-3-sanitize": "^0.1.4",
"vue-router": "^3.2.0", "vue-clipboard2": "^0.3.3",
"vue-sanitize": "^0.2.1", "vue-i18n": "^11.1.3",
"vue-router": "^4.5.1",
"vue-swipeable-bottom-sheet": "^0.0.5", "vue-swipeable-bottom-sheet": "^0.0.5",
"vuetify": "^2.2.11", "vue3-emoji-picker": "^1.1.8",
"vuex": "^3.5.1", "vue3-resize": "^0.2.0",
"vuetify": "^3.8.3",
"vuex": "^4.1.0",
"vuex-persist": "^3.1.3" "vuex-persist": "^3.1.3"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "^5.0.8", "@rollup/plugin-commonjs": "^28.0.3",
"@vue/cli-plugin-eslint": "^5.0.8", "@types/aes-js": "^3.1.4",
"@vue/cli-service": "^5.0.8", "@types/jszip": "^3.4.0",
"@vitejs/plugin-vue-jsx": "^4.1.2",
"@vue/compiler-sfc": "^3.5.13",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"copy-webpack-plugin": "^11.0.0", "copy-webpack-plugin": "^11.0.0",
"eslint": "^7.0", "eslint": "^7.0",
"eslint-plugin-vue": "^7.0", "eslint-plugin-vue": "^7.0",
"sass": "^1.19.0", "rollup-plugin-polyfill-node": "^0.13.0",
"sass": "^1.86.0",
"sass-loader": "^10", "sass-loader": "^10",
"vue-cli-plugin-vuetify": "^2.4", "typescript": "^5.8.3",
"vue-template-compiler": "^2.6.11", "unplugin-vue-components": "^28.4.1",
"vuetify-loader": "^1.3.0" "vite": "^6.2.2",
"vite-plugin-static-copy": "^2.3.0",
"vite-plugin-top-level-await": "^1.5.0",
"vite-plugin-vuetify": "^2.1.1",
"vite-plugin-wasm": "^3.4.1",
"vue-cli-plugin-vuetify": "^2.5.8"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,

View file

@ -58,6 +58,7 @@
<li>Interfering with security measures.</li> <li>Interfering with security measures.</li>
<li>Transmitting malware or harmful code.</li> <li>Transmitting malware or harmful code.</li>
<li>Harassing, threatening, or harming others.</li> <li>Harassing, threatening, or harming others.</li>
<li>ANY overtly sexual or pornographic material, defined as “explicit descriptions or displays of sexual organs or activities intended to stimulate erotic rather than aesthetic or emotional feelings.” or links to third-party sites featuring or hosting it.</li>
</ul> </ul>
<h2>8. Intellectual Property</h2> <h2>8. Intellectual Property</h2>

View file

@ -6,9 +6,8 @@
<!-- Loading indicator --> <!-- Loading indicator -->
<v-container <v-container
fluid fluid
fill-height
v-if="showLoadingScreen" v-if="showLoadingScreen"
class="loading-container" class="loading-container fill-height"
> >
<v-row align="center" justify="center"> <v-row align="center" justify="center">
<v-col class="text-center"> <v-col class="text-center">
@ -22,7 +21,7 @@
</v-container> </v-container>
<v-skeleton-loader <v-skeleton-loader
type="list-item-avatar-two-line, divider, list-item-three-line, card-heading" type="list-item-avatar-two-line,divider,list-item-three-line,heading"
v-if="showLoadingScreen" v-if="showLoadingScreen"
></v-skeleton-loader> ></v-skeleton-loader>
<unsupported-browser-alert /> <unsupported-browser-alert />
@ -87,7 +86,7 @@ export default {
} else { } else {
this.loading = false; this.loading = false;
} }
this.$config.promise.then(this.onConfigLoaded); this.$config.load().then(this.onConfigLoaded);
}, },
methods: { methods: {
windowNotificationPermission, windowNotificationPermission,
@ -139,7 +138,7 @@ export default {
}, },
computed: { computed: {
showLoadingScreen() { showLoadingScreen() {
return this.loading || !(this.$config.loaded); return this.loading || !(this.$config.isLoaded());
}, },
notificationCount, notificationCount,
currentUser() { currentUser() {
@ -227,8 +226,9 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import '~vuetify/src/styles/settings/_variables.scss'; @use '@/assets/css/variables' as *;
@import '@/assets/css/variables'; @use "vuetify/settings" as *;
@use "sass:map";
.copyright { .copyright {
font-size: 10px; font-size: 10px;
@ -239,7 +239,7 @@ export default {
} }
.main { .main {
@media #{map-get($display-breakpoints, 'lg-and-up')} { @media #{map.get($display-breakpoints, 'lg-and-up')} {
margin: 0 auto; margin: 0 auto;
width: $main-desktop-width; width: $main-desktop-width;
} }

View file

@ -14,7 +14,6 @@
"defaultMatrixDomainPart": "neo.keanu.im", "defaultMatrixDomainPart": "neo.keanu.im",
"identityServer_unset": "", "identityServer_unset": "",
"registrationToken_unset": "", "registrationToken_unset": "",
"rtl": false,
"accentColor_unset": "", "accentColor_unset": "",
"logo_unset": "", "logo_unset": "",
"analytics": [ "analytics": [
@ -49,9 +48,10 @@
} }
], ],
"experimental_voice_mode": true, "experimental_voice_mode": true,
"experimental_file_mode": true,
"experimental_read_only_room": true, "experimental_read_only_room": true,
"experimental_public_room": true, "experimental_public_room": true,
"show_status_messages": "never", "show_status_messages": "never",
"hide_add_room_on_home": false "hide_add_room_on_home": false,
"mirrors": [],
"roomTypes": ["group_chat", "channel", "file_drop"]
} }

View file

@ -1 +0,0 @@
// Sass Mixins

View file

@ -1,3 +1,5 @@
@use "@/assets/css/variables" as *;
.cursor-pointer { .cursor-pointer {
cursor: pointer !important; cursor: pointer !important;
} }

View file

@ -1,3 +1,5 @@
@forward "vuetify/settings";
$font-family: "Poppins"; $font-family: "Poppins";
$background: #ffffff; $background: #ffffff;
$app-background: #f6f6f6; $app-background: #f6f6f6;
@ -22,3 +24,5 @@ $poll-hilite-color-bg: #d6d5fc;
$alert-bg-color: #FF3300; $alert-bg-color: #FF3300;
$min-touch-target: 48px; $min-touch-target: 48px;
$large-button-height: $min-touch-target;
$small-button-height: 36px;

View file

@ -1,3 +1,5 @@
@use "@/assets/css/variables" as *;
.chat-root.channel { .chat-root.channel {
background-color: #f2f2f2; background-color: #f2f2f2;
.chat-content { .chat-content {
@ -102,7 +104,7 @@
/* full bleed */ /* full bleed */
padding: 0 0 0 0; padding: 0 0 0 0;
border-radius: 0 !important; border-radius: 0 !important;
.v-image, video { .v-img, video {
border-radius: 0 !important; border-radius: 0 !important;
} }
} }
@ -111,6 +113,7 @@
flex: 0 0 100%; flex: 0 0 100%;
margin: 24px 7px 0 7px; margin: 24px 7px 0 7px;
padding: 0 8px 16px 8px; padding: 0 8px 16px 8px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
.emoji { .emoji {
font-size: 12 * $chat-text-size; font-size: 12 * $chat-text-size;
font-weight: 500; font-weight: 500;
@ -120,11 +123,10 @@
height: 21px; height: 21px;
} }
} }
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
} }
/* Make all images 'cover' */ /* Make all images 'cover' */
.v-image__image { .v-img__image {
background-size: cover; background-size: cover;
} }
} }

View file

@ -1,8 +1,10 @@
@import "~vuetify/src/styles/settings/_variables.scss"; @forward "@/assets/css/variables";
@import "@/assets/css/main.scss"; @use "vuetify/settings" as *;
@import "@/assets/css/vendors/v-emoji-picker"; @use "@/assets/css/variables" as *;
@import "@/assets/css/filedrop.scss"; @use "@/assets/css/main.scss" as *;
@import "@/assets/css/channel.scss"; @use "@/assets/css/vendors/v-emoji-picker" as *;
@use "@/assets/css/channel.scss" as *;
@use "sass:map";
$admin-bg: black; $admin-bg: black;
$admin-fg: white; $admin-fg: white;
@ -22,13 +24,22 @@ body {
} }
} }
.v-input.no-underline {
.v-field__outline {
/* Remove text underline */
color: transparent !important;
min-height: 20px;
overflow: hidden;
}
}
.home { .home {
.v-card { .v-card {
background-color: white; background-color: white;
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.25) !important; box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.25) !important;
border-radius: 18px; border-radius: 18px;
padding-bottom: 10px; padding-bottom: 10px;
.v-item-group > div:not(:last-of-type):after { .v-list > .v-list-item:not(:last-of-type):before {
/* divider */ /* divider */
position: absolute; position: absolute;
content: " "; content: " ";
@ -89,7 +100,7 @@ body {
font-size: 11 * $chat-text-size; font-size: 11 * $chat-text-size;
color: white; color: white;
background-color: red !important; background-color: red !important;
border-radius: $chat-standard-padding / 2; border-radius: $chat-standard-padding * 0.5;
height: $chat-standard-padding; height: $chat-standard-padding;
margin-top: $chat-standard-padding-xs; margin-top: $chat-standard-padding-xs;
margin-bottom: $chat-standard-padding-xs; margin-bottom: $chat-standard-padding-xs;
@ -106,7 +117,7 @@ body {
line-height: 140%; line-height: 140%;
color: white !important; color: white !important;
background-color: #ff3300 !important; background-color: #ff3300 !important;
border-radius: $small-button-height / 2; border-radius: $small-button-height * 0.5;
min-height: 0; min-height: 0;
height: $small-button-height !important; height: $small-button-height !important;
margin-top: $chat-standard-padding-xs; margin-top: $chat-standard-padding-xs;
@ -183,7 +194,7 @@ body {
} }
} }
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
position: fixed; position: fixed;
z-index: 10; z-index: 10;
} }
@ -228,7 +239,7 @@ body {
background: #4d4d4d; background: #4d4d4d;
} }
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
//margin-top: 72px; //margin-top: 72px;
margin-bottom: 70px; margin-bottom: 70px;
} }
@ -262,7 +273,7 @@ body {
margin: 0px 20px; margin: 0px 20px;
padding: 20px; padding: 20px;
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
margin: 0px 5px; margin: 0px 5px;
padding: 15px; padding: 15px;
} }
@ -281,7 +292,7 @@ body {
border: 1px solid #d4d4d4; border: 1px solid #d4d4d4;
border-radius: 32px; border-radius: 32px;
margin-bottom: 10px; margin-bottom: 10px;
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
margin-bottom: 12px; margin-bottom: 12px;
} }
} }
@ -295,7 +306,7 @@ body {
fill: black; fill: black;
} }
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
display: none; display: none;
} }
} }
@ -312,7 +323,20 @@ body {
font-family: "Inter", sans-serif; font-family: "Inter", sans-serif;
font-weight: 300; font-weight: 300;
font-size: 18 * $chat-text-size; font-size: 18 * $chat-text-size;
.v-input__slot {
.v-field__overlay {
display: none;
}
.v-field__input {
padding: 0;
min-height: 32px;
mask-image: none;
-webkit-mask-image: none;
font-family: "Inter", sans-serif;
font-weight: 300;
font-size: 18 * $chat-text-size;
}
.v-field__outline {
/* Remove text underline */ /* Remove text underline */
color: transparent !important; color: transparent !important;
min-height: 20px; min-height: 20px;
@ -333,7 +357,7 @@ body {
z-index: 40; z-index: 40;
} }
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
position: fixed; position: fixed;
bottom: 0px; bottom: 0px;
width: 100%; width: 100%;
@ -343,12 +367,18 @@ body {
.scroll-to-end { .scroll-to-end {
position: absolute; position: absolute;
bottom: 20px; bottom: 102px;
right: 16px; right: 16px;
opacity: 1;
transition: opacity 0.3s linear;
&.reversed { &.reversed {
top: 120px; top: 120px;
transform: rotate(180deg); transform: rotate(180deg);
} }
&.hidden {
pointer-events: none;
opacity: 0;
}
} }
.op-button { .op-button {
@ -437,7 +467,7 @@ body {
position: relative; position: relative;
max-width: 70%; max-width: 70%;
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
min-height: $min-touch-target; min-height: $min-touch-target;
} }
} }
@ -531,7 +561,7 @@ body {
position: relative; position: relative;
max-width: 70%; max-width: 70%;
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
min-height: $min-touch-target; min-height: $min-touch-target;
} }
} }
@ -550,12 +580,13 @@ body {
} }
.bubble.image-bubble { .bubble.image-bubble {
padding: 0px; padding: 0px;
overflow: hidden;
display: inline-block; display: inline-block;
width: 70%; width: 70%;
max-width: 70%; max-width: 70%;
cursor: pointer; cursor: pointer;
.v-image, .v-img,
video { video {
border-radius: 10px 10px 0 10px; border-radius: 10px 10px 0 10px;
[dir="rtl"] & { [dir="rtl"] & {
@ -733,6 +764,12 @@ body {
.v-icon { .v-icon {
color: white !important; color: white !important;
} }
.v-btn {
background-color: black !important;
}
.v-slider .v-slider-thumb {
color: currentColor !important;
}
} }
.play-time { .play-time {
font-family: "Inter", sans-serif; font-family: "Inter", sans-serif;
@ -745,12 +782,22 @@ body {
flex: 1 1 100%; flex: 1 1 100%;
height: 30px; height: 30px;
.v-slider__thumb { .v-slider-thumb {
display: none; display: none;
} }
&:hover .v-slider__thumb { &:hover .v-slider-thumb {
display: block; display: block;
} }
.v-slider-track__background {
height: 1px;
color: currentColor;
}
.v-slider-track__fill {
filter: brightness(2.5);
height: 100%;
border-radius: 0;
opacity: 0.3;
}
} }
} }
@ -883,6 +930,7 @@ body {
.room-list { .room-list {
.room-list-room { .room-list-room {
color: white; // Used as selected item background color: white; // Used as selected item background
min-height: 58px;
.v-avatar:not(.round) { .v-avatar:not(.round) {
// Make avatars rounded squares! // Make avatars rounded squares!
border-radius: 8px; border-radius: 8px;
@ -974,7 +1022,7 @@ body {
} }
.filled-button { .filled-button {
@media #{map-get($display-breakpoints, 'sm-and-up')} { @media #{map.get($display-breakpoints, 'sm-and-up')} {
min-width: 180px !important; min-width: 180px !important;
} }
} }
@ -989,6 +1037,12 @@ body {
margin-left: 6px; margin-left: 6px;
} }
.member .knock-reason {
margin-left: 38px;
font-size: 0.7em;
color: #aaa;
}
.member .user-power { .member .user-power {
margin-left: 6px; margin-left: 6px;
color: #aaa; color: #aaa;
@ -1566,7 +1620,7 @@ body {
line-height: 140%; line-height: 140%;
color: white !important; color: white !important;
background-color: #4642f1 !important; background-color: #4642f1 !important;
border-radius: $small-button-height / 2; border-radius: $small-button-height * 0.5;
min-height: 0; min-height: 0;
height: $small-button-height !important; height: $small-button-height !important;
margin-top: $chat-standard-padding-xs; margin-top: $chat-standard-padding-xs;

View file

@ -1,3 +1,5 @@
@use "../variables" as *;
.poll-bubble { .poll-bubble {
width: 70%; width: 70%;
text-align: start; text-align: start;

View file

@ -1,3 +1,5 @@
@use "../variables" as *;
.grow-enter-active, .grow-enter-active,
.grow-leave-active { .grow-leave-active {
transition-timing-function: ease-out; transition-timing-function: ease-out;
@ -17,14 +19,21 @@
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0; opacity: 0;
} }
.voice-recorder-btn {
padding: 30px;
background-color: $voice-recorder-color;
&.recording { .voice-recorder {
background-color: $voice-recording-color; .v-btn {
background-color: black;
color: white;
} }
&.recorded {
background-color: $voice-recorded-color; .voice-recorder-btn {
background-color: $voice-recorder-color;
&.recording {
background-color: $voice-recording-color;
}
&.recorded {
background-color: $voice-recorded-color;
}
} }
} }

View file

@ -1,4 +1,4 @@
@import "@/assets/css/main.scss"; @use "@/assets/css/main.scss" as *;
.create-root { .create-root {
@ -173,7 +173,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
.v-image { .v-img {
flex: 0 0 14px; flex: 0 0 14px;
width: 14px; width: 14px;
height: 10px; height: 10px;

View file

@ -1,365 +0,0 @@
$large-button-height: $min-touch-target;
$small-button-height: 36px;
.file-drop-root {
$hiliteColor: #4642f1;
font-family: "Inter", sans-serif;
position: absolute;
top: 0px;
left: 0;
right: 0;
bottom: 0;
margin: 0;
background-color: var(--v-background-color);
color: var(--v-foreground-color);
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 16px;
.file-drop-title {
color: #fff;
text-align: center;
font-size: 11.54 * $chat-text-size;
font-family: "Inter", sans-serif;
font-weight: 700;
line-height: 140%;
letter-spacing: 0.34px;
text-transform: uppercase;
margin-top: 13px;
margin-bottom: 25px;
}
.background {
width: 100%;
height: 50%;
background-color: #181719;
&.drop-target {
background-color: #383739;
}
border-radius: 19px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.file-format-info {
opacity: 0.6;
color: #fff;
text-align: center;
font-size: 11 * $chat-text-size;
font-family: "Inter", sans-serif;
line-height: 117%;
letter-spacing: 0.4px;
margin-top: 13px;
background: transparent;
}
.v-btn {
font-family: "Inter", sans-serif;
font-weight: 700;
font-size: 11.54 * $chat-text-size;
line-height: 140%;
color: white;
background-color: $hiliteColor !important;
border-radius: $small-button-height / 2;
min-height: 0;
height: $small-button-height !important;
margin-top: $chat-standard-padding-xs;
margin-bottom: $chat-standard-padding-xs;
&.large {
padding: 16px 23px;
height: $large-button-height;
border-radius: $large-button-height / 2;
}
}
textarea {
color: rgba(white, 80%) !important;
}
textarea::placeholder {
color: rgba(white, 80%) !important;
}
.attachment-wrapper {
width: 100%;
flex: 0 0 100%;
overflow-y: auto;
}
.file-drop-current-item {
width: 100%;
height: 70%;
background-color: #181719;
&.drop-target {
background-color: #383739;
}
border-radius: 19px;
overflow: hidden;
.v-image {
width: 100%;
height: 100%;
object-fit: cover;
}
.filename {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
}
.file-drop-thumbnail-container {
width: 100%;
padding: 13px 20px 15px 20px;
height: 74px;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
text-align: start;
/* Hide scrollbar for Chrome, Safari and Opera */
&::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
.file-drop-thumbnail {
width: 46px;
height: 46px;
border-radius: 9px;
overflow: hidden;
background-color: #242424;
border: 2px solid white;
display: inline-block;
position: relative;
&.current {
border: 2px solid #4642f1;
}
&.noborder {
border: 2px solid transparent;
}
.v-image {
width: 100%;
height: 100%;
object-fit: cover;
}
margin-right: 8px;
.add,
.remove {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
.v-icon {
width: 14px;
height: 15.75px;
}
}
.remove {
// Slight background to make visible
background-color: rgba(black, 0.2);
}
}
}
.file-drop-section {
margin-top: 20px;
padding: 16px 18px;
background-color: #181719;
border-radius: 19px;
}
.file-drop-input-container,
.file-drop-sending-input-container,
.file-drop-sent-input-container {
position: relative;
width: 100%;
min-height: 20%;
background-color: #181719;
border-radius: 19px;
display: flex;
flex-direction: column;
.input-area-text {
flex: 0 0 auto;
width: 100%;
margin-bottom: 50px;
padding: 16px 18px;
font-family: "Inter", sans-serif;
font-weight: 300;
}
.v-btn {
position: absolute;
right: 8px;
bottom: 10px;
}
}
@keyframes fadeInStackItem {
from {opacity: 0;}
to {opacity: 1;}
}
// Sending
//
.file-drop-sent-stack {
width: 100%;
height: 30%;
display: flex;
align-items: center;
justify-content: center;
.no-items {
display: flex;
align-items: center;
justify-content: center;
div {
position: absolute;
}
.file-drop-stack-item {
transform: rotate(-4.4deg);
}
color: #fff;
text-align: center;
font-size: 21 * $chat-text-size;
font-family: "Poppins", sans-serif;
font-weight: 700;
letter-spacing: 0.34px;
}
.items-sent {
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
div, .v-icon {
position: absolute;
}
.v-icon, .v-icon__component {
width: 30%;
height: 30%;
}
}
.file-drop-stack-item {
background: #3a3a3c;
position: absolute;
overflow: hidden;
opacity: 0;
.v-image {
width: 100%;
height: 100%;
object-fit: cover;
}
&.direct {
opacity: 1 !important;
}
&.animated {
animation-name: fadeInStackItem;
animation-fill-mode: both;
animation-duration: 1.5s;
}
}
}
.file-drop-sending-container {
width: 100%;
padding: 13px 0px 15px 0px;
height: 50%;
overflow-x: hidden;
overflow-y: auto;
white-space: nowrap;
text-align: start;
/* Hide scrollbar for Chrome, Safari and Opera */
&::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
.file-drop-sending-item {
width: 100%;
height: 64px;
overflow: hidden;
background-color: #242424;
border-radius: 12px;
background: linear-gradient(0deg, #26242b 0%, #26242b 100%), #fff;
position: relative;
padding: 8px;
.v-image {
width: $min-touch-target;
height: $min-touch-target;
border-radius: 8px;
object-fit: cover;
flex: 0 0 $min-touch-target;
margin-right: 8px;
}
margin-bottom: 8px;
display: flex;
align-items: center;
.filename {
position: absolute;
top: 18px;
left: 8px;
font-size: 0.7em;
}
.v-progress-linear {
align-self: flex-end;
}
.file-drop-cancel {
position: absolute;
right: 8px;
width: 17px;
height: 17px;
color: green !important;
background: #2e2e3b;
border-radius: 8.5px;
display: flex;
align-items: center;
justify-content: center;
}
}
}
.file-drop-sending-input-container {
.v-btn {
.v-progress-circular {
margin-left: 8px;
}
background: linear-gradient(0deg, #000 0%, #000 100%), #4642f1;
}
}
.file-drop-files-sent {
width: 100%;
color: #fff;
text-align: center;
font-size: 21 * $chat-text-size;
font-family: "Poppins", sans-serif;
font-weight: 700;
letter-spacing: 0.34px;
text-align: center;
}
.file-drop-sent-input-container {
background-color: transparent;
.v-btn {
right: unset;
left: 8px;
background: linear-gradient(0deg, #000 0%, #000 100%), #4642f1;
&.close {
right: 8px;
left: unset;
background: $hiliteColor !important;
}
}
}
}

View file

@ -1,5 +1,6 @@
@import "~vuetify/src/styles/settings/_variables.scss"; @use "vuetify/settings" as *;
@import "@/assets/css/main.scss"; @use "@/assets/css/main.scss" as *;
@use "sass:map";
.v-btn.btn-light { .v-btn.btn-light {
font-family: sans-serif; font-family: sans-serif;
@ -8,7 +9,7 @@
color: black; color: black;
background-color: white !important; background-color: white !important;
border: 1px solid black; border: 1px solid black;
border-radius: $chat-button-height / 2; border-radius: $chat-button-height * 0.5;
min-height: 0; min-height: 0;
height: $chat-button-height !important; height: $chat-button-height !important;
margin-top: $chat-standard-padding-xs; margin-top: $chat-standard-padding-xs;
@ -22,7 +23,7 @@
color: white; color: white;
background-color: black !important; background-color: black !important;
border: 1px solid black; border: 1px solid black;
border-radius: $chat-button-height / 2; border-radius: $chat-button-height * 0.5;
min-height: 0; min-height: 0;
height: $chat-button-height !important; height: $chat-button-height !important;
margin-top: $chat-standard-padding-xs; margin-top: $chat-standard-padding-xs;
@ -37,7 +38,7 @@
background: white; background: white;
box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.08); box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.08);
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
padding: 20px; padding: 20px;
} }
} }
@ -58,7 +59,7 @@
.inactive { .inactive {
color: unset; color: unset;
@media #{map-get($display-breakpoints, 'sm-and-up')} { @media #{map.get($display-breakpoints, 'sm-and-up')} {
&:hover { &:hover {
color: $very-very-purple; color: $very-very-purple;
} }
@ -152,10 +153,10 @@
} }
} }
@media #{map-get($display-breakpoints, 'sm-and-down')} { @media #{map.get($display-breakpoints, 'sm-and-down')} {
margin: 10px; margin: 10px;
} }
@media #{map-get($display-breakpoints, 'md-and-up')} { @media #{map.get($display-breakpoints, 'md-and-up')} {
width: $main-desktop-width; width: $main-desktop-width;
margin: 0 auto; margin: 0 auto;
} }

View file

@ -1,4 +1,5 @@
@import "@/assets/css/main.scss"; @use "@/assets/css/main.scss" as *;
@use "@/assets/css/variables" as *;
.login-root { .login-root {
background-color: $background; background-color: $background;

View file

@ -1,6 +1,7 @@
@import './variables'; @forward 'variables';
@import './utilities'; @forward 'utilities';
@import './mixins'; @use 'variables' as *;
@use 'utilities' as *;
@font-face { @font-face {
font-family: "Inter"; font-family: "Inter";
@ -96,7 +97,7 @@ body { position:absolute; top:0; bottom:0; right:0; left:0; }
color: black; color: black;
background-color: white !important; background-color: white !important;
border: 1px solid black; border: 1px solid black;
border-radius: $chat-standard-padding / 2; border-radius: $chat-standard-padding * 0.5;
height: $chat-standard-padding; height: $chat-standard-padding;
margin-top: $chat-standard-padding-xs; margin-top: $chat-standard-padding-xs;
margin-bottom: $chat-standard-padding-xs; margin-bottom: $chat-standard-padding-xs;
@ -118,7 +119,7 @@ body { position:absolute; top:0; bottom:0; right:0; left:0; }
font-size: 11 * $chat-text-size; font-size: 11 * $chat-text-size;
color: white; color: white;
border: none; border: none;
border-radius: $chat-standard-padding / 2; border-radius: $chat-standard-padding * 0.5;
height: $chat-standard-padding !important; height: $chat-standard-padding !important;
min-height: $chat-standard-padding !important; min-height: $chat-standard-padding !important;
margin-top: $chat-standard-padding-xs; margin-top: $chat-standard-padding-xs;
@ -131,21 +132,29 @@ body { position:absolute; top:0; bottom:0; right:0; left:0; }
} }
} }
.v-dialog { .v-dialog-rounded > * {
border-radius: 20px !important; border-radius: 20px !important;
}
.v-dialog {
.dialog-content { .dialog-content {
border-radius: 20px !important;
padding: 20px; padding: 20px;
background-color: white; background-color: white;
} }
.dialog-title { .dialog-title {
word-break: break-word; word-break: break-word;
text-align: center; text-align: center;
padding: 16px 24px 10px 24px;
margin-bottom: 20px; margin-bottom: 20px;
} }
.dialog-text { .dialog-text {
text-align: left; text-align: left;
word-break: break-word; word-break: break-word;
white-space: normal;
a { a {
color: black; color: black;
text-decoration: underline; text-decoration: underline;
@ -163,3 +172,15 @@ body { position:absolute; top:0; bottom:0; right:0; left:0; }
letter-spacing: 0.4px; letter-spacing: 0.4px;
color: rgba(0, 0, 0, 0.6); color: rgba(0, 0, 0, 0.6);
} }
.v-card-title {
display: flex;
}
.fluid-radio {
flex-direction: row-reverse;
margin-bottom: 0;
.v-label {
width: 100%;
}
}

View file

@ -0,0 +1,638 @@
@use "@/assets/css/variables" as *;
$background: #000000;
$backgroundSection: #333333E5;
$backgroundHilite: #383739;
$backgroundDark: #242424;
$text: #ffffff;
$hiliteColor: #4642f1;
.send-attachments {
font-family: "Inter", sans-serif;
z-index: 10;
position: absolute;
top: 0px;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
background-color: $background;
color: $text;
overflow: hidden;
display: flex;
flex-direction: column;
text-align: center;
.title {
font-family: "Inter", sans-serif;
font-weight: 700;
font-size: 14px;
line-height: 125%;
letter-spacing: 0.4px;
text-align: center;
vertical-align: bottom;
color: white;
flex: 0 0 50px;
background-color: $backgroundSection;
display: flex;
align-items: center;
justify-content: center;
}
.v-btn {
font-family: "Inter", sans-serif;
font-weight: 700;
font-size: 11.54 * $chat-text-size;
line-height: 140%;
color: white;
background-color: $hiliteColor !important;
border-radius: $small-button-height * 0.5;
min-height: 0;
height: $small-button-height !important;
margin-top: $chat-standard-padding-xs;
margin-bottom: $chat-standard-padding-xs;
&.large {
padding: 16px 23px;
height: $large-button-height;
border-radius: $large-button-height * 0.5;
}
}
.back-button {
position: absolute;
top: 8px;
left: 16px;
margin: 0;
z-index: 1;
background-color: transparent !important;
}
textarea {
color: rgba($text, 80%) !important;
}
textarea::placeholder {
color: rgba($text, 80%) !important;
}
.send-attachments__selecting__current-item,
.gallery-current-item {
width: 100%;
flex: 1 1 100%;
background-color: $backgroundSection;
display: flex;
position: relative;
&.drop-target {
background-color: $backgroundHilite;
}
//border-radius: 19px;
overflow: hidden;
.v-img {
width: 100%;
height: 100%;
object-fit: cover;
}
.send-attachments__selecting__current-item__preparing {
position: absolute;
right: 8px;
bottom: 4px;
display: flex;
flex-direction: column;
align-items: end;
justify-content: end;
}
.send-attachments__selecting__current-item__cc {
position: absolute;
right: 12px;
bottom: 12px;
display: flex;
flex-direction: column;
align-items: end;
justify-content: end;
}
}
.file-drop-thumbnail-container,
.gallery-thumbnail-container {
width: 100%;
background-color: $backgroundSection;
padding: 16px 20px 24px 20px;
flex: 0 0 74px;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
text-align: start;
/* Hide scrollbar for Chrome, Safari and Opera */
&::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
-ms-overflow-style: none;
/* IE and Edge */
scrollbar-width: none;
/* Firefox */
.v-badge {
//margin-right: 8px;
}
.v-badge__badge {
top: 0;
width: 12px;
height: 12px;
padding: 0;
min-width: 12px;
user-select: none;
span {
width: 100%;
height: 100%;
}
}
.file-drop-thumbnail {
width: 46px;
height: 46px;
border-radius: 9px;
overflow: hidden;
background-color: $backgroundDark;
border: 2px solid white;
display: inline-block;
position: relative;
&.current {
border: 2px solid #4642f1;
}
&.noborder {
border: 2px solid $backgroundDark;
}
.v-img {
width: 100%;
height: 100%;
object-fit: cover;
}
margin-right: 8px;
.add,
.remove {
color: $text;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
.v-icon {
width: 14px;
height: 15.75px;
}
}
.remove {
// Slight background to make visible
background-color: rgba(black, 0.2);
}
}
}
.file-drop-section {
margin-top: 20px;
padding: 16px 18px;
background-color: $backgroundSection;
//border-radius: 19px;
}
.file-drop-input-container {
flex: 1 1 auto;
width: 100%;
position: relative;
padding: 0 16px 16px 16px;
display: flex;
flex-direction: row;
background-color: $backgroundSection;
.file-drop-input-container__input {
background-color: $backgroundDark;
border-radius: 22px;
flex: 1 1 auto;
position: relative;
margin-right: 15px;
height: 42px;
overflow: hidden;
}
.send-button {
margin: 0;
padding: 0;
position: absolute;
top: 3px;
right: 3px;
}
.info-button {
background-color: $backgroundDark !important;
margin: 0;
width: 44px !important;
height: 44px !important;
border-radius: 22px !important;
}
}
.file-drop-sending-input-container,
.file-drop-sent-input-container {
position: relative;
width: 100%;
min-height: 100px;
background-color: $backgroundSection;
display: flex;
flex-direction: column;
.input-container__buttons {
position: absolute;
right: 8px;
bottom: 10px;
display: flex;
&>*:not(:first-child) {
margin-left: 8px;
}
}
}
.input-area-text {
flex: 0 0 auto;
width: 100%;
margin-bottom: 50px;
//padding: 6px 8px;
font-family: "Inter", sans-serif;
font-weight: 300;
input {
color: white !important;
padding-right: 50px;
}
.v-field {
background-color: transparent !important;
}
}
@keyframes fadeInStackItem {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
// Sending
//
.file-drop-sent-stack {
width: 100%;
height: 30%;
display: flex;
align-items: center;
justify-content: center;
.no-items {
display: flex;
align-items: center;
justify-content: center;
div {
position: absolute;
}
.file-drop-stack-item {
transform: rotate(-4.4deg);
}
color: #fff;
text-align: center;
font-size: 21 * $chat-text-size;
font-family: "Poppins",
sans-serif;
font-weight: 700;
letter-spacing: 0.34px;
}
.items-sent {
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
div,
.v-icon {
position: absolute;
}
.v-icon,
.v-icon__component {
width: 30%;
height: 30%;
}
}
.file-drop-stack-item {
background: #3a3a3c;
position: absolute;
overflow: hidden;
opacity: 0;
.v-img {
width: 100%;
height: 100%;
object-fit: cover;
}
&.direct {
opacity: 1 !important;
}
&.animated {
animation-name: fadeInStackItem;
animation-fill-mode: both;
animation-duration: 1.5s;
}
}
}
.file-drop-sending-container {
width: 100%;
padding: 13px 10px 15px 10px;
height: 50%;
overflow-x: hidden;
overflow-y: auto;
white-space: nowrap;
text-align: start;
/* Hide scrollbar for Chrome, Safari and Opera */
&::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
-ms-overflow-style: none;
/* IE and Edge */
scrollbar-width: none;
/* Firefox */
.file-drop-sending-item {
width: 100%;
height: 64px;
overflow: hidden;
background-color: $backgroundSection;
border-radius: 12px;
position: relative;
padding: 8px;
.v-img {
width: $min-touch-target;
height: $min-touch-target;
border-radius: 8px;
object-fit: cover;
flex: 0 0 $min-touch-target;
margin-right: 8px;
}
margin-bottom: 8px;
display: flex;
align-items: center;
.filename {
position: absolute;
top: 18px;
left: 8px;
font-size: 0.7em;
}
.v-progress-linear {
align-self: flex-end;
}
.file-drop-cancel {
position: absolute;
right: 8px;
width: 17px;
height: 17px;
color: green !important;
background: #2e2e3b;
border-radius: 8.5px;
display: flex;
align-items: center;
justify-content: center;
}
}
}
.file-drop-sending-input-container {
padding: 10px;
.v-btn {
.v-progress-circular {
margin-left: 8px;
}
background: linear-gradient(0deg, #000 0%, #000 100%),
#4642f1;
}
}
.file-drop-files-sent {
width: 100%;
color: $text;
text-align: center;
font-size: 21 * $chat-text-size;
font-family: "Poppins", sans-serif;
font-weight: 700;
letter-spacing: 0.34px;
text-align: center;
}
.file-drop-sent-input-container {
padding: 10px;
background-color: transparent;
.v-btn {
left: 8px;
right: 8px;
&.close {
background: $hiliteColor !important;
}
}
}
}
.send-attachments-info-popup {
background-color: rgba(0, 0, 0, 0.9);
.done-button {
padding: 14px 24px;
}
.left-right-arrow {
background-color: transparent !important;
.v-btn__overlay {
display: none;
}
}
.title {
font-family: "Inter", sans-serif;
font-weight: 400;
font-size: 12px;
line-height: 125%;
letter-spacing: 0.4px;
text-align: center;
vertical-align: middle;
text-overflow: ellipsis;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
}
}
.attachment-info {
text-align: start;
position: relative;
.attachment-info__quality {
.attachment-info__quality__title {
font-family: "Inter", sans-serif;
font-weight: 600;
font-size: 16px;
line-height: 125%;
letter-spacing: 0.4px;
vertical-align: middle;
}
.attachment-info__quality__class {
font-family: "Inter", sans-serif;
font-weight: 600;
font-size: 16px;
line-height: 125%;
letter-spacing: 0.4px;
vertical-align: middle;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
width: 156px;
padding: 10px 2px;
background-color: #242424;
border-radius: 8px;
border: 2px solid #242424;
&.selected {
border: 2px solid #4642F1;
}
.attachment-info__quality__class-name {
margin: 4px 0 3px 0;
}
.attachment-info__quality__class-size {
font-family: "Inter", sans-serif;
font-weight: 400;
font-size: 12px;
line-height: 125%;
letter-spacing: 0.4px;
text-align: center;
vertical-align: middle;
}
&:not(:last-of-type) {
margin-right: 8px;
}
&:not(:first-of-type) {
margin-left: 8px;
}
}
.attachment-info__quality__info {
margin-top: 24px;
font-family: "Inter", sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 125%;
letter-spacing: 0.4px;
text-align: center;
}
}
.attachment-info__detail-box {
margin-top: 32px;
padding: 16px;
border-radius: 8px;
background-color: $backgroundDark;
.detail-title {
font-family: "Inter", sans-serif;
font-weight: 600;
font-size: 16px;
line-height: 125%;
letter-spacing: 0.4px;
display: flex;
align-items: center;
justify-content: space-between;
white-space: nowrap;
.v-icon {
flex: 0 0 24px;
width: 24px;
height: 24px;
}
}
.detail-subtitle {
font-family: "Inter", sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 125%;
letter-spacing: 0.4px;
margin-top: 8px;
padding-bottom: 4px;
a, a:visited {
font-weight: 700;
color: #8A87FF;
text-decoration: none !important;
}
}
.detail-row {
margin-top: 12px;
font-family: "Inter", sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 125%;
letter-spacing: 0.4px;
color: rgba(255, 255, 255, 0.9);
.v-icon {
margin-right: 8px;
}
}
}
}

View file

@ -1,4 +1,4 @@
@import "@/assets/css/main.scss"; @use "@/assets/css/main.scss" as *;
.h3-bold { .h3-bold {
font-family: "Poppins"; font-family: "Poppins";

View file

@ -1,9 +1,22 @@
#EmojiPicker { @use "vuetify/settings" as *;
@use "sass:map";
.v3-emoji-picker {
width: 100%; width: 100%;
background-color: #ffffff; background-color: #ffffff;
margin-top: 15px; margin-top: 15px;
box-shadow: none;
height: 100%;
flex: 1 1 100%;
.container-emoji { .v3-emojis button {
height: 60vh; @media #{map.get($display-breakpoints, 'sm')} {
flex-basis: 10% !important;
max-width: 10% !important;
}
@media #{map.get($display-breakpoints, 'md-and-up')} {
flex-basis: 6.25% !important;
max-width: 6.25% !important;
}
} }
} }

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.3 KiB

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,13 @@
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"> <template>
<path d="M13.7674 6.32558H8.55814V1.11628C8.55814 0.483721 8.07442 0 7.44186 0C6.8093 0 6.32558 0.483721 6.32558 1.11628V6.32558H1.11628C0.483721 6.32558 0 6.8093 0 7.44186C0 8.07442 0.483721 8.55814 1.11628 8.55814H6.32558V13.7674C6.32558 14.4 6.8093 14.8837 7.44186 14.8837C8.07442 14.8837 8.55814 14.4 8.55814 13.7674V8.55814H13.7674C14.4 8.55814 14.8837 8.07442 14.8837 7.44186C14.8837 6.8093 14.4 6.32558 13.7674 6.32558Z" fill="black" fill-opacity="0.5"/> <svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.7674 6.32558H8.55814V1.11628C8.55814 0.483721 8.07442 0 7.44186 0C6.8093 0 6.32558 0.483721 6.32558 1.11628V6.32558H1.11628C0.483721 6.32558 0 6.8093 0 7.44186C0 8.07442 0.483721 8.55814 1.11628 8.55814H6.32558V13.7674C6.32558 14.4 6.8093 14.8837 7.44186 14.8837C8.07442 14.8837 8.55814 14.4 8.55814 13.7674V8.55814H13.7674C14.4 8.55814 14.8837 8.07442 14.8837 7.44186C14.8837 6.8093 14.4 6.32558 13.7674 6.32558Z" fill="#242424"/> <path
</svg> d="M13.7674 6.32558H8.55814V1.11628C8.55814 0.483721 8.07442 0 7.44186 0C6.8093 0 6.32558 0.483721 6.32558 1.11628V6.32558H1.11628C0.483721 6.32558 0 6.8093 0 7.44186C0 8.07442 0.483721 8.55814 1.11628 8.55814H6.32558V13.7674C6.32558 14.4 6.8093 14.8837 7.44186 14.8837C8.07442 14.8837 8.55814 14.4 8.55814 13.7674V8.55814H13.7674C14.4 8.55814 14.8837 8.07442 14.8837 7.44186C14.8837 6.8093 14.4 6.32558 13.7674 6.32558Z"
fill="black"
fill-opacity="0.5"
/>
<path
d="M13.7674 6.32558H8.55814V1.11628C8.55814 0.483721 8.07442 0 7.44186 0C6.8093 0 6.32558 0.483721 6.32558 1.11628V6.32558H1.11628C0.483721 6.32558 0 6.8093 0 7.44186C0 8.07442 0.483721 8.55814 1.11628 8.55814H6.32558V13.7674C6.32558 14.4 6.8093 14.8837 7.44186 14.8837C8.07442 14.8837 8.55814 14.4 8.55814 13.7674V8.55814H13.7674C14.4 8.55814 14.8837 8.07442 14.8837 7.44186C14.8837 6.8093 14.4 6.32558 13.7674 6.32558Z"
fill="#242424"
/>
</svg>
</template>

Before

Width:  |  Height:  |  Size: 1,010 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -0,0 +1,5 @@
<template>
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6 10V2M6 2L3 5M6 2L9 5" stroke="white" stroke-linecap="round" stroke-linejoin="round" />
</svg>
</template>

View file

@ -0,0 +1,9 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M14.7669 7.69299C10.4143 6.49122 9.50915 5.5853 8.30704 1.23383C8.26886 1.09544 8.14319 1 8 1C7.85682 1 7.73114 1.09544 7.69296 1.23383C6.49105 5.58597 5.58502 6.49102 1.23306 7.69299C1.09465 7.73117 1 7.85683 1 8C1 8.14317 1.09545 8.26883 1.23306 8.30701C5.5857 9.50878 6.49085 10.4147 7.69296 14.7662C7.73114 14.9046 7.85682 15 8 15C8.14319 15 8.26886 14.9046 8.30704 14.7662C9.50895 10.414 10.415 9.50898 14.7669 8.30701C14.9053 8.26883 15 8.14317 15 8C15 7.85683 14.9045 7.73117 14.7669 7.69299Z"
fill="currentColor"
fill-opacity="0.9"
/>
</svg>
</template>

View file

@ -1,3 +1,8 @@
<svg width="15" height="12" viewBox="0 0 15 12" fill="none" xmlns="http://www.w3.org/2000/svg"> <template>
<path d="M13.9265 0.278549C13.6041 -0.0706278 13.0413 -0.0953257 12.6944 0.225985L4.74201 7.59645C4.66894 7.6675 4.55947 7.67068 4.48341 7.6057L2.44807 5.93997C2.20767 5.74531 1.92476 5.64018 1.62665 5.64018C1.22503 5.64018 0.844759 5.83181 0.586146 6.15932L0.321439 6.49622C-0.153089 7.10185 -0.095373 7.992 0.449243 8.52339L3.64365 11.6229C3.89315 11.8671 4.2187 12 4.55335 12C4.93661 12 5.30168 11.827 5.5603 11.521L13.9508 1.5886C14.2672 1.21487 14.2581 0.64014 13.9265 0.278521L13.9265 0.278549Z" fill="black"/> <svg width="15" height="12" viewBox="0 0 15 12" fill="none" xmlns="http://www.w3.org/2000/svg">
</svg> <path
d="M13.9265 0.278549C13.6041 -0.0706278 13.0413 -0.0953257 12.6944 0.225985L4.74201 7.59645C4.66894 7.6675 4.55947 7.67068 4.48341 7.6057L2.44807 5.93997C2.20767 5.74531 1.92476 5.64018 1.62665 5.64018C1.22503 5.64018 0.844759 5.83181 0.586146 6.15932L0.321439 6.49622C-0.153089 7.10185 -0.095373 7.992 0.449243 8.52339L3.64365 11.6229C3.89315 11.8671 4.2187 12 4.55335 12C4.93661 12 5.30168 11.827 5.5603 11.521L13.9508 1.5886C14.2672 1.21487 14.2581 0.64014 13.9265 0.278521L13.9265 0.278549Z"
fill="black"
/>
</svg>
</template>

Before

Width:  |  Height:  |  Size: 620 B

After

Width:  |  Height:  |  Size: 668 B

Before After
Before After

View file

@ -1,3 +1,8 @@
<svg width="9" height="8" viewBox="0 0 9 8" fill="none" xmlns="http://www.w3.org/2000/svg"> <template>
<path d="M8.83799 0.185699C8.63338 -0.0470852 8.2762 -0.0635505 8.05605 0.150657L3.00935 5.0643C2.96298 5.11167 2.89351 5.11379 2.84524 5.07047L1.55358 3.95998C1.40102 3.83021 1.22148 3.76012 1.03229 3.76012C0.777422 3.76012 0.536097 3.88787 0.371977 4.10621L0.20399 4.33081C-0.0971529 4.73456 -0.0605251 5.328 0.285096 5.68226L2.31232 7.74863C2.47065 7.91143 2.67725 8 2.88963 8C3.13285 8 3.36453 7.88467 3.52865 7.68068L8.85337 1.05907C9.0542 0.809911 9.04842 0.42676 8.83794 0.185681L8.83799 0.185699Z" fill="black"/> <svg width="9" height="8" viewBox="0 0 9 8" fill="none" xmlns="http://www.w3.org/2000/svg">
</svg> <path
d="M8.83799 0.185699C8.63338 -0.0470852 8.2762 -0.0635505 8.05605 0.150657L3.00935 5.0643C2.96298 5.11167 2.89351 5.11379 2.84524 5.07047L1.55358 3.95998C1.40102 3.83021 1.22148 3.76012 1.03229 3.76012C0.777422 3.76012 0.536097 3.88787 0.371977 4.10621L0.20399 4.33081C-0.0971529 4.73456 -0.0605251 5.328 0.285096 5.68226L2.31232 7.74863C2.47065 7.91143 2.67725 8 2.88963 8C3.13285 8 3.36453 7.88467 3.52865 7.68068L8.85337 1.05907C9.0542 0.809911 9.04842 0.42676 8.83794 0.185681L8.83799 0.185699Z"
fill="black"
/>
</svg>
</template>

Before

Width:  |  Height:  |  Size: 620 B

After

Width:  |  Height:  |  Size: 668 B

Before After
Before After

View file

@ -0,0 +1,16 @@
<template>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g>
<path
d="M2.55872 11.6957C2.55872 6.64866 6.63982 2.5603 11.6779 2.5603C16.716 2.5603 20.7971 6.64866 20.7971 11.6957V20.8311H11.6779C6.63982 20.8311 2.55872 16.7428 2.55872 11.6957Z"
fill="currentColor"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M20.0946 11.6956V20.1277H11.678C7.02685 20.1277 3.26089 16.355 3.26089 11.6956C3.26089 7.03625 7.02685 3.2636 11.678 3.2636C16.3291 3.2636 20.0946 7.03625 20.0946 11.6956ZM1.5 11.6956C1.5 6.06771 6.0596 1.5 11.6775 1.5C17.2955 1.5 21.8555 6.06771 21.8555 11.6956V21.8913H11.678C6.0596 21.8913 1.5 17.3236 1.5 11.6956ZM5.55074 12.1034C5.55074 14.2037 6.96527 15.978 9.2145 15.978C11.0669 15.978 12.3185 14.7546 12.6238 13.1538H10.792C10.558 13.888 9.96752 14.3365 9.2145 14.3365C8.07449 14.3365 7.33174 13.4391 7.33174 12.1039C7.33174 10.7686 8.07492 9.8712 9.2145 9.8712C9.94742 9.8712 10.5273 10.2893 10.7719 10.9824H12.614C12.2882 9.42227 11.0468 8.22969 9.2145 8.22969C6.95544 8.22926 5.55074 10.0031 5.55074 12.1034ZM15.077 8.43317H13.3469V15.7844H15.1484V11.9509C15.1484 11.227 15.352 10.7579 15.6979 10.4624C16.0032 10.1869 16.4 10.0443 17.0517 10.0443H17.5097V8.34107H17.062C16.1153 8.34107 15.4845 8.68762 15.0775 9.21794V8.42246V8.43317H15.077Z"
fill="#141414"
/>
</g>
</svg>
</template>

View file

@ -0,0 +1,20 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M1.33337 5.58483C1.33337 5.35128 1.33337 5.23451 1.34312 5.13615C1.43711 4.18752 2.18755 3.43708 3.13618 3.34309C3.23454 3.33334 3.35761 3.33334 3.60376 3.33334C3.69861 3.33334 3.74603 3.33334 3.7863 3.33091C4.30045 3.29977 4.75068 2.97526 4.9428 2.49734C4.95785 2.45992 4.97191 2.41772 5.00004 2.33334C5.02817 2.24896 5.04223 2.20677 5.05728 2.16934C5.24941 1.69143 5.69963 1.36692 6.21378 1.33578C6.25405 1.33334 6.29852 1.33334 6.38747 1.33334H9.61262C9.70156 1.33334 9.74603 1.33334 9.7863 1.33578C10.3004 1.36692 10.7507 1.69143 10.9428 2.16934C10.9579 2.20677 10.9719 2.24896 11 2.33334C11.0282 2.41772 11.0422 2.45992 11.0573 2.49734C11.2494 2.97526 11.6996 3.29977 12.2138 3.33091C12.254 3.33334 12.3015 3.33334 12.3963 3.33334C12.6425 3.33334 12.7655 3.33334 12.8639 3.34309C13.8125 3.43708 14.563 4.18752 14.657 5.13615C14.6667 5.23451 14.6667 5.35128 14.6667 5.58483V10.8C14.6667 11.9201 14.6667 12.4802 14.4487 12.908C14.257 13.2843 13.951 13.5903 13.5747 13.782C13.1469 14 12.5868 14 11.4667 14H4.53337C3.41327 14 2.85322 14 2.42539 13.782C2.04907 13.5903 1.74311 13.2843 1.55136 12.908C1.33337 12.4802 1.33337 11.9201 1.33337 10.8V5.58483Z"
stroke="currentColor"
stroke-opacity="0.9"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M8.00004 11C9.4728 11 10.6667 9.8061 10.6667 8.33334C10.6667 6.86058 9.4728 5.66668 8.00004 5.66668C6.52728 5.66668 5.33337 6.86058 5.33337 8.33334C5.33337 9.8061 6.52728 11 8.00004 11Z"
stroke="currentColor"
stroke-opacity="0.9"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>

View file

@ -0,0 +1,20 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M7.99996 8.66668C9.10453 8.66668 9.99996 7.77125 9.99996 6.66668C9.99996 5.56211 9.10453 4.66668 7.99996 4.66668C6.89539 4.66668 5.99996 5.56211 5.99996 6.66668C5.99996 7.77125 6.89539 8.66668 7.99996 8.66668Z"
stroke="currentColor"
stroke-opacity="0.9"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M7.99996 14.6667C10.6666 12 13.3333 9.6122 13.3333 6.66668C13.3333 3.72116 10.9455 1.33334 7.99996 1.33334C5.05444 1.33334 2.66663 3.72116 2.66663 6.66668C2.66663 9.6122 5.33329 12 7.99996 14.6667Z"
stroke="currentColor"
stroke-opacity="0.9"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>

View file

@ -0,0 +1,12 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M14 6.66668H2M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M5.2 14.6667H10.8C11.9201 14.6667 12.4802 14.6667 12.908 14.4487C13.2843 14.2569 13.5903 13.951 13.782 13.5747C14 13.1468 14 12.5868 14 11.4667V5.86668C14 4.74657 14 4.18652 13.782 3.7587C13.5903 3.38237 13.2843 3.07641 12.908 2.88466C12.4802 2.66668 11.9201 2.66668 10.8 2.66668H5.2C4.0799 2.66668 3.51984 2.66668 3.09202 2.88466C2.71569 3.07641 2.40973 3.38237 2.21799 3.7587C2 4.18652 2 4.74657 2 5.86668V11.4667C2 12.5868 2 13.1468 2.21799 13.5747C2.40973 13.951 2.71569 14.2569 3.09202 14.4487C3.51984 14.6667 4.0799 14.6667 5.2 14.6667Z"
stroke="currentColor"
stroke-opacity="0.9"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>

View file

@ -1,4 +1,8 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
xmlns="http://www.w3.org/2000/svg"> <path
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.55 3H7.25C7.71944 3 8.1 3.38056 8.1 3.85C8.1 4.28591 7.77187 4.64518 7.34913 4.69428L7.25 4.7H5.55C5.11409 4.7 4.75482 5.02813 4.70572 5.45087L4.7 5.55V17.45C4.7 17.8859 5.02813 18.2452 5.45087 18.2943L5.55 18.3H17.45C17.8859 18.3 18.2452 17.9719 18.2943 17.5491L18.3 17.45V15.75C18.3 15.2806 18.6806 14.9 19.15 14.9C19.5859 14.9 19.9452 15.2281 19.9943 15.6509L20 15.75V17.45C20 18.808 18.9384 19.9181 17.5998 19.9957L17.45 20H5.55C4.19197 20 3.08189 18.9384 3.00433 17.5998L3 17.45V5.55C3 4.19197 4.06158 3.08189 5.40017 3.00433L5.55 3ZM19.15 3L19.2188 3.00255L19.3206 3.0172L19.4153 3.04228L19.5097 3.07962L19.5926 3.1241L19.6742 3.18087L19.751 3.24896L19.8331 3.34399L19.894 3.43855L19.9204 3.49037L19.9491 3.5596L19.9695 3.62391L19.9941 3.74962L20 3.85V8.95C20 9.41944 19.6194 9.8 19.15 9.8C18.6806 9.8 18.3 9.41944 18.3 8.95V5.9019L12.951 11.251C12.6446 11.5575 12.1625 11.581 11.829 11.3218L11.749 11.251C11.4425 10.9446 11.419 10.4625 11.6782 10.129L11.749 10.049L17.0964 4.7H14.05C13.5806 4.7 13.2 4.31944 13.2 3.85C13.2 3.38056 13.5806 3 14.05 3H19.15Z" fill="black"/> fill-rule="evenodd"
</svg> clip-rule="evenodd"
d="M5.55 3H7.25C7.71944 3 8.1 3.38056 8.1 3.85C8.1 4.28591 7.77187 4.64518 7.34913 4.69428L7.25 4.7H5.55C5.11409 4.7 4.75482 5.02813 4.70572 5.45087L4.7 5.55V17.45C4.7 17.8859 5.02813 18.2452 5.45087 18.2943L5.55 18.3H17.45C17.8859 18.3 18.2452 17.9719 18.2943 17.5491L18.3 17.45V15.75C18.3 15.2806 18.6806 14.9 19.15 14.9C19.5859 14.9 19.9452 15.2281 19.9943 15.6509L20 15.75V17.45C20 18.808 18.9384 19.9181 17.5998 19.9957L17.45 20H5.55C4.19197 20 3.08189 18.9384 3.00433 17.5998L3 17.45V5.55C3 4.19197 4.06158 3.08189 5.40017 3.00433L5.55 3ZM19.15 3L19.2188 3.00255L19.3206 3.0172L19.4153 3.04228L19.5097 3.07962L19.5926 3.1241L19.6742 3.18087L19.751 3.24896L19.8331 3.34399L19.894 3.43855L19.9204 3.49037L19.9491 3.5596L19.9695 3.62391L19.9941 3.74962L20 3.85V8.95C20 9.41944 19.6194 9.8 19.15 9.8C18.6806 9.8 18.3 9.41944 18.3 8.95V5.9019L12.951 11.251C12.6446 11.5575 12.1625 11.581 11.829 11.3218L11.749 11.251C11.4425 10.9446 11.419 10.4625 11.6782 10.129L11.749 10.049L17.0964 4.7H14.05C13.5806 4.7 13.2 4.31944 13.2 3.85C13.2 3.38056 13.5806 3 14.05 3H19.15Z"
fill="black"
/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After

View file

@ -0,0 +1,14 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M2.92292 9.87757C3.0563 10.011 3.1298 10.1928 3.12652 10.3814L3.09485 12.1976C3.09157 12.3862 3.16506 12.5681 3.29845 12.7015C3.43184 12.8349 3.61372 12.9083 3.80236 12.9051L5.61849 12.8732C5.80709 12.87 5.98896 12.9434 6.12234 13.0768L7.50821 14.4628H7.50816C7.63863 14.5933 7.81556 14.6665 7.99998 14.6665C8.18441 14.6665 8.36134 14.5933 8.49181 14.4628L9.87768 13.0768H9.87763C10.011 12.9435 10.1929 12.87 10.3815 12.8732L12.1976 12.9049C12.3863 12.9082 12.5681 12.8348 12.7015 12.7013C12.8349 12.5679 12.9084 12.386 12.9051 12.1975L12.8733 10.3815C12.87 10.1929 12.9435 10.011 13.0769 9.8776L14.4629 8.4916C14.5933 8.36118 14.6666 8.18431 14.6666 7.99988C14.6666 7.81545 14.5933 7.63857 14.4629 7.50816L13.0769 6.12216C12.9435 5.98872 12.87 5.80689 12.8733 5.61825L12.905 3.80225C12.9082 3.61361 12.8348 3.43173 12.7014 3.29829C12.568 3.16491 12.3861 3.09141 12.1974 3.09469L10.3814 3.12641C10.1928 3.12969 10.0109 3.05626 9.8775 2.92281L8.49176 1.53695C8.36129 1.40648 8.18442 1.33325 7.99994 1.33325C7.81546 1.33325 7.63858 1.40648 7.50811 1.53695L6.12224 2.92281C5.9888 3.05625 5.80694 3.12969 5.61828 3.12641L3.80228 3.09469C3.61364 3.09141 3.43176 3.1649 3.29832 3.29829C3.16494 3.43173 3.09144 3.6136 3.09472 3.80225L3.12655 5.61825C3.12983 5.80689 3.05634 5.98872 2.92295 6.12216L1.53695 7.50816C1.40653 7.63858 1.33325 7.81545 1.33325 7.99988C1.33325 8.18431 1.40653 8.36119 1.53695 8.4916L2.92292 9.87757ZM5.52865 7.5285C5.6537 7.40356 5.82324 7.33334 6.00001 7.33334C6.17678 7.33334 6.34632 7.40355 6.47137 7.5285L7.33334 8.39053L9.52868 6.1952V6.19514C9.69794 6.03102 9.94128 5.96848 10.1687 6.03066C10.3961 6.0928 10.5738 6.2705 10.6359 6.4979C10.6981 6.72536 10.6355 6.96869 10.4714 7.1379L7.80472 9.80457C7.67966 9.92957 7.51013 9.99978 7.33336 9.99978C7.15658 9.99978 6.98705 9.92958 6.862 9.80457L5.52866 8.47124C5.40366 8.34619 5.33345 8.17665 5.33345 7.99988C5.33345 7.82305 5.40366 7.65352 5.52866 7.52848L5.52865 7.5285Z"
fill="currentColor"
fill-opacity="0.9"
/>
<path
d="M2.92292 9.87757C3.0563 10.011 3.1298 10.1928 3.12652 10.3814L3.09485 12.1976C3.09157 12.3862 3.16506 12.5681 3.29845 12.7015C3.43184 12.8349 3.61372 12.9083 3.80236 12.9051L5.61849 12.8732C5.80709 12.87 5.98896 12.9434 6.12234 13.0768L7.50821 14.4628H7.50816C7.63863 14.5933 7.81556 14.6665 7.99998 14.6665C8.18441 14.6665 8.36134 14.5933 8.49181 14.4628L9.87768 13.0768H9.87763C10.011 12.9435 10.1929 12.87 10.3815 12.8732L12.1976 12.9049C12.3863 12.9082 12.5681 12.8348 12.7015 12.7013C12.8349 12.5679 12.9084 12.386 12.9051 12.1975L12.8733 10.3815C12.87 10.1929 12.9435 10.011 13.0769 9.8776L14.4629 8.4916C14.5933 8.36118 14.6666 8.18431 14.6666 7.99988C14.6666 7.81545 14.5933 7.63857 14.4629 7.50816L13.0769 6.12216C12.9435 5.98872 12.87 5.80689 12.8733 5.61825L12.905 3.80225C12.9082 3.61361 12.8348 3.43173 12.7014 3.29829C12.568 3.16491 12.3861 3.09141 12.1974 3.09469L10.3814 3.12641C10.1928 3.12969 10.0109 3.05626 9.8775 2.92281L8.49176 1.53695C8.36129 1.40648 8.18442 1.33325 7.99994 1.33325C7.81546 1.33325 7.63858 1.40648 7.50811 1.53695L6.12224 2.92281C5.9888 3.05625 5.80694 3.12969 5.61828 3.12641L3.80228 3.09469C3.61364 3.09141 3.43176 3.1649 3.29832 3.29829C3.16494 3.43173 3.09144 3.6136 3.09472 3.80225L3.12655 5.61825C3.12983 5.80689 3.05634 5.98872 2.92295 6.12216L1.53695 7.50816C1.40653 7.63858 1.33325 7.81545 1.33325 7.99988C1.33325 8.18431 1.40653 8.36119 1.53695 8.4916L2.92292 9.87757ZM5.52865 7.5285C5.6537 7.40356 5.82324 7.33334 6.00001 7.33334C6.17678 7.33334 6.34632 7.40355 6.47137 7.5285L7.33334 8.39053L9.52868 6.1952V6.19514C9.69794 6.03102 9.94128 5.96848 10.1687 6.03066C10.3961 6.0928 10.5738 6.2705 10.6359 6.4979C10.6981 6.72536 10.6355 6.96869 10.4714 7.1379L7.80472 9.80457C7.67966 9.92957 7.51013 9.99978 7.33336 9.99978C7.15658 9.99978 6.98705 9.92958 6.862 9.80457L5.52866 8.47124C5.40366 8.34619 5.33345 8.17665 5.33345 7.99988C5.33345 7.82305 5.40366 7.65352 5.52866 7.52848L5.52865 7.5285Z"
fill="currentColor"
fill-opacity="0.9"
/>
</svg>
</template>

View file

@ -0,0 +1,12 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M9.99992 1.33325V2.26659C9.99992 2.63995 9.99992 2.82664 9.92726 2.96925C9.86334 3.09469 9.76135 3.19667 9.63591 3.26059C9.49331 3.33325 9.30662 3.33325 8.93325 3.33325H7.06659C6.69322 3.33325 6.50653 3.33325 6.36393 3.26059C6.23848 3.19667 6.1365 3.09469 6.07258 2.96925C5.99992 2.82664 5.99992 2.63995 5.99992 2.26659V1.33325M5.46659 14.6666H10.5333C11.28 14.6666 11.6534 14.6666 11.9386 14.5213C12.1895 14.3934 12.3934 14.1895 12.5213 13.9386C12.6666 13.6534 12.6666 13.28 12.6666 12.5333V3.46659C12.6666 2.71985 12.6666 2.34648 12.5213 2.06126C12.3934 1.81038 12.1895 1.60641 11.9386 1.47858C11.6534 1.33325 11.28 1.33325 10.5333 1.33325H5.46659C4.71985 1.33325 4.34648 1.33325 4.06126 1.47858C3.81038 1.60641 3.60641 1.81038 3.47858 2.06126C3.33325 2.34648 3.33325 2.71985 3.33325 3.46659V12.5333C3.33325 13.28 3.33325 13.6534 3.47858 13.9386C3.60641 14.1895 3.81038 14.3934 4.06126 14.5213C4.34648 14.6666 4.71985 14.6666 5.46659 14.6666Z"
stroke="currentColor"
stroke-opacity="0.9"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>

View file

@ -0,0 +1,9 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M12.8 2C12.9105 2 13 2.08954 13 2.2V9.3C13 9.41046 12.9105 9.5 12.8 9.5H4.45C4.33954 9.5 4.25 9.58954 4.25 9.7V14.3C4.25 14.4105 4.16046 14.5 4.05 14.5H3.2C3.08954 14.5 3 14.4105 3 14.3V2.2C3 2.08954 3.08954 2 3.2 2H12.8Z"
fill="currentColor"
fill-opacity="0.9"
/>
</svg>
</template>

View file

@ -0,0 +1,15 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M8 10.6667C9.47276 10.6667 10.6667 9.47276 10.6667 8C10.6667 6.52724 9.47276 5.33333 8 5.33333C6.52724 5.33333 5.33333 6.52724 5.33333 8C5.33333 9.47276 6.52724 10.6667 8 10.6667Z"
fill="currentColor"
/>
<path
d="M5.33333 2H4.13333C3.3866 2 3.01323 2 2.72801 2.14532C2.47713 2.27316 2.27316 2.47713 2.14532 2.72801C2 3.01323 2 3.3866 2 4.13333V5.33333M5.33333 14H4.13333C3.3866 14 3.01323 14 2.72801 13.8547C2.47713 13.7268 2.27316 13.5229 2.14532 13.272C2 12.9868 2 12.6134 2 11.8667V10.6667M14 5.33333V4.13333C14 3.3866 14 3.01323 13.8547 2.72801C13.7268 2.47713 13.5229 2.27316 13.272 2.14532C12.9868 2 12.6134 2 11.8667 2H10.6667M14 10.6667V11.8667C14 12.6134 14 12.9868 13.8547 13.272C13.7268 13.5229 13.5229 13.7268 13.272 13.8547C12.9868 14 12.6134 14 11.8667 14H10.6667M10.6667 8C10.6667 9.47276 9.47276 10.6667 8 10.6667C6.52724 10.6667 5.33333 9.47276 5.33333 8C5.33333 6.52724 6.52724 5.33333 8 5.33333C9.47276 5.33333 10.6667 6.52724 10.6667 8Z"
stroke="currentColor"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>

View file

@ -0,0 +1,13 @@
<template>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g opacity="0.65">
<path
d="M8 3H6.2C5.0799 3 4.51984 3 4.09202 3.21799C3.71569 3.40973 3.40973 3.71569 3.21799 4.09202C3 4.51984 3 5.0799 3 6.2V8M8 21H6.2C5.0799 21 4.51984 21 4.09202 20.782C3.71569 20.5903 3.40973 20.2843 3.21799 19.908C3 19.4802 3 18.9201 3 17.8V16M21 8V6.2C21 5.0799 21 4.51984 20.782 4.09202C20.5903 3.71569 20.2843 3.40973 19.908 3.21799C19.4802 3 18.9201 3 17.8 3H16M21 16V17.8C21 18.9201 21 19.4802 20.782 19.908C20.5903 20.2843 20.2843 20.5903 19.908 20.782C19.4802 21 18.9201 21 17.8 21H16M16 12C16 14.2091 14.2091 16 12 16C9.79086 16 8 14.2091 8 12C8 9.79086 9.79086 8 12 8C14.2091 8 16 9.79086 16 12Z"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</g>
</svg>
</template>

View file

@ -1,6 +1,20 @@
<svg width="17" height="19" viewBox="0 0 17 19" fill="none" xmlns="http://www.w3.org/2000/svg"> <template>
<path d="M3.31462 16.4718C3.31462 16.9496 3.70026 17.3368 4.17609 17.3368L16.1385 17.3368C16.6144 17.3368 17 16.9496 17 16.4718L16.9998 13.6229C16.9998 13.1452 16.6142 12.7579 16.1383 12.7579L4.1764 12.7579C3.70056 12.7579 3.31492 13.1452 3.31492 13.6229L3.31512 16.4718L3.31462 16.4718Z" fill="white"/> <svg width="17" height="19" viewBox="0 0 17 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.31462 10.4557C3.31462 10.9335 3.70026 11.3208 4.17609 11.3208L11.3428 11.3208C11.8186 11.3208 12.2043 10.9335 12.2043 10.4557L12.2043 7.60711C12.2043 7.12931 11.8186 6.74208 11.3428 6.74208L4.17609 6.74208C3.70026 6.74208 3.31462 7.12932 3.31462 7.60711L3.31462 10.4557Z" fill="white"/> <path
<path d="M3.31451 1.59127L3.31451 4.44011C3.31451 4.91791 3.70016 5.30514 4.17598 5.30514L6.99509 5.30514C7.47093 5.30514 7.85657 4.91791 7.85657 4.44011L7.85637 1.59127C7.85637 1.11347 7.47073 0.726242 6.9949 0.726242L4.17599 0.726242C3.70035 0.726242 3.31452 1.11348 3.31452 1.59127L3.31451 1.59127Z" fill="white"/> d="M3.31462 16.4718C3.31462 16.9496 3.70026 17.3368 4.17609 17.3368L16.1385 17.3368C16.6144 17.3368 17 16.9496 17 16.4718L16.9998 13.6229C16.9998 13.1452 16.6142 12.7579 16.1383 12.7579L4.1764 12.7579C3.70056 12.7579 3.31492 13.1452 3.31492 13.6229L3.31512 16.4718L3.31462 16.4718Z"
<path d="M-2.00529e-05 0.587841L-2.0791e-05 17.4747C-2.08052e-05 17.7995 0.262306 18.0625 0.585404 18.0625L1.38198 18.0625C1.70528 18.0625 1.96741 17.7995 1.96741 17.4747L1.96741 0.587841C1.96741 0.263208 1.70508 -1.14667e-08 1.38198 -2.55897e-08L0.585405 -6.04092e-08C0.261911 -7.45496e-08 -2.00387e-05 0.263213 -2.00529e-05 0.587841Z" fill="white"/> fill="white"
</svg> />
<path
d="M3.31462 10.4557C3.31462 10.9335 3.70026 11.3208 4.17609 11.3208L11.3428 11.3208C11.8186 11.3208 12.2043 10.9335 12.2043 10.4557L12.2043 7.60711C12.2043 7.12931 11.8186 6.74208 11.3428 6.74208L4.17609 6.74208C3.70026 6.74208 3.31462 7.12932 3.31462 7.60711L3.31462 10.4557Z"
fill="white"
/>
<path
d="M3.31451 1.59127L3.31451 4.44011C3.31451 4.91791 3.70016 5.30514 4.17598 5.30514L6.99509 5.30514C7.47093 5.30514 7.85657 4.91791 7.85657 4.44011L7.85637 1.59127C7.85637 1.11347 7.47073 0.726242 6.9949 0.726242L4.17599 0.726242C3.70035 0.726242 3.31452 1.11348 3.31452 1.59127L3.31451 1.59127Z"
fill="white"
/>
<path
d="M-2.00529e-05 0.587841L-2.0791e-05 17.4747C-2.08052e-05 17.7995 0.262306 18.0625 0.585404 18.0625L1.38198 18.0625C1.70528 18.0625 1.96741 17.7995 1.96741 17.4747L1.96741 0.587841C1.96741 0.263208 1.70508 -1.14667e-08 1.38198 -2.55897e-08L0.585405 -6.04092e-08C0.261911 -7.45496e-08 -2.00387e-05 0.263213 -2.00529e-05 0.587841Z"
fill="white"
/>
</svg>
</template>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

View file

@ -0,0 +1,13 @@
<template>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g opacity="0.65">
<path
d="M16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8M16.2 3C17.8802 3 18.7202 3 19.362 3.32698C19.9265 3.6146 20.3854 4.07354 20.673 4.63803C21 5.27976 21 6.11984 21 7.8M16.2 3H15.2C14.0799 3 13.5198 3 13.092 3.21799C12.7157 3.40973 12.4097 3.71569 12.218 4.09202C12 4.51984 12 5.07989 12 6.2V8.8C12 9.9201 12 10.4802 12.218 10.908C12.4097 11.2843 12.7157 11.5903 13.092 11.782C13.5198 12 14.0799 12 15.2 12H17.8C18.9201 12 19.4802 12 19.908 11.782C20.2843 11.5903 20.5903 11.2843 20.782 10.908C21 10.4802 21 9.92011 21 8.8V7.8M12.5 11.5L7 17M7 17H12M7 17L7 12"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</g>
</svg>
</template>

View file

@ -1,3 +0,0 @@
<svg width="24" height="17" viewBox="0 0 24 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.2477 0.000670823C16.1384 0.00531075 16.0311 0.0307591 15.9314 0.0754688C15.7815 0.142957 15.6546 0.25192 15.5656 0.389005C15.4766 0.526231 15.4291 0.685951 15.4291 0.849038V3.32107C14.7529 3.28142 14.0829 3.28494 13.4234 3.33598C6.62122 3.86253 0.885374 9.07191 0.00664931 16.0431H0.00679109C-0.0251098 16.2933 0.0564145 16.5444 0.229528 16.7288C0.402641 16.9133 0.649181 17.0122 0.902999 16.9988C1.15679 16.9853 1.39143 16.8609 1.54355 16.6591C4.61977 12.5918 9.44481 10.1994 14.572 10.1994H15.4292V12.7494C15.4295 12.9682 15.5147 13.1784 15.6674 13.3364C15.8199 13.4945 16.0281 13.5881 16.2484 13.5978C16.4687 13.6075 16.6845 13.5326 16.8505 13.3886L23.7079 7.43851C23.8935 7.2771 24 7.04413 24 6.79934C24 6.55455 23.8935 6.3216 23.7079 6.16016L16.8505 0.210072C16.6844 0.0659577 16.4685 -0.00898088 16.2478 0.000859754L16.2477 0.000670823Z" fill="currentColor"/>
</svg>

Before

Width:  |  Height:  |  Size: 1,022 B

View file

@ -0,0 +1,10 @@
<template>
<svg width="24" height="17" viewBox="0 0 24 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M16.2477 0.000670823C16.1384 0.00531075 16.0311 0.0307591 15.9314 0.0754688C15.7815 0.142957 15.6546 0.25192 15.5656 0.389005C15.4766 0.526231 15.4291 0.685951 15.4291 0.849038V3.32107C14.7529 3.28142 14.0829 3.28494 13.4234 3.33598C6.62122 3.86253 0.885374 9.07191 0.00664931 16.0431H0.00679109C-0.0251098 16.2933 0.0564145 16.5444 0.229528 16.7288C0.402641 16.9133 0.649181 17.0122 0.902999 16.9988C1.15679 16.9853 1.39143 16.8609 1.54355 16.6591C4.61977 12.5918 9.44481 10.1994 14.572 10.1994H15.4292V12.7494C15.4295 12.9682 15.5147 13.1784 15.6674 13.3364C15.8199 13.4945 16.0281 13.5881 16.2484 13.5978C16.4687 13.6075 16.6845 13.5326 16.8505 13.3886L23.7079 7.43851C23.8935 7.2771 24 7.04413 24 6.79934C24 6.55455 23.8935 6.3216 23.7079 6.16016L16.8505 0.210072C16.6844 0.0659577 16.4685 -0.00898088 16.2478 0.000859754L16.2477 0.000670823Z"
fill="currentColor"
/>
</svg>
</template>

View file

@ -0,0 +1,11 @@
<template>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M3 8L15 8M15 8C15 9.65686 16.3431 11 18 11C19.6569 11 21 9.65685 21 8C21 6.34315 19.6569 5 18 5C16.3431 5 15 6.34315 15 8ZM9 16L21 16M9 16C9 17.6569 7.65685 19 6 19C4.34315 19 3 17.6569 3 16C3 14.3431 4.34315 13 6 13C7.65685 13 9 14.3431 9 16Z"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>

View file

@ -1,10 +1,34 @@
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.08333 5.77777H0.361111C0.161778 5.77777 0 5.93955 0 6.13888C0 6.33822 0.161778 6.49999 0.361111 6.49999H1.08333C1.28267 6.49999 1.44444 6.33822 1.44444 6.13888C1.44444 5.93955 1.28267 5.77777 1.08333 5.77777Z" fill="black"/> <path
<path d="M1.08333 5.77777H0.361111C0.161778 5.77777 0 5.93955 0 6.13888C0 6.33822 0.161778 6.49999 0.361111 6.49999H1.08333C1.28267 6.49999 1.44444 6.33822 1.44444 6.13888C1.44444 5.93955 1.28267 5.77777 1.08333 5.77777Z" fill="black"/> d="M1.08333 5.77777H0.361111C0.161778 5.77777 0 5.93955 0 6.13888C0 6.33822 0.161778 6.49999 0.361111 6.49999H1.08333C1.28267 6.49999 1.44444 6.33822 1.44444 6.13888C1.44444 5.93955 1.28267 5.77777 1.08333 5.77777Z"
<path d="M1.08333 8.66669H0.361111C0.161778 8.66669 0 8.82846 0 9.0278C0 9.22713 0.161778 9.38891 0.361111 9.38891H1.08333C1.28267 9.38891 1.44444 9.22713 1.44444 9.0278C1.44444 8.82846 1.28267 8.66669 1.08333 8.66669Z" fill="black"/> fill="black"
<path d="M1.08333 8.66669H0.361111C0.161778 8.66669 0 8.82846 0 9.0278C0 9.22713 0.161778 9.38891 0.361111 9.38891H1.08333C1.28267 9.38891 1.44444 9.22713 1.44444 9.0278C1.44444 8.82846 1.28267 8.66669 1.08333 8.66669Z" fill="black"/> />
<path d="M11.6553 4.02206L12.1724 3.50494C12.3132 3.36411 12.3132 3.13517 12.1724 2.99433C12.0316 2.8535 11.8026 2.8535 11.6618 2.99433L11.1447 3.51144C10.2766 2.75239 9.1658 2.26633 7.94453 2.18472V0.722222H9.02786C9.22719 0.722222 9.38897 0.560444 9.38897 0.361111C9.38897 0.161778 9.22719 0 9.02786 0H6.13897C5.93964 0 5.77786 0.161778 5.77786 0.361111C5.77786 0.560444 5.93964 0.722222 6.13897 0.722222H7.2223V2.18472C4.40419 2.37178 2.16675 4.71828 2.16675 7.58333C2.16675 10.5704 4.5963 13 7.58341 13C10.5705 13 13.0001 10.5704 13.0001 7.58333C13.0001 6.21978 12.4895 4.97611 11.6553 4.02206ZM7.58341 12.2778C4.99497 12.2778 2.88897 10.1718 2.88897 7.58333C2.88897 4.99489 4.99497 2.88889 7.58341 2.88889C10.1719 2.88889 12.2779 4.99489 12.2779 7.58333C12.2779 10.1718 10.1719 12.2778 7.58341 12.2778Z" fill="black"/> <path
<path d="M11.6553 4.02206L12.1724 3.50494C12.3132 3.36411 12.3132 3.13517 12.1724 2.99433C12.0316 2.8535 11.8026 2.8535 11.6618 2.99433L11.1447 3.51144C10.2766 2.75239 9.1658 2.26633 7.94453 2.18472V0.722222H9.02786C9.22719 0.722222 9.38897 0.560444 9.38897 0.361111C9.38897 0.161778 9.22719 0 9.02786 0H6.13897C5.93964 0 5.77786 0.161778 5.77786 0.361111C5.77786 0.560444 5.93964 0.722222 6.13897 0.722222H7.2223V2.18472C4.40419 2.37178 2.16675 4.71828 2.16675 7.58333C2.16675 10.5704 4.5963 13 7.58341 13C10.5705 13 13.0001 10.5704 13.0001 7.58333C13.0001 6.21978 12.4895 4.97611 11.6553 4.02206ZM7.58341 12.2778C4.99497 12.2778 2.88897 10.1718 2.88897 7.58333C2.88897 4.99489 4.99497 2.88889 7.58341 2.88889C10.1719 2.88889 12.2779 4.99489 12.2779 7.58333C12.2779 10.1718 10.1719 12.2778 7.58341 12.2778Z" fill="black"/> d="M1.08333 5.77777H0.361111C0.161778 5.77777 0 5.93955 0 6.13888C0 6.33822 0.161778 6.49999 0.361111 6.49999H1.08333C1.28267 6.49999 1.44444 6.33822 1.44444 6.13888C1.44444 5.93955 1.28267 5.77777 1.08333 5.77777Z"
<path d="M7.58328 4.33331C7.38395 4.33331 7.22217 4.49509 7.22217 4.69442V7.58331C7.22217 7.78265 7.38395 7.94442 7.58328 7.94442C7.78261 7.94442 7.94439 7.78265 7.94439 7.58331V4.69442C7.94439 4.49509 7.78261 4.33331 7.58328 4.33331Z" fill="black"/> fill="black"
<path d="M7.58328 4.33331C7.38395 4.33331 7.22217 4.49509 7.22217 4.69442V7.58331C7.22217 7.78265 7.38395 7.94442 7.58328 7.94442C7.78261 7.94442 7.94439 7.78265 7.94439 7.58331V4.69442C7.94439 4.49509 7.78261 4.33331 7.58328 4.33331Z" fill="black"/> />
</svg> <path
d="M1.08333 8.66669H0.361111C0.161778 8.66669 0 8.82846 0 9.0278C0 9.22713 0.161778 9.38891 0.361111 9.38891H1.08333C1.28267 9.38891 1.44444 9.22713 1.44444 9.0278C1.44444 8.82846 1.28267 8.66669 1.08333 8.66669Z"
fill="black"
/>
<path
d="M1.08333 8.66669H0.361111C0.161778 8.66669 0 8.82846 0 9.0278C0 9.22713 0.161778 9.38891 0.361111 9.38891H1.08333C1.28267 9.38891 1.44444 9.22713 1.44444 9.0278C1.44444 8.82846 1.28267 8.66669 1.08333 8.66669Z"
fill="black"
/>
<path
d="M11.6553 4.02206L12.1724 3.50494C12.3132 3.36411 12.3132 3.13517 12.1724 2.99433C12.0316 2.8535 11.8026 2.8535 11.6618 2.99433L11.1447 3.51144C10.2766 2.75239 9.1658 2.26633 7.94453 2.18472V0.722222H9.02786C9.22719 0.722222 9.38897 0.560444 9.38897 0.361111C9.38897 0.161778 9.22719 0 9.02786 0H6.13897C5.93964 0 5.77786 0.161778 5.77786 0.361111C5.77786 0.560444 5.93964 0.722222 6.13897 0.722222H7.2223V2.18472C4.40419 2.37178 2.16675 4.71828 2.16675 7.58333C2.16675 10.5704 4.5963 13 7.58341 13C10.5705 13 13.0001 10.5704 13.0001 7.58333C13.0001 6.21978 12.4895 4.97611 11.6553 4.02206ZM7.58341 12.2778C4.99497 12.2778 2.88897 10.1718 2.88897 7.58333C2.88897 4.99489 4.99497 2.88889 7.58341 2.88889C10.1719 2.88889 12.2779 4.99489 12.2779 7.58333C12.2779 10.1718 10.1719 12.2778 7.58341 12.2778Z"
fill="black"
/>
<path
d="M11.6553 4.02206L12.1724 3.50494C12.3132 3.36411 12.3132 3.13517 12.1724 2.99433C12.0316 2.8535 11.8026 2.8535 11.6618 2.99433L11.1447 3.51144C10.2766 2.75239 9.1658 2.26633 7.94453 2.18472V0.722222H9.02786C9.22719 0.722222 9.38897 0.560444 9.38897 0.361111C9.38897 0.161778 9.22719 0 9.02786 0H6.13897C5.93964 0 5.77786 0.161778 5.77786 0.361111C5.77786 0.560444 5.93964 0.722222 6.13897 0.722222H7.2223V2.18472C4.40419 2.37178 2.16675 4.71828 2.16675 7.58333C2.16675 10.5704 4.5963 13 7.58341 13C10.5705 13 13.0001 10.5704 13.0001 7.58333C13.0001 6.21978 12.4895 4.97611 11.6553 4.02206ZM7.58341 12.2778C4.99497 12.2778 2.88897 10.1718 2.88897 7.58333C2.88897 4.99489 4.99497 2.88889 7.58341 2.88889C10.1719 2.88889 12.2779 4.99489 12.2779 7.58333C12.2779 10.1718 10.1719 12.2778 7.58341 12.2778Z"
fill="black"
/>
<path
d="M7.58328 4.33331C7.38395 4.33331 7.22217 4.49509 7.22217 4.69442V7.58331C7.22217 7.78265 7.38395 7.94442 7.58328 7.94442C7.78261 7.94442 7.94439 7.78265 7.94439 7.58331V4.69442C7.94439 4.49509 7.78261 4.33331 7.58328 4.33331Z"
fill="black"
/>
<path
d="M7.58328 4.33331C7.38395 4.33331 7.22217 4.49509 7.22217 4.69442V7.58331C7.22217 7.78265 7.38395 7.94442 7.58328 7.94442C7.78261 7.94442 7.94439 7.78265 7.94439 7.58331V4.69442C7.94439 4.49509 7.78261 4.33331 7.58328 4.33331Z"
fill="black"
/>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Before After
Before After

View file

@ -0,0 +1,36 @@
<template>
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M1.08333 5.77777H0.361111C0.161778 5.77777 0 5.93955 0 6.13888C0 6.33822 0.161778 6.49999 0.361111 6.49999H1.08333C1.28267 6.49999 1.44444 6.33822 1.44444 6.13888C1.44444 5.93955 1.28267 5.77777 1.08333 5.77777Z"
fill="black"
/>
<path
d="M1.08333 5.77777H0.361111C0.161778 5.77777 0 5.93955 0 6.13888C0 6.33822 0.161778 6.49999 0.361111 6.49999H1.08333C1.28267 6.49999 1.44444 6.33822 1.44444 6.13888C1.44444 5.93955 1.28267 5.77777 1.08333 5.77777Z"
fill="black"
/>
<path
d="M1.08333 8.66669H0.361111C0.161778 8.66669 0 8.82846 0 9.0278C0 9.22713 0.161778 9.38891 0.361111 9.38891H1.08333C1.28267 9.38891 1.44444 9.22713 1.44444 9.0278C1.44444 8.82846 1.28267 8.66669 1.08333 8.66669Z"
fill="black"
/>
<path
d="M1.08333 8.66669H0.361111C0.161778 8.66669 0 8.82846 0 9.0278C0 9.22713 0.161778 9.38891 0.361111 9.38891H1.08333C1.28267 9.38891 1.44444 9.22713 1.44444 9.0278C1.44444 8.82846 1.28267 8.66669 1.08333 8.66669Z"
fill="black"
/>
<path
d="M11.6553 4.02206L12.1724 3.50494C12.3132 3.36411 12.3132 3.13517 12.1724 2.99433C12.0316 2.8535 11.8026 2.8535 11.6618 2.99433L11.1447 3.51144C10.2766 2.75239 9.1658 2.26633 7.94453 2.18472V0.722222H9.02786C9.22719 0.722222 9.38897 0.560444 9.38897 0.361111C9.38897 0.161778 9.22719 0 9.02786 0H6.13897C5.93964 0 5.77786 0.161778 5.77786 0.361111C5.77786 0.560444 5.93964 0.722222 6.13897 0.722222H7.2223V2.18472C4.40419 2.37178 2.16675 4.71828 2.16675 7.58333C2.16675 10.5704 4.5963 13 7.58341 13C10.5705 13 13.0001 10.5704 13.0001 7.58333C13.0001 6.21978 12.4895 4.97611 11.6553 4.02206ZM7.58341 12.2778C4.99497 12.2778 2.88897 10.1718 2.88897 7.58333C2.88897 4.99489 4.99497 2.88889 7.58341 2.88889C10.1719 2.88889 12.2779 4.99489 12.2779 7.58333C12.2779 10.1718 10.1719 12.2778 7.58341 12.2778Z"
fill="black"
/>
<path
d="M11.6553 4.02206L12.1724 3.50494C12.3132 3.36411 12.3132 3.13517 12.1724 2.99433C12.0316 2.8535 11.8026 2.8535 11.6618 2.99433L11.1447 3.51144C10.2766 2.75239 9.1658 2.26633 7.94453 2.18472V0.722222H9.02786C9.22719 0.722222 9.38897 0.560444 9.38897 0.361111C9.38897 0.161778 9.22719 0 9.02786 0H6.13897C5.93964 0 5.77786 0.161778 5.77786 0.361111C5.77786 0.560444 5.93964 0.722222 6.13897 0.722222H7.2223V2.18472C4.40419 2.37178 2.16675 4.71828 2.16675 7.58333C2.16675 10.5704 4.5963 13 7.58341 13C10.5705 13 13.0001 10.5704 13.0001 7.58333C13.0001 6.21978 12.4895 4.97611 11.6553 4.02206ZM7.58341 12.2778C4.99497 12.2778 2.88897 10.1718 2.88897 7.58333C2.88897 4.99489 4.99497 2.88889 7.58341 2.88889C10.1719 2.88889 12.2779 4.99489 12.2779 7.58333C12.2779 10.1718 10.1719 12.2778 7.58341 12.2778Z"
fill="black"
/>
<path
d="M7.58328 4.33331C7.38395 4.33331 7.22217 4.49509 7.22217 4.69442V7.58331C7.22217 7.78265 7.38395 7.94442 7.58328 7.94442C7.78261 7.94442 7.94439 7.78265 7.94439 7.58331V4.69442C7.94439 4.49509 7.78261 4.33331 7.58328 4.33331Z"
fill="black"
/>
<path
d="M7.58328 4.33331C7.38395 4.33331 7.22217 4.49509 7.22217 4.69442V7.58331C7.22217 7.78265 7.38395 7.94442 7.58328 7.94442C7.78261 7.94442 7.94439 7.78265 7.94439 7.58331V4.69442C7.94439 4.49509 7.78261 4.33331 7.58328 4.33331Z"
fill="black"
/>
</svg>
</template>

View file

@ -1,5 +1,16 @@
<svg width="28" height="33" viewBox="0 0 28 33" fill="none" xmlns="http://www.w3.org/2000/svg"> <template>
<path d="M10.4989 0C9.22596 0 8.16477 1.0612 8.16477 2.33409V4.66819C5.83219 4.66819 3.49962 4.66819 1.16705 4.66819C0.52251 4.66819 0 5.1907 0 5.83524C0 6.47977 0.52251 7.00228 1.16705 7.00228H2.32953V29.1762C2.32953 31.0956 3.91123 32.6773 5.83067 32.6773H22.1693C24.0888 32.6773 25.6705 31.0956 25.6705 29.1762V7.00228H26.833C27.4775 7.00228 28 6.47977 28 5.83524C28 5.1907 27.4775 4.66819 26.833 4.66819C24.5004 4.66819 22.1678 4.66819 19.8352 4.66819V2.33409C19.8352 1.0612 18.774 0 17.5011 0H10.4989ZM10.4989 2.33409H17.5011V4.66819H10.4989V2.33409ZM4.66362 7.00228C10.8879 7.00228 17.1121 7.00228 23.3364 7.00228V29.1762C23.3364 29.8429 22.8361 30.3432 22.1693 30.3432H5.83067C5.16394 30.3432 4.66362 29.8429 4.66362 29.1762V7.00228Z" fill="white"/> <svg width="28" height="33" viewBox="0 0 28 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.4991 12.8374C10.1896 12.8374 9.89272 12.9604 9.67385 13.1792C9.45499 13.3981 9.33203 13.6949 9.33203 14.0044V23.3408C9.33203 23.6503 9.45499 23.9472 9.67385 24.1661C9.89272 24.3849 10.1896 24.5079 10.4991 24.5079C10.8086 24.5079 11.1054 24.3849 11.3243 24.1661C11.5432 23.9472 11.6661 23.6503 11.6661 23.3408V14.0044C11.6661 13.6949 11.5432 13.3981 11.3243 13.1792C11.1054 12.9604 10.8086 12.8374 10.4991 12.8374Z" fill="white"/> <path
<path d="M17.5015 12.8374C17.192 12.8374 16.8952 12.9604 16.6763 13.1792C16.4574 13.3981 16.3345 13.6949 16.3345 14.0044V23.3408C16.3345 23.6503 16.4574 23.9472 16.6763 24.1661C16.8952 24.3849 17.192 24.5079 17.5015 24.5079C17.811 24.5079 18.1079 24.3849 18.3267 24.1661C18.5456 23.9472 18.6686 23.6503 18.6686 23.3408V14.0044C18.6686 13.6949 18.5456 13.3981 18.3267 13.1792C18.1079 12.9604 17.811 12.8374 17.5015 12.8374Z" fill="white"/> d="M10.4989 0C9.22596 0 8.16477 1.0612 8.16477 2.33409V4.66819C5.83219 4.66819 3.49962 4.66819 1.16705 4.66819C0.52251 4.66819 0 5.1907 0 5.83524C0 6.47977 0.52251 7.00228 1.16705 7.00228H2.32953V29.1762C2.32953 31.0956 3.91123 32.6773 5.83067 32.6773H22.1693C24.0888 32.6773 25.6705 31.0956 25.6705 29.1762V7.00228H26.833C27.4775 7.00228 28 6.47977 28 5.83524C28 5.1907 27.4775 4.66819 26.833 4.66819C24.5004 4.66819 22.1678 4.66819 19.8352 4.66819V2.33409C19.8352 1.0612 18.774 0 17.5011 0H10.4989ZM10.4989 2.33409H17.5011V4.66819H10.4989V2.33409ZM4.66362 7.00228C10.8879 7.00228 17.1121 7.00228 23.3364 7.00228V29.1762C23.3364 29.8429 22.8361 30.3432 22.1693 30.3432H5.83067C5.16394 30.3432 4.66362 29.8429 4.66362 29.1762V7.00228Z"
</svg> fill="white"
/>
<path
d="M10.4991 12.8374C10.1896 12.8374 9.89272 12.9604 9.67385 13.1792C9.45499 13.3981 9.33203 13.6949 9.33203 14.0044V23.3408C9.33203 23.6503 9.45499 23.9472 9.67385 24.1661C9.89272 24.3849 10.1896 24.5079 10.4991 24.5079C10.8086 24.5079 11.1054 24.3849 11.3243 24.1661C11.5432 23.9472 11.6661 23.6503 11.6661 23.3408V14.0044C11.6661 13.6949 11.5432 13.3981 11.3243 13.1792C11.1054 12.9604 10.8086 12.8374 10.4991 12.8374Z"
fill="white"
/>
<path
d="M17.5015 12.8374C17.192 12.8374 16.8952 12.9604 16.6763 13.1792C16.4574 13.3981 16.3345 13.6949 16.3345 14.0044V23.3408C16.3345 23.6503 16.4574 23.9472 16.6763 24.1661C16.8952 24.3849 17.192 24.5079 17.5015 24.5079C17.811 24.5079 18.1079 24.3849 18.3267 24.1661C18.5456 23.9472 18.6686 23.6503 18.6686 23.3408V14.0044C18.6686 13.6949 18.5456 13.3981 18.3267 13.1792C18.1079 12.9604 17.811 12.8374 17.5015 12.8374Z"
fill="white"
/>
</svg>
</template>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

@ -1,5 +1,16 @@
<svg width="28" height="33" viewBox="0 0 28 33" fill="none" xmlns="http://www.w3.org/2000/svg"> <template>
<path d="M10.4989 0C9.22596 0 8.16477 1.0612 8.16477 2.33409V4.66819C5.83219 4.66819 3.49962 4.66819 1.16705 4.66819C0.52251 4.66819 0 5.1907 0 5.83524C0 6.47977 0.52251 7.00228 1.16705 7.00228H2.32953V29.1762C2.32953 31.0956 3.91123 32.6773 5.83067 32.6773H22.1693C24.0888 32.6773 25.6705 31.0956 25.6705 29.1762V7.00228H26.833C27.4775 7.00228 28 6.47977 28 5.83524C28 5.1907 27.4775 4.66819 26.833 4.66819C24.5004 4.66819 22.1678 4.66819 19.8352 4.66819V2.33409C19.8352 1.0612 18.774 0 17.5011 0H10.4989ZM10.4989 2.33409H17.5011V4.66819H10.4989V2.33409ZM4.66362 7.00228C10.8879 7.00228 17.1121 7.00228 23.3364 7.00228V29.1762C23.3364 29.8429 22.8361 30.3432 22.1693 30.3432H5.83067C5.16394 30.3432 4.66362 29.8429 4.66362 29.1762V7.00228Z" fill="currentColor"/> <svg width="28" height="33" viewBox="0 0 28 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.4991 12.8374C10.1896 12.8374 9.89272 12.9604 9.67385 13.1792C9.45499 13.3981 9.33203 13.6949 9.33203 14.0044V23.3408C9.33203 23.6503 9.45499 23.9472 9.67385 24.1661C9.89272 24.3849 10.1896 24.5079 10.4991 24.5079C10.8086 24.5079 11.1054 24.3849 11.3243 24.1661C11.5432 23.9472 11.6661 23.6503 11.6661 23.3408V14.0044C11.6661 13.6949 11.5432 13.3981 11.3243 13.1792C11.1054 12.9604 10.8086 12.8374 10.4991 12.8374Z" fill="currentColor"/> <path
<path d="M17.5015 12.8374C17.192 12.8374 16.8952 12.9604 16.6763 13.1792C16.4574 13.3981 16.3345 13.6949 16.3345 14.0044V23.3408C16.3345 23.6503 16.4574 23.9472 16.6763 24.1661C16.8952 24.3849 17.192 24.5079 17.5015 24.5079C17.811 24.5079 18.1079 24.3849 18.3267 24.1661C18.5456 23.9472 18.6686 23.6503 18.6686 23.3408V14.0044C18.6686 13.6949 18.5456 13.3981 18.3267 13.1792C18.1079 12.9604 17.811 12.8374 17.5015 12.8374Z" fill="currentColor"/> d="M10.4989 0C9.22596 0 8.16477 1.0612 8.16477 2.33409V4.66819C5.83219 4.66819 3.49962 4.66819 1.16705 4.66819C0.52251 4.66819 0 5.1907 0 5.83524C0 6.47977 0.52251 7.00228 1.16705 7.00228H2.32953V29.1762C2.32953 31.0956 3.91123 32.6773 5.83067 32.6773H22.1693C24.0888 32.6773 25.6705 31.0956 25.6705 29.1762V7.00228H26.833C27.4775 7.00228 28 6.47977 28 5.83524C28 5.1907 27.4775 4.66819 26.833 4.66819C24.5004 4.66819 22.1678 4.66819 19.8352 4.66819V2.33409C19.8352 1.0612 18.774 0 17.5011 0H10.4989ZM10.4989 2.33409H17.5011V4.66819H10.4989V2.33409ZM4.66362 7.00228C10.8879 7.00228 17.1121 7.00228 23.3364 7.00228V29.1762C23.3364 29.8429 22.8361 30.3432 22.1693 30.3432H5.83067C5.16394 30.3432 4.66362 29.8429 4.66362 29.1762V7.00228Z"
</svg> fill="currentColor"
/>
<path
d="M10.4991 12.8374C10.1896 12.8374 9.89272 12.9604 9.67385 13.1792C9.45499 13.3981 9.33203 13.6949 9.33203 14.0044V23.3408C9.33203 23.6503 9.45499 23.9472 9.67385 24.1661C9.89272 24.3849 10.1896 24.5079 10.4991 24.5079C10.8086 24.5079 11.1054 24.3849 11.3243 24.1661C11.5432 23.9472 11.6661 23.6503 11.6661 23.3408V14.0044C11.6661 13.6949 11.5432 13.3981 11.3243 13.1792C11.1054 12.9604 10.8086 12.8374 10.4991 12.8374Z"
fill="currentColor"
/>
<path
d="M17.5015 12.8374C17.192 12.8374 16.8952 12.9604 16.6763 13.1792C16.4574 13.3981 16.3345 13.6949 16.3345 14.0044V23.3408C16.3345 23.6503 16.4574 23.9472 16.6763 24.1661C16.8952 24.3849 17.192 24.5079 17.5015 24.5079C17.811 24.5079 18.1079 24.3849 18.3267 24.1661C18.5456 23.9472 18.6686 23.6503 18.6686 23.3408V14.0044C18.6686 13.6949 18.5456 13.3981 18.3267 13.1792C18.1079 12.9604 17.811 12.8374 17.5015 12.8374Z"
fill="currentColor"
/>
</svg>
</template>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

@ -1,5 +0,0 @@
<svg width="70" height="70" viewBox="0 0 70 70" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="70" height="70" rx="12" fill="#242424"/>
<circle cx="35" cy="35" r="14" fill="white" fill-opacity="0.8"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.6875 30.1891C32.2879 29.9393 31.7695 30.2266 31.7695 30.6979V39.302C31.7695 39.7733 32.2879 40.0606 32.6875 39.8108L39.5708 35.5088C39.9468 35.2738 39.9468 34.7262 39.5708 34.4912L32.6875 30.1891Z" fill="#242424"/>
</svg>

Before

Width:  |  Height:  |  Size: 490 B

View file

@ -0,0 +1,13 @@
<template>
<svg width="70" height="70" viewBox="0 0 70 70" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="70" height="70" rx="12" fill="#242424" />
<circle cx="35" cy="35" r="14" fill="white" fill-opacity="0.8" />
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M32.6875 30.1891C32.2879 29.9393 31.7695 30.2266 31.7695 30.6979V39.302C31.7695 39.7733 32.2879 40.0606 32.6875 39.8108L39.5708 35.5088C39.9468 35.2738 39.9468 34.7262 39.5708 34.4912L32.6875 30.1891Z"
fill="#242424"
/>
</svg>
<template></template>
</template>

View file

@ -0,0 +1,7 @@
{
"quotes": [
{
"quote":"Je suis un programmeur","author":"Mickey Mouse"}
]
}

View file

@ -86,7 +86,9 @@
"message_history": "تاريخ الرسائل", "message_history": "تاريخ الرسائل",
"message_history_warning": "تحذير: سيكون تاريخ الرسائل الكامل مرئيا للمشاركين الجدد", "message_history_warning": "تحذير: سيكون تاريخ الرسائل الكامل مرئيا للمشاركين الجدد",
"report": "تقرير", "report": "تقرير",
"report_reason": "سبب" "report_reason": "سبب",
"accept_knock": "الوصول",
"reject_knock": "ارفض"
}, },
"poll_create": { "poll_create": {
"poll_status_closed": "تم إغلاق استطلاع الرأي", "poll_status_closed": "تم إغلاق استطلاع الرأي",
@ -115,7 +117,7 @@
"tip_text": "سيتمكن الأعضاء من رؤية نتائج الاستطلاع بعد الإجابة. أغلق الاستطلاع عندما تنتهي لعرض النتائج على الجميع في الغرفة.", "tip_text": "سيتمكن الأعضاء من رؤية نتائج الاستطلاع بعد الإجابة. أغلق الاستطلاع عندما تنتهي لعرض النتائج على الجميع في الغرفة.",
"create_poll_menu_option": "إنشاء استطلاع للرأي" "create_poll_menu_option": "إنشاء استطلاع للرأي"
}, },
"export": { "room_export": {
"exported_date": "‫تم التصدير بتاريخ {date}", "exported_date": "‫تم التصدير بتاريخ {date}",
"fetched_n_events": "تم جلب {count} من الأحداث", "fetched_n_events": "تم جلب {count} من الأحداث",
"fetched_n_of_total_events": "تم جلب {count} من أصل {total} من الأحداث", "fetched_n_of_total_events": "تم جلب {count} من أصل {total} من الأحداث",
@ -283,7 +285,7 @@
"invite_info": "فقط الأشخاص الذين تم إضافتهم", "invite_info": "فقط الأشخاص الذين تم إضافتهم",
"invite_description": "الاختيار من قائمة أو البحث عن طريق مُعرِّف الحساب", "invite_description": "الاختيار من قائمة أو البحث عن طريق مُعرِّف الحساب",
"status_creating": "يجري إنشاء الغرفة", "status_creating": "يجري إنشاء الغرفة",
"status_avatar": "يجري تحميل الصورة الرمزية: {count}", "status_avatar": "يجري تحميل الصورة الرمزية",
"room_name_limit_error_msg": "الحد الأقصى المسموح به هو 50 حرفا", "room_name_limit_error_msg": "الحد الأقصى المسموح به هو 50 حرفا",
"colon_not_allowed": "النقطتان (:) غير مسموح بهما", "colon_not_allowed": "النقطتان (:) غير مسموح بهما",
"options": "ال‮خيارات" "options": "ال‮خيارات"
@ -342,7 +344,8 @@
"status_joining": "يجري الانضمام للغرفة...", "status_joining": "يجري الانضمام للغرفة...",
"join_failed": "فشل الانضمام للغرفة", "join_failed": "فشل الانضمام للغرفة",
"choose_name": "اختيار اسم لاستخدامه", "choose_name": "اختيار اسم لاستخدامه",
"you_have_been_banned": "لقد تم حظرك من هذه الغرفة." "you_have_been_banned": "لقد تم حظرك من هذه الغرفة.",
"knock": "دق"
}, },
"leave": { "leave": {
"text_public_lastroom": "إذا رغبت في الانضمام إلى هذه الغرفة مرة أخرى، يمكنك الانضمام بهوية جديدة. للاحتفاظ بـ {user}، {action}.", "text_public_lastroom": "إذا رغبت في الانضمام إلى هذه الغرفة مرة أخرى، يمكنك الانضمام بهوية جديدة. للاحتفاظ بـ {user}، {action}.",
@ -439,7 +442,10 @@
"files_sent_with_note": "تم إرسال ملف واحد مع ملاحظة! | تم إرسال {count} من الملفات مع ملاحظة!", "files_sent_with_note": "تم إرسال ملف واحد مع ملاحظة! | تم إرسال {count} من الملفات مع ملاحظة!",
"send_more_files": "إرسال المزيد من الملفات", "send_more_files": "إرسال المزيد من الملفات",
"close": "إغلاق", "close": "إغلاق",
"files": "الملفات" "files": "الملفات",
"quality": "النوعية",
"original": "إبداعي",
"learn_more": "تعرف على المزيد"
}, },
"create": { "create": {
"room_type_channel_name": "قناة", "room_type_channel_name": "قناة",

View file

@ -342,7 +342,9 @@
"shared_room_number_more": "আপনি {name} এর সাথে {count} এর বেশি রুম শেয়ার করছেন", "shared_room_number_more": "আপনি {name} এর সাথে {count} এর বেশি রুম শেয়ার করছেন",
"message_history": "বার্তার ইতিহাস", "message_history": "বার্তার ইতিহাস",
"message_history_warning": "সতর্কতা: নতুন অংশগ্রহণকারীগন পূর্বের সকল বার্তা ইতিহাস দেখতে পাবেন।", "message_history_warning": "সতর্কতা: নতুন অংশগ্রহণকারীগন পূর্বের সকল বার্তা ইতিহাস দেখতে পাবেন।",
"report": "প্রতিবেদন" "report": "প্রতিবেদন",
"accept_knock": "রাজি আছি",
"reject_knock": "অস্বীকার"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "এই রুম", "this_room": "এই রুম",
@ -395,7 +397,7 @@
"num_answered": "{count} টি উত্তর", "num_answered": "{count} টি উত্তর",
"results_shared": "ফলাফল রুমে প্রকাশ করা হয়েছে।" "results_shared": "ফলাফল রুমে প্রকাশ করা হয়েছে।"
}, },
"export": { "room_export": {
"exported_date": "{date} এ এক্সপোর্ট করা হয়েছে", "exported_date": "{date} এ এক্সপোর্ট করা হয়েছে",
"fetched_n_events": "{count} ইভেন্ট জড় করা হয়েছে", "fetched_n_events": "{count} ইভেন্ট জড় করা হয়েছে",
"fetched_n_of_total_events": "{total} টির মধ্যে {count} টি ইভেন্ট জড় করা হয়েছে", "fetched_n_of_total_events": "{total} টির মধ্যে {count} টি ইভেন্ট জড় করা হয়েছে",
@ -438,7 +440,10 @@
"files_sent_with_note": "নোট সহ ১টি ফাইল পাঠানো হয়েছে | নোট সহ {count} টি ফাইল পাঠানো হয়েছে!", "files_sent_with_note": "নোট সহ ১টি ফাইল পাঠানো হয়েছে | নোট সহ {count} টি ফাইল পাঠানো হয়েছে!",
"send_more_files": "আরও ফাইল পাঠান", "send_more_files": "আরও ফাইল পাঠান",
"close": "বন্ধ করুন", "close": "বন্ধ করুন",
"files": "ফাইলগুলি" "files": "ফাইলগুলি",
"quality": "গুনগতমান",
"original": "Original",
"learn_more": "আরো জানুন"
}, },
"create": { "create": {
"room_type_channel_name": "Channel", "room_type_channel_name": "Channel",

View file

@ -29,11 +29,11 @@
"user_admin": "དོ་དམ་པ།", "user_admin": "དོ་དམ་པ།",
"experimental_features": "ཚོད་ལྟའི་ཁྱད་ཆོས་ཁག", "experimental_features": "ཚོད་ལྟའི་ཁྱད་ཆོས་ཁག",
"read_only_room_info": "དོ་དམ་པ་དང་གཙོ་སྐྱོང་བ་ཁོ་ནས་ཁ་བརྡ་ཁང་དུ་གཏོང་ཆོག", "read_only_room_info": "དོ་དམ་པ་དང་གཙོ་སྐྱོང་བ་ཁོ་ནས་ཁ་བརྡ་ཁང་དུ་གཏོང་ཆོག",
"export_room": "ཁ་བརྡའི་ཟིན་ཐོ་ཕྱིར་འདྲེན།", "export_room": "ཁ་བརྡའི་ཟིན་ཐོ་ཉར་ཚགས།",
"user_moderator": "གཙོ་སྐྱོང་བ།", "user_moderator": "གཙོ་སྐྱོང་བ།",
"voice_mode": "སྐད་སྒྲའི་རྣམ་པ།", "voice_mode": "སྐད་སྒྲའི་རྣམ་པ།",
"voice_mode_info": "ཁ་བརྡའི་འབྲེལ་མཐུད་དེ་ཉན་པ་དང་སྒྲ་ཕབ་ཀྱི་རྣམ་པའི་ནང་དུ་བསྒྱུར།", "voice_mode_info": "ཁ་བརྡའི་འབྲེལ་མཐུད་དེ་ཉན་པ་དང་སྒྲ་ཕབ་ཀྱི་རྣམ་པའི་ནང་དུ་བསྒྱུར།",
"download_chat": "ཁ་བརྡ་ཕབ་ལེན།", "download_chat": "ཁ་བརྡའི་ཟིན་ཐོ་ཉར་ཚགས།",
"read_only_room": "ལྟ་ཀློག་ཁོ་ན།", "read_only_room": "ལྟ་ཀློག་ཁོ་ན།",
"direct_link": "ང་དང་ཐད་ཀར་ཁ་བརྡ་བྱེད་སའི་འབྲེལ་ཐག", "direct_link": "ང་དང་ཐད་ཀར་ཁ་བརྡ་བྱེད་སའི་འབྲེལ་ཐག",
"room_type": "ཁ་བརྡ་ཁང་གི་དབྱེ་བ།", "room_type": "ཁ་བརྡ་ཁང་གི་དབྱེ་བ།",
@ -60,7 +60,17 @@
"message_history_info": "ཚོགས་མི་གསར་པ་ཚོར་ཚོགས་པའི་ནང་མ་ཞུགས་པའི་སྔོན་དུ་བཏང་ཡོད་པའི་ཆ་འཕྲིན་ཁག་མཐོང་དུ་བཅུག", "message_history_info": "ཚོགས་མི་གསར་པ་ཚོར་ཚོགས་པའི་ནང་མ་ཞུགས་པའི་སྔོན་དུ་བཏང་ཡོད་པའི་ཆ་འཕྲིན་ཁག་མཐོང་དུ་བཅུག",
"limit_history_info": "{period}་རིང་ལ་ཆ་འཕྲིན་ཁག་ཉར།", "limit_history_info": "{period}་རིང་ལ་ཆ་འཕྲིན་ཁག་ཉར།",
"report_info": "ཁྲིམས་འགལ་དང་ལོག་སྤྱོད། ཡང་ན་གནོད་འཚེ་ཅན་གྱི་ནང་དོན་ལྡན་པའི་ཚོགས་པ་འདི་ཞབས་ཞུའི་དོ་དམ་པར་སྙན་སེང་ཞུས།", "report_info": "ཁྲིམས་འགལ་དང་ལོག་སྤྱོད། ཡང་ན་གནོད་འཚེ་ཅན་གྱི་ནང་དོན་ལྡན་པའི་ཚོགས་པ་འདི་ཞབས་ཞུའི་དོ་དམ་པར་སྙན་སེང་ཞུས།",
"report": "སྙན་སེང་ཞུས།" "report": "སྙན་སེང་ཞུས།",
"accept_knock": "ངོས་ལེན།",
"join_knock": "མི་ཚོས་སྒོ་རྡུང་ཐུབ།",
"knocks": "སྒོ་རྡུང་བ།",
"reject_knock": "ངོས་ལེན་མི་བྱེད་པ།",
"user_creator": "བཟོ་མཁན།",
"confirm_make_admin": "ཁྱེད་ཀྱིས་སྤྱོད་མཁན་འདི་དོ་དམ་པ་བཟོ་རྒྱུ་ཡིན་ནམ།",
"confirm_revoke_admin": "ཁྱེད་ཀྱིས་སྤྱོད་མཁན་འདིའི་དོ་དམ་པའི་ཐོབ་ཐང་མེད་པར་བཟོ་རྒྱུ་ཡིན་ནམ།",
"confirm_make_moderator": "ཁྱེད་ཀྱིས་སྤྱོད་མཁན་འདི་གཙོ་སྐྱོང་བ་བཟོ་རྒྱུ་ཡིན་ནམ།",
"confirm_revoke_moderator": "ཁྱེད་ཀྱིས་སྤྱོད་མཁན་འདིའི་གཙོ་སྐྱོང་བའི་ཐོབ་ཐང་མེད་པར་བཟོ་རྒྱུ་ཡིན་ནམ།",
"confirm_ban": "ཁྱེད་ཀྱིས་སྤྱོད་མཁན་འདི་ཁ་བརྡ་ཁང་ནས་སྒོར་ཕུད་འདོད་དམ།"
}, },
"invite": { "invite": {
"done": "ལེགས་འགྲུབ།", "done": "ལེགས་འགྲུབ།",
@ -134,12 +144,15 @@
"undo": "ཕྱིར་བསྡུ།", "undo": "ཕྱིར་བསྡུ།",
"user_make_admin": "དོ་དམ་པ་བཟོས།", "user_make_admin": "དོ་དམ་པ་བཟོས།",
"user_make_moderator": "གཙོ་སྐྱོང་བ་བཟོས།", "user_make_moderator": "གཙོ་སྐྱོང་བ་བཟོས།",
"user_revoke_moderator": "གཙོ་སྐྱོང་བའི་དབང་ཚད་མེད་པར་བཟོས།", "user_revoke_moderator": "གཙོ་སྐྱོང་བའི་དབང་ཚད་ཕྱིར་བསྡུ།",
"delete_now": "བསུབ་རོགས།", "delete_now": "བསུབ་རོགས།",
"direct_chat": "ཐད་ཀར་གླེང་མོལ།", "direct_chat": "ཐད་ཀར་གླེང་མོལ།",
"user_kick_and_ban": "སྒོར་ཕུད།", "user_kick_and_ban": "སྒོར་ཕུད།",
"pin": "སྤེལ་གཏམ་རྩེ་རུ་ཞོག", "pin": "སྤེལ་གཏམ་རྩེ་རུ་ཞོག",
"unpin": "རྩེ་རུ་བཞག་པའི་སྤེལ་གཏམ་ཕྱིར་འཐེན།" "unpin": "རྩེ་རུ་བཞག་པའི་སྤེལ་གཏམ་ཕྱིར་འཐེན།",
"user_revoke_admin": "དོ་དམ་པའི་དབང་ཚད་ཕྱིར་བསྡུ།",
"cancel_knock": "སྒོ་རྡུང་བ་ཕྱིར་འཐེན།",
"upgrade": "རིམ་སྤར།"
}, },
"profile": { "profile": {
"change_password": "གསང་ཚིག་རྗེས།", "change_password": "གསང་ཚིག་རྗེས།",
@ -157,7 +170,8 @@
"dont_see_yours": "ཁྱེད་ཀྱི་མིང་མཐོང་གི་མི་འདུག་གམ།", "dont_see_yours": "ཁྱེད་ཀྱི་མིང་མཐོང་གི་མི་འདུག་གམ།",
"tell_us": "ང་ཚོར་ཤོོད།", "tell_us": "ང་ཚོར་ཤོོད།",
"display_name_required": "འཆར་མིང་དགོས།", "display_name_required": "འཆར་མིང་དགོས།",
"notification_label": "བརྡ་ཁྱབ།" "notification_label": "བརྡ་ཁྱབ།",
"my_rooms": "ངའི་ཁ་བརྡ་ཁང་ཁག"
}, },
"device_list": { "device_list": {
"not_verified": "ར་སྤྲོད་བྱས་མི་འདུག", "not_verified": "ར་སྤྲོད་བྱས་མི་འདུག",
@ -180,7 +194,8 @@
"info_auto_join": "{room}་ནང་དུ་ཕེབས་པར་དགའ་བསུ་ཞུ།\nཁྱེད་རང་ {you}་མིང་ཐོག་ནས་ཞུགས་ཀྱི་ཡོད།", "info_auto_join": "{room}་ནང་དུ་ཕེབས་པར་དགའ་བསུ་ཞུ།\nཁྱེད་རང་ {you}་མིང་ཐོག་ནས་ཞུགས་ཀྱི་ཡོད།",
"change": "བསྒྱུར་བཅོས།", "change": "བསྒྱུར་བཅོས།",
"join_channel": "ཡོད་ཚད་གྲ་སྒྲིག་ཟིན་པས། གྲོགས་གདན་ཞུ་བྱས་ཏེ་ཁྱེད་རང་དང་སྦྲེལ། {link}", "join_channel": "ཡོད་ཚད་གྲ་སྒྲིག་ཟིན་པས། གྲོགས་གདན་ཞུ་བྱས་ཏེ་ཁྱེད་རང་དང་སྦྲེལ། {link}",
"info_retention_user": "🕓 {time}་ལས་རྙིང་བའི་ཆ་འཕྲིན་ཁག་ལོ་རྒྱུས་ཀྱི་ཁོངས་ནས་བསུབ་ངེས།" "info_retention_user": "🕓 {time}་ལས་རྙིང་བའི་ཆ་འཕྲིན་ཁག་ལོ་རྒྱུས་ཀྱི་ཁོངས་ནས་བསུབ་ངེས།",
"join_knock": "ནང་དུ་ཞུགས་པར་མི་ཚོས་སྒོ་རྡུང་ནས་རེ་སྐུལ་ཞུ་ཆོག"
}, },
"room": { "room": {
"leave": "ཕྱིར་ཐོན།", "leave": "ཕྱིར་ཐོན།",
@ -195,7 +210,9 @@
"room_topic_required": "ཁ་བརྡ་ཁང་ལ་འགྲེལ་བཤད་དགོས།", "room_topic_required": "ཁ་བརྡ་ཁང་ལ་འགྲེལ་བཤད་དགོས།",
"room_name_required": "ཁ་བརྡ་ཁང་ལ་མིང་ཞིག་དགོས།", "room_name_required": "ཁ་བརྡ་ཁང་ལ་མིང་ཞིག་དགོས།",
"invitations": "ཁྱེད་ལ་གྲོགས་པོའི་གདན་ཞུ་གང་ཡང་མི་འདུག | ཁྱེད་ལ་གྲོགས་པོའི་གདན་ཞུ་གྲངས་གཅིག་འདུག | ཁྱེད་ལ་གྲོགས་པོའི་གདན་ཞུ་{count}་འདུག", "invitations": "ཁྱེད་ལ་གྲོགས་པོའི་གདན་ཞུ་གང་ཡང་མི་འདུག | ཁྱེད་ལ་གྲོགས་པོའི་གདན་ཞུ་གྲངས་གཅིག་འདུག | ཁྱེད་ལ་གྲོགས་པོའི་གདན་ཞུ་{count}་འདུག",
"unseen_messages": "ཁྱེད་ཀྱིས་མཐོང་མེད་པའི་ཆ་འཕྲིན་གང་ཡང་མི་འདུག | ཁྱེད་ཀྱིས་མཐོང་མེད་པའི་ཆ་འཕྲིན་གཅིག་འདུག | ཁྱེད་ཀྱིས་མཐོང་མེད་པའི་ཆ་འཕྲིན་{count}འདུག" "unseen_messages": "ཁྱེད་ཀྱིས་མཐོང་མེད་པའི་ཆ་འཕྲིན་གང་ཡང་མི་འདུག | ཁྱེད་ཀྱིས་མཐོང་མེད་པའི་ཆ་འཕྲིན་གཅིག་འདུག | ཁྱེད་ཀྱིས་མཐོང་མེད་པའི་ཆ་འཕྲིན་{count}འདུག",
"needs_upgrade": "ཁ་བརྡ་ཁང་འདི་ཐོན་རིམ་གསར་པ་ཞིག་ལ་རིམ་སྤར་བྱེད་དགོས་ཀྱི་འདུག",
"upgrading": "ཁ་བརྡ་ཁང་གི་ཐོན་རིམ་སྤར་བྱེད་བཞིན་པ།"
}, },
"message": { "message": {
"users_are_typing": "{count} ཚོགས་མི་ཡིས་གཏགས་བཞིན་འདུག", "users_are_typing": "{count} ཚོགས་མི་ཡིས་གཏགས་བཞིན་འདུག",
@ -253,7 +270,7 @@
"send_attachements_dialog_title": "ཁྱེད་ཀྱིས་གཤམ་གྱི་ཟུར་སྣོན་འདི་དག་གཏོང་འདོད་དམ།", "send_attachements_dialog_title": "ཁྱེད་ཀྱིས་གཤམ་གྱི་ཟུར་སྣོན་འདི་དག་གཏོང་འདོད་དམ།",
"preparing_to_upload": "ཡར་འཇུག་བྱེད་པར་གྲ་སྒྲིག་བྱེད་བཞིན་པ...", "preparing_to_upload": "ཡར་འཇུག་བྱེད་པར་གྲ་སྒྲིག་བྱེད་བཞིན་པ...",
"seen_by": "མཐོང་མཁན།", "seen_by": "མཐོང་མཁན།",
"seen_by_count": "ཚོགས་མི་སུས་ཀྱང་མཐོང་མི་འདུག| ཚོགས་མི་གཅིག་གིས་མཐོང་འདུག ཚོགས་མི{count}་མཐོང་འདུག", "seen_by_count": "ཚོགས་མི་སུས་ཀྱང་མཐོང་མི་འདུག| ཚོགས་མི་གཅིག་གིས་མཐོང་འདུག ཚོགས་མི{count}་མཐོང་འདུག",
"files": "ཡིག་ཆ་ཁག", "files": "ཡིག་ཆ་ཁག",
"download_all": "ཆ་ཚང་ཕབ་ལེན།", "download_all": "ཆ་ཚང་ཕབ་ལེན།",
"file": "ཡིག་ཆ།", "file": "ཡིག་ཆ།",
@ -261,7 +278,10 @@
"upload_exceeded_file_limit": "({configFormattedUploadSize}) ་ཡི་ཡིག་ཆ་ཆེ་ཤོས་ཀྱི་ཆེ་ཆུང་གི་ཚད་གཞི་ལས་བརྒལ་འདུག ", "upload_exceeded_file_limit": "({configFormattedUploadSize}) ་ཡི་ཡིག་ཆ་ཆེ་ཤོས་ཀྱི་ཆེ་ཆུང་གི་ཚད་གཞི་ལས་བརྒལ་འདུག ",
"failed_to_render": "བྱེད་སྒོ་ལེགས་འགྲུབ་བྱུང་མ་སོང་།", "failed_to_render": "བྱེད་སྒོ་ལེགས་འགྲུབ་བྱུང་མ་སོང་།",
"someone": "མི་ཞིག", "someone": "མི་ཞིག",
"sent_media": "སྨྱན་སྦྱོར་གྲངས་{count}་བཏང་ཟིན།" "sent_media": "སྨྱན་སྦྱོར་གྲངས་{count}་བཏང་ཟིན།",
"room_upgraded": "ཁ་བརྡ་ཁང་འདི་རིམ་སྤར་བྱས་སོང་། {link}འབྲེལ་ཐག་འདི་བརྒྱུད་ནས་བསྐྱར་དུ་ཞུགས།",
"room_upgraded_link": "འདི་ནས",
"room_upgraded_view_old": "ཁ་བརྡ་ཁང་འདི་རིམ་སྤར་བྱས་སོང་། {link}འདིའི་ཐོག་ཏུ་མནན་ཏེ་ཆ་འཕྲིན་རྙིང་པར་གཟིགས།"
}, },
"power_level": { "power_level": {
"moderator": "མདོ་འཛིན་པ།", "moderator": "མདོ་འཛིན་པ།",
@ -317,7 +337,11 @@
"title_user": "དགའ་བསུ་ཞུ། ཁྱེད་རང་ཁ་བརྡ་བྱེད་པར་གདན་ཞུ་གནང་སོང་།", "title_user": "དགའ་བསུ་ཞུ། ཁྱེད་རང་ཁ་བརྡ་བྱེད་པར་གདན་ཞུ་གནང་སོང་།",
"you_have_been_banned": "ཁྱེད་རང་ཚོགས་པ་འདིའི་ནང་ནས་བཀག་འདུག", "you_have_been_banned": "ཁྱེད་རང་ཚོགས་པ་འདིའི་ནང་ནས་བཀག་འདུག",
"ua": "ཞབས་ཞུ་སྤྱོད་མཁན་གྱི་གྲོས་མཐུན།", "ua": "ཞབས་ཞུ་སྤྱོད་མཁན་གྱི་གྲོས་མཐུན།",
"accept_ua": "ང་ {agreement}་ལ་མོས་མཐུན་ཡོད།" "accept_ua": "ང་ {agreement}་ལ་མོས་མཐུན་ཡོད།",
"knock": "སྒོ་རྡུང་།",
"knock_reason": "སྒོ་རྡུང་བའི་རྒྱུ་མཚན། (རང་མོས།)",
"enter_knock": "ནང་དུ་ཞུགས་པར་རེ་སྐུལ།",
"status_knocking": "སྒོ་རྡུང་བཞིན་པ..."
}, },
"profile_info_popup": { "profile_info_popup": {
"powered_by": "ཁ་བརྡ་ཁང་འདི་{product} ནུས་ཤུགས་བསྩལ་ཡོད། {productLink} ནས་དེ་ལས་མང་བ་སྦྱོང་ཆོག་ལ། མདུན་དུ་བསྐྱོད་དེ་ཁ་བརྡ་ཁང་གཞན་ཞིག་བསྐྲུན་ཆོག", "powered_by": "ཁ་བརྡ་ཁང་འདི་{product} ནུས་ཤུགས་བསྩལ་ཡོད། {productLink} ནས་དེ་ལས་མང་བ་སྦྱོང་ཆོག་ལ། མདུན་དུ་བསྐྱོད་དེ་ཁ་བརྡ་ཁང་གཞན་ཞིག་བསྐྲུན་ཆོག",
@ -385,7 +409,7 @@
"view_results": "གྲུབ་འབྲས་ལ་གཟིགས།", "view_results": "གྲུབ་འབྲས་ལ་གཟིགས།",
"results_shared": "གྲུབ་འབྲས་ཁ་བརྡ་ཁང་དུ་བརྒྱུད་སྤེལ་བྱེད་ངེས།" "results_shared": "གྲུབ་འབྲས་ཁ་བརྡ་ཁང་དུ་བརྒྱུད་སྤེལ་བྱེད་ངེས།"
}, },
"export": { "room_export": {
"exported_date": "{date} ཉིན་ལ་ཕྱིར་འདྲེན་བྱས།", "exported_date": "{date} ཉིན་ལ་ཕྱིར་འདྲེན་བྱས།",
"export_filename": "{date} ཉིན་ཕྱིར་འདྲེན་བྱས་པའི་ཁ་བརྡ།", "export_filename": "{date} ཉིན་ཕྱིར་འདྲེན་བྱས་པའི་ཁ་བརྡ།",
"processed_n_of_total_events": "བྱུང་བ་{total}ཁོངས་ནས་ལས་སྣོན་བྱས་ཟིན་པའི་སྨྱན་སྦྱོར་གྱི་གྲངས {count}", "processed_n_of_total_events": "བྱུང་བ་{total}ཁོངས་ནས་ལས་སྣོན་བྱས་ཟིན་པའི་སྨྱན་སྦྱོར་གྱི་གྲངས {count}",
@ -403,7 +427,20 @@
"any_file_format_accepted": "ཡིག་ཆའི་རྣམ་བཞག་ཆ་ཚང་ངོས་ལེན་བྱེད།", "any_file_format_accepted": "ཡིག་ཆའི་རྣམ་བཞག་ཆ་ཚང་ངོས་ལེན་བྱེད།",
"files_sent_with_note": "མཆན་ཞིག་དང་མཉམ་དུ་ཡིག་ཆ་1་བཏང་ཟིན། མཆན་ཞིག་དང་མཉམ་དུ་ཡིག་ཆ {count} བཏང་ཟིན།", "files_sent_with_note": "མཆན་ཞིག་དང་མཉམ་དུ་ཡིག་ཆ་1་བཏང་ཟིན། མཆན་ཞིག་དང་མཉམ་དུ་ཡིག་ཆ {count} བཏང་ཟིན།",
"close": "སྒོ་རྒྱོབ།", "close": "སྒོ་རྒྱོབ།",
"files_sent": "ཡིག་ཆ1 བཏང་ཟིན། |ཡིག་ཆ{count}བཏང་ཟིན།" "files_sent": "ཡིག་ཆ1 བཏང་ཟིན། |ཡིག་ཆ{count}བཏང་ཟིན།",
"quality": "སྤུས་ཀ",
"compressed": "གནོན་བཙིར་བྱས་པ།",
"original": "དང་ཐོག་གི་པར་གཞི།",
"metadata_info_compressed": "པར་རིས་གནོན་བཙིར་བྱས་ན། དེའི་རྒྱུའི་གཞི་གྲངས་རང་བཞིན་གྱིས་འདོར་ངེས།",
"metadata_info_original": "དང་ཐོག་གི་པར་གཞི་བརྒྱུད་སྐུར་བྱས་ན། དེའི་རྒྱུའི་གཞི་གྲངས་རང་བཞིན་གྱིས་ནང་དུ་ཚུད་འགྲོ།",
"exif_data": "Exif གཞི་གྲངས།",
"content_credentials": "ནང་དོན་བདེན་དཔང་།",
"content_credentials_info": "སྨྱན་སྦྱོར་འདི་བདེན་དཔང་བྱེད་པར་ཁུངས་དང་ལོ་རྒྱུས་ཀྱི་ཆ་འཕྲིན་ཡོད།",
"learn_more": "ཞིབ་ཕྲ་སློབ་སྦྱོང་བྱོས།",
"ai_used": "མིས་བཟོས་རིག་ནུས་ཀྱིས་པར་རིས་བཅོས་སྒྱུར་བྱས་འདུག",
"screenshot_taken_on": "{date}ཉིན་འཆར་ངོས་པར་བླངས་འདུག",
"captured_with_camera": "པར་ཆས་ཤིག་གིས་པར་བླངས་འདུག",
"old_photo": "ཟླ་བ་གསུམ་ལས་རྙིང་པའི་པར།"
}, },
"notification": { "notification": {
"dialog": { "dialog": {

View file

@ -192,7 +192,8 @@
"tell_us": "Sag's uns.", "tell_us": "Sag's uns.",
"notification_label": "Benachrichtigung", "notification_label": "Benachrichtigung",
"display_name_required": "Anzeigename ist erforderlich", "display_name_required": "Anzeigename ist erforderlich",
"dont_see_yours": "Deines nicht gesehen?" "dont_see_yours": "Deines nicht gesehen?",
"my_rooms": "Meine Räume"
}, },
"profile_info_popup": { "profile_info_popup": {
"you_are": "Du bist", "you_are": "Du bist",
@ -221,7 +222,9 @@
"title_user": "Willkommen, du wurdest eingeladen mitzuchatten", "title_user": "Willkommen, du wurdest eingeladen mitzuchatten",
"you_have_been_banned": "Du wurdest aus diesem Raum verbannt.", "you_have_been_banned": "Du wurdest aus diesem Raum verbannt.",
"accept_ua": "Ich akzeptiere die {agreement}", "accept_ua": "Ich akzeptiere die {agreement}",
"ua": "Dienstnutzervereinbarung" "ua": "Dienstnutzervereinbarung",
"knock": "Anklopfen",
"enter_knock": "Beitrittsanfrage"
}, },
"invite": { "invite": {
"title": "Freunde hinzufügen", "title": "Freunde hinzufügen",
@ -306,7 +309,9 @@
"message_history_info": "Erlaube Personen, Nachrichten zu sehen, die vor ihrem Beitritt gesendet wurden", "message_history_info": "Erlaube Personen, Nachrichten zu sehen, die vor ihrem Beitritt gesendet wurden",
"report": "Bericht", "report": "Bericht",
"report_reason": "Grund", "report_reason": "Grund",
"report_info": "Diesen Raum den Administratoren des Dienstes wegen rechtswidriger, beleidigender oder anderweitig verletzender Inhalte melden" "report_info": "Diesen Raum den Administratoren des Dienstes wegen rechtswidriger, beleidigender oder anderweitig verletzender Inhalte melden",
"accept_knock": "Akzeptieren",
"reject_knock": "Verweigern"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "Dieser Raum", "this_room": "Dieser Raum",
@ -363,7 +368,7 @@
"results_shared": "Die Ergebnisse werden dem Raum mitgeteilt.", "results_shared": "Die Ergebnisse werden dem Raum mitgeteilt.",
"tip_text": "Die Mitglieder sehen die Umfrageergebnisse, nachdem sie geantwortet haben. Schließe die Umfrage, wenn du fertig bist, um die Ergebnisse für alle im Raum anzuzeigen." "tip_text": "Die Mitglieder sehen die Umfrageergebnisse, nachdem sie geantwortet haben. Schließe die Umfrage, wenn du fertig bist, um die Ergebnisse für alle im Raum anzuzeigen."
}, },
"export": { "room_export": {
"fetched_n_of_total_events": "{count} von {total} Ereignissen geladen", "fetched_n_of_total_events": "{count} von {total} Ereignissen geladen",
"exported_date": "Am {date} exportiert", "exported_date": "Am {date} exportiert",
"processed_n_of_total_events": "Medien für {count} von {total} Ereignissen verarbeitet", "processed_n_of_total_events": "Medien für {count} von {total} Ereignissen verarbeitet",
@ -414,7 +419,10 @@
"any_file_format_accepted": "Jedes Dateiformat wird akzeptiert", "any_file_format_accepted": "Jedes Dateiformat wird akzeptiert",
"secure_file_send": "sicheres Senden von Dateien", "secure_file_send": "sicheres Senden von Dateien",
"add_a_message": "Nachricht hinzufügen", "add_a_message": "Nachricht hinzufügen",
"files_sent_with_note": "1 Datei mit einer Notiz gesendet! | {count} Dateien mit einer Notiz gesendet!" "files_sent_with_note": "1 Datei mit einer Notiz gesendet! | {count} Dateien mit einer Notiz gesendet!",
"quality": "Qualität",
"original": "Original",
"learn_more": "Mehr erfahren"
}, },
"notification": { "notification": {
"dialog": { "dialog": {

View file

@ -21,7 +21,8 @@
"close": "close", "close": "close",
"notify": "Notify", "notify": "Notify",
"different_browser_title": "Try different browser", "different_browser_title": "Try different browser",
"different_browser_content": "Some features may break. Copy and open link in a different browser." "different_browser_content": "Some features may break. Copy and open link in a different browser.",
"retry": "Retry"
}, },
"menu": { "menu": {
"start_private_chat": "Direct Message with this user", "start_private_chat": "Direct Message with this user",
@ -45,10 +46,13 @@
"loading": "Loading {appName}", "loading": "Loading {appName}",
"user_kick_and_ban": "Kick out", "user_kick_and_ban": "Kick out",
"user_make_admin": "Make admin", "user_make_admin": "Make admin",
"user_revoke_admin": "Revoke admin",
"user_make_moderator": "Make moderator", "user_make_moderator": "Make moderator",
"user_revoke_moderator": "Revoke moderator", "user_revoke_moderator": "Revoke moderator",
"pin": "Pin post", "pin": "Pin post",
"unpin": "Unpin post" "unpin": "Unpin post",
"cancel_knock": "Cancel knock",
"upgrade": "Upgrade"
}, },
"message": { "message": {
"you": "You", "you": "You",
@ -114,7 +118,10 @@
"images": "Images", "images": "Images",
"send_attachements_dialog_title": "Do you want to send following attachments?", "send_attachements_dialog_title": "Do you want to send following attachments?",
"download_all": "Download all", "download_all": "Download all",
"failed_to_render": "Failed to render event" "failed_to_render": "Failed to render event",
"room_upgraded": "This room has been upgraded, go {link} to rejoin the discussion",
"room_upgraded_link": "here",
"room_upgraded_view_old": "This room was upgraded. Click {link} to view old messages"
}, },
"room": { "room": {
"invitations": "You have no invitations | You have 1 invitation | You have {count} invitations", "invitations": "You have no invitations | You have 1 invitation | You have {count} invitations",
@ -129,7 +136,9 @@
"room_list_new_messages": "{count} new messages", "room_list_new_messages": "{count} new messages",
"room_list_rooms": "Rooms", "room_list_rooms": "Rooms",
"room_name_required": "Room name is required", "room_name_required": "Room name is required",
"room_topic_required": "Room description is required" "room_topic_required": "Room description is required",
"needs_upgrade": "This room needs to be upgraded to a new room version",
"upgrading": "Upgrading room version"
}, },
"room_welcome": { "room_welcome": {
"info": "Welcome! Here are a few things to know about your room:", "info": "Welcome! Here are a few things to know about your room:",
@ -138,6 +147,7 @@
"room_history_joined": "People can only see the messages sent after they join.", "room_history_joined": "People can only see the messages sent after they join.",
"join_public": "Anyone can join by opening this link: {link}.", "join_public": "Anyone can join by opening this link: {link}.",
"join_invite": "Only people you invite can join.", "join_invite": "Only people you invite can join.",
"join_knock": "People can request to join by ´knocking´.",
"info_permissions": "You can change join permissions at any time in the room settings.", "info_permissions": "You can change join permissions at any time in the room settings.",
"got_it": "Got it", "got_it": "Got it",
"no_past_messages": "Welcome! For your security, past messages are not available.", "no_past_messages": "Welcome! For your security, past messages are not available.",
@ -277,10 +287,14 @@
"joining_as": "You are joining as:", "joining_as": "You are joining as:",
"join": "Join room", "join": "Join room",
"join_user": "Start chat", "join_user": "Start chat",
"knock": "Knock",
"knock_reason": "Knock reason (optional)",
"enter_room": "Enter room", "enter_room": "Enter room",
"enter_room_user": "Start chat", "enter_room_user": "Start chat",
"enter_knock": "Request to join",
"status_logging_in": "Logging in...", "status_logging_in": "Logging in...",
"status_joining": "Joining room...", "status_joining": "Joining room...",
"status_knocking": "Knocking...",
"join_failed": "Failed to join room.", "join_failed": "Failed to join room.",
"choose_name": "Choose a name to use", "choose_name": "Choose a name to use",
"you_have_been_banned": "You have been banned from this room.", "you_have_been_banned": "You have been banned from this room.",
@ -328,11 +342,15 @@
"permissions": "Join Permissions", "permissions": "Join Permissions",
"join_invite": "Only People Added", "join_invite": "Only People Added",
"join_public": "Anyone with a link", "join_public": "Anyone with a link",
"join_knock": "People can ´knock´.",
"copy_invite_link": "Copy invite link", "copy_invite_link": "Copy invite link",
"copy_link": "Copy link", "copy_link": "Copy link",
"link_copied": "Link copied!", "link_copied": "Link copied!",
"purge": "Delete room", "purge": "Delete room",
"members": "Members", "members": "Members",
"knocks": "Knocks",
"accept_knock": "Accept",
"reject_knock": "Deny",
"user": "{user}", "user": "{user}",
"user_you": "{user} (you)", "user_you": "{user} (you)",
"hide_all": "Hide", "hide_all": "Hide",
@ -340,7 +358,8 @@
"leave_room": "Leave", "leave_room": "Leave",
"version_info": "Powered by Guardian Project. Version: {version}", "version_info": "Powered by Guardian Project. Version: {version}",
"scan_code": "Scan to join the room", "scan_code": "Scan to join the room",
"export_room": "Export chat", "export_room": "Save chat",
"user_creator": "Creator",
"user_admin": "Administrator", "user_admin": "Administrator",
"user_moderator": "Moderator", "user_moderator": "Moderator",
"moderation": "Moderation", "moderation": "Moderation",
@ -351,7 +370,7 @@
"voice_mode_info": "Switches the chat interface to a 'listen and record' mode", "voice_mode_info": "Switches the chat interface to a 'listen and record' mode",
"file_mode": "File mode", "file_mode": "File mode",
"file_mode_info": "Switches the chat interface to a 'file drop' mode", "file_mode_info": "Switches the chat interface to a 'file drop' mode",
"download_chat": "Download chat", "download_chat": "Save chat",
"read_only_room": "Read Only", "read_only_room": "Read Only",
"read_only_room_info": "Only admins and moderators are allowed to send to the room.", "read_only_room_info": "Only admins and moderators are allowed to send to the room.",
"message_retention": "Limit History", "message_retention": "Limit History",
@ -373,7 +392,12 @@
"message_history_warning": "warning: Full message history will be visible to new participants", "message_history_warning": "warning: Full message history will be visible to new participants",
"report": "Report", "report": "Report",
"report_info": "Report this room to service administrators for illegal, abusive or otherwise harmful content", "report_info": "Report this room to service administrators for illegal, abusive or otherwise harmful content",
"report_reason": "Reason" "report_reason": "Reason",
"confirm_make_admin": "Do you want to make this user an administrator?",
"confirm_revoke_admin": "Do you want to remove administrator rights from this user?",
"confirm_make_moderator": "Do you want to make this user a moderator?",
"confirm_revoke_moderator": "Do you want to remove moderator rights from this user?",
"confirm_ban": "Do you want to kick this user from the room?"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "This room", "this_room": "This room",
@ -426,7 +450,7 @@
"num_answered": "{count} answers", "num_answered": "{count} answers",
"results_shared": "Results shared to the room." "results_shared": "Results shared to the room."
}, },
"export": { "room_export": {
"exported_date": "Exported on {date}", "exported_date": "Exported on {date}",
"fetched_n_events": "Fetched {count} events", "fetched_n_events": "Fetched {count} events",
"fetched_n_of_total_events": "Fetched {count} of {total} events", "fetched_n_of_total_events": "Fetched {count} of {total} events",
@ -469,6 +493,19 @@
"files_sent_with_note":"1 file sent with a note! | {count} files sent with a note!", "files_sent_with_note":"1 file sent with a note! | {count} files sent with a note!",
"send_more_files": "Send more files", "send_more_files": "Send more files",
"close": "Close", "close": "Close",
"files": "Files" "files": "Files",
"quality": "Quality",
"compressed": "Compressed",
"original": "Original",
"metadata_info_compressed": "Compressing the image automatically excludes its metadata.",
"metadata_info_original": "Sharing the original automatically includes its metadata.",
"exif_data": "Exif Data",
"content_credentials": "Content Credentials",
"content_credentials_info": "Source or history information is available for this media to be verified.",
"learn_more": "Learn more",
"ai_used": "Photo modified with AI",
"screenshot_taken_on": "Screenshot taken on {date}",
"captured_with_camera": "Captured with a camera",
"old_photo": "Photo older than 3 months"
} }
} }

View file

@ -52,7 +52,9 @@
"message_history_warning": "Advertencia: El historial completo de mensajes será visible para los nuevos participantes", "message_history_warning": "Advertencia: El historial completo de mensajes será visible para los nuevos participantes",
"message_history": "Historial de mensajes", "message_history": "Historial de mensajes",
"report": "Informe", "report": "Informe",
"report_reason": "Razón" "report_reason": "Razón",
"accept_knock": "Acepta",
"reject_knock": "Desestimar"
}, },
"purge_room": { "purge_room": {
"button": "Borrar", "button": "Borrar",
@ -95,7 +97,9 @@
"title_user": "Bienvenido, has sido invitado a chatear con", "title_user": "Bienvenido, has sido invitado a chatear con",
"enter_room_user": "Empezar un chat", "enter_room_user": "Empezar un chat",
"you_have_been_banned": "Has sido expulsado de esta sala.", "you_have_been_banned": "Has sido expulsado de esta sala.",
"join_user": "Empezar un chat" "join_user": "Empezar un chat",
"knock": "Aviso",
"enter_knock": "Solicita unirte"
}, },
"profile": { "profile": {
"display_name": "Nombre para mostrar", "display_name": "Nombre para mostrar",
@ -143,7 +147,7 @@
"blocked": "Bloqueado" "blocked": "Bloqueado"
}, },
"new_room": { "new_room": {
"status_avatar": "Subiendo avatar: {count}", "status_avatar": "Subiendo avatar",
"status_creating": "Creando Sala", "status_creating": "Creando Sala",
"invite_description": "Escoge de una lista o busca por ID de cuenta", "invite_description": "Escoge de una lista o busca por ID de cuenta",
"invite_info": "Solo personas agregadas", "invite_info": "Solo personas agregadas",
@ -400,7 +404,10 @@
"secure_file_send": "envío seguro de los archivos", "secure_file_send": "envío seguro de los archivos",
"any_file_format_accepted": "Se admite cualquier formato para un archivo", "any_file_format_accepted": "Se admite cualquier formato para un archivo",
"files_sent_with_note": "¡1 archivo enviado con una nota! | ¡ {count} archivos enviados con una nota!", "files_sent_with_note": "¡1 archivo enviado con una nota! | ¡ {count} archivos enviados con una nota!",
"files_sent": "¡1 archivo enviado! | ¡ {count} archivos enviados!" "files_sent": "¡1 archivo enviado! | ¡ {count} archivos enviados!",
"quality": "Calidad",
"original": "Original",
"learn_more": "Learn more"
}, },
"getlink": { "getlink": {
"continue": "Continuar", "continue": "Continuar",
@ -426,7 +433,7 @@
"not_supported": "La notificación aún no es compatible con dispositivos móviles", "not_supported": "La notificación aún no es compatible con dispositivos móviles",
"periodicSync_new_msg_reminder": "Es posible que tengas nuevos mensajes" "periodicSync_new_msg_reminder": "Es posible que tengas nuevos mensajes"
}, },
"export": { "room_export": {
"fetched_n_of_total_events": "{count} de {total} eventos recuperados", "fetched_n_of_total_events": "{count} de {total} eventos recuperados",
"export_filename": "Chat exportado el {date}", "export_filename": "Chat exportado el {date}",
"exported_date": "Exportado el {date}", "exported_date": "Exportado el {date}",

View file

@ -169,7 +169,8 @@
"add_a_message": "Añadir un mensaje", "add_a_message": "Añadir un mensaje",
"sending_progress": "Enviando...", "sending_progress": "Enviando...",
"sending": "Enviando", "sending": "Enviando",
"files_sent": "¡1 archivo enviado! | ¡{count} archivos enviados!" "files_sent": "¡1 archivo enviado! | ¡{count} archivos enviados!",
"learn_more": "Más información"
}, },
"new_room": { "new_room": {
"new_room": "Nueva Sala", "new_room": "Nueva Sala",
@ -365,7 +366,8 @@
"shared_room_number": "Compartes {count} salas con {name}", "shared_room_number": "Compartes {count} salas con {name}",
"shared_room_number_more": "Compartes más de {count} salas con {name}", "shared_room_number_more": "Compartes más de {count} salas con {name}",
"message_history": "Historial de Mensajes", "message_history": "Historial de Mensajes",
"message_history_warning": "advertencia: El historial de mensajes completo será visible para nueva(o)s participantes" "message_history_warning": "advertencia: El historial de mensajes completo será visible para nueva(o)s participantes",
"accept_knock": "Aceptar"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "Esta sala", "this_room": "Esta sala",
@ -418,7 +420,7 @@
"num_answered": "{count} respuestas", "num_answered": "{count} respuestas",
"results_shared": "Resultados compartidos a la sala." "results_shared": "Resultados compartidos a la sala."
}, },
"export": { "room_export": {
"exported_date": "Exportado el {date}", "exported_date": "Exportado el {date}",
"fetched_n_events": "Se obtuvieron {count} eventos", "fetched_n_events": "Se obtuvieron {count} eventos",
"processed_n_of_total_events": "Medios procesados para {count} de {total} eventos", "processed_n_of_total_events": "Medios procesados para {count} de {total} eventos",

View file

@ -142,9 +142,11 @@
"shared_room_number": "Compartes {count} salas con {name}", "shared_room_number": "Compartes {count} salas con {name}",
"shared_room_number_more": "Comparte más de{count}salas con {name}", "shared_room_number_more": "Comparte más de{count}salas con {name}",
"message_history_warning": "Advertencia: el historial completo de mensajes será visible para los nuevos participantes.", "message_history_warning": "Advertencia: el historial completo de mensajes será visible para los nuevos participantes.",
"message_history": "Historial de mensajes" "message_history": "Historial de mensajes",
"accept_knock": "Aceptar",
"reject_knock": "Denegar"
}, },
"export": { "room_export": {
"exported_date": "Exportado en {date}", "exported_date": "Exportado en {date}",
"fetched_n_events": "Eventos{count} recuperados", "fetched_n_events": "Eventos{count} recuperados",
"fetched_n_of_total_events": "Se recuperaron {count} de {total} eventos", "fetched_n_of_total_events": "Se recuperaron {count} de {total} eventos",

View file

@ -22,7 +22,8 @@
"loading": "در حال بارگذاری {appName}", "loading": "در حال بارگذاری {appName}",
"user_make_moderator": "ناظم کنید", "user_make_moderator": "ناظم کنید",
"user_kick_and_ban": "اخراج کنید", "user_kick_and_ban": "اخراج کنید",
"user_revoke_moderator": "ناظم را لغو کنید" "user_revoke_moderator": "ناظم را لغو کنید",
"upgrade": "ارتقا"
}, },
"message": { "message": {
"outgoing_message_deleted_text": "شما این پیام را حذف کردید.", "outgoing_message_deleted_text": "شما این پیام را حذف کردید.",
@ -88,7 +89,8 @@
"images": "تصاویر", "images": "تصاویر",
"send_attachements_dialog_title": "آیا می‌خواهید پیوست‌های زیر را ارسال کنید؟", "send_attachements_dialog_title": "آیا می‌خواهید پیوست‌های زیر را ارسال کنید؟",
"download_all": "دانلود همه", "download_all": "دانلود همه",
"failed_to_render": "تحویل رویداد با شکست مواجه شد" "failed_to_render": "تحویل رویداد با شکست مواجه شد",
"room_upgraded_link": "این‌جا"
}, },
"new_room": { "new_room": {
"next": "بعدی", "next": "بعدی",
@ -107,7 +109,7 @@
"invite_info": "فقط افرادی که اضافه شده‌اند", "invite_info": "فقط افرادی که اضافه شده‌اند",
"invite_description": "از یک لیست انتخاب کنید یا با شناسه حساب جستجو کنید", "invite_description": "از یک لیست انتخاب کنید یا با شناسه حساب جستجو کنید",
"status_creating": "ایجاد اتاق", "status_creating": "ایجاد اتاق",
"status_avatar": "در حال بارگذاری آواتار: {count}", "status_avatar": "بار گذاشتن چهرک",
"room_name_limit_error_msg": "حداکثر 50 کاراکتر مجاز است", "room_name_limit_error_msg": "حداکثر 50 کاراکتر مجاز است",
"colon_not_allowed": "دو نقطه مجاز نیست", "colon_not_allowed": "دو نقطه مجاز نیست",
"options": "گزینه‌ها" "options": "گزینه‌ها"
@ -152,7 +154,11 @@
"add_a_message": "یک پیام اضافه کنید", "add_a_message": "یک پیام اضافه کنید",
"sending_progress": "در حال ارسال...", "sending_progress": "در حال ارسال...",
"sending": "در حال ارسال", "sending": "در حال ارسال",
"files_sent": "1 فایل ارسال شد! | {count} فایل ارسال شد!" "files_sent": "1 فایل ارسال شد! | {count} فایل ارسال شد!",
"quality": "کیفیت",
"original": "اصلی",
"learn_more": "بیش‌تر بدانید",
"compressed": "فشرده"
}, },
"language_display_name": "انگلیسی", "language_display_name": "انگلیسی",
"project": { "project": {
@ -278,7 +284,8 @@
"status_joining": "در حال پیوستن به اتاق...", "status_joining": "در حال پیوستن به اتاق...",
"join_failed": "پیوستن به اتاق ناموفق بود.", "join_failed": "پیوستن به اتاق ناموفق بود.",
"choose_name": "یک نام برای استفاده انتخاب کنید", "choose_name": "یک نام برای استفاده انتخاب کنید",
"you_have_been_banned": "شما برای حضور در این اتاق مسدود شده‌اید." "you_have_been_banned": "شما برای حضور در این اتاق مسدود شده‌اید.",
"knock": "در زدن"
}, },
"leave": { "leave": {
"title_public": "خدانگهدار، {user}", "title_public": "خدانگهدار، {user}",
@ -356,7 +363,9 @@
"message_history_warning": "هشدار: تاریخچه کامل پیام‌ها برای شرکت‌کنندگان جدید قابل مشاهده خواهد بود.", "message_history_warning": "هشدار: تاریخچه کامل پیام‌ها برای شرکت‌کنندگان جدید قابل مشاهده خواهد بود.",
"message_history": "تاریخچه پیام", "message_history": "تاریخچه پیام",
"report_reason": "دلیل", "report_reason": "دلیل",
"report": "گزارش" "report": "گزارش",
"accept_knock": "قبول کنید",
"reject_knock": "رد"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "این اتاق", "this_room": "این اتاق",
@ -423,7 +432,7 @@
"places": "مکان ها" "places": "مکان ها"
} }
}, },
"export": { "room_export": {
"exported_date": "خروجی گرفته شد در {date}", "exported_date": "خروجی گرفته شد در {date}",
"fetched_n_events": "{count} رویداد بازیابی شد", "fetched_n_events": "{count} رویداد بازیابی شد",
"fetched_n_of_total_events": "{count} از {total} رویداد بازیابی شد", "fetched_n_of_total_events": "{count} از {total} رویداد بازیابی شد",

View file

@ -166,7 +166,8 @@
"shared_room_number": "شما {count} اطاق با نام {name} به اشتراک می‌گذارید", "shared_room_number": "شما {count} اطاق با نام {name} به اشتراک می‌گذارید",
"shared_room_number_more": "شما بیش از {count} اطاق با نام {name} به اشتراک می‌گذارید", "shared_room_number_more": "شما بیش از {count} اطاق با نام {name} به اشتراک می‌گذارید",
"message_history": "تاریخچه پیغام", "message_history": "تاریخچه پیغام",
"message_history_warning": "هشدار: تاریخچه کامل پیغام‌ها برای شرکت‌کنندگان جدید قابل مشاهده خواهد بود" "message_history_warning": "هشدار: تاریخچه کامل پیغام‌ها برای شرکت‌کنندگان جدید قابل مشاهده خواهد بود",
"accept_knock": "قبول کنید"
}, },
"poll_create": { "poll_create": {
"create_poll_menu_option": "ایجاد نظرسنجی", "create_poll_menu_option": "ایجاد نظرسنجی",
@ -195,7 +196,7 @@
"poll_submit": "تسلیم کردن", "poll_submit": "تسلیم کردن",
"num_answered": "{count} جواب" "num_answered": "{count} جواب"
}, },
"export": { "room_export": {
"exported_date": "خروجی گرفته شد در {date}", "exported_date": "خروجی گرفته شد در {date}",
"fetched_n_events": "{count} رویداد بازیابی شد", "fetched_n_events": "{count} رویداد بازیابی شد",
"fetched_n_of_total_events": "{count} از {total} رویداد بازیابی شد", "fetched_n_of_total_events": "{count} از {total} رویداد بازیابی شد",

View file

@ -178,7 +178,9 @@
"read_only_room": "Lue Ainoastaan", "read_only_room": "Lue Ainoastaan",
"moderation": "Moderointi", "moderation": "Moderointi",
"report": "Raportoi", "report": "Raportoi",
"report_reason": "Syy" "report_reason": "Syy",
"accept_knock": "Hyväksy",
"reject_knock": "Estä"
}, },
"power_level": { "power_level": {
"restricted": "rajoitettu", "restricted": "rajoitettu",
@ -233,7 +235,10 @@
"file_mode": { "file_mode": {
"sending_progress": "Lähetetään…", "sending_progress": "Lähetetään…",
"close": "Sulje", "close": "Sulje",
"files": "Tiedostot" "files": "Tiedostot",
"quality": "Laatu",
"original": "Alkuperäinen",
"learn_more": "Lue lisää"
}, },
"project": { "project": {
"name": "Kokoonnu", "name": "Kokoonnu",

View file

@ -161,7 +161,9 @@
"status_joining": "Adhésion au salon…", "status_joining": "Adhésion au salon…",
"join_failed": "Impossible de rejoindre le salon.", "join_failed": "Impossible de rejoindre le salon.",
"enter_room": "Entrer dans le salon", "enter_room": "Entrer dans le salon",
"remember_me": "Rester connecté·e" "remember_me": "Rester connecté·e",
"knock": "Frapper à la porte",
"enter_knock": "Demander à rejoindre"
}, },
"invite": { "invite": {
"title": "Ajouter des amis", "title": "Ajouter des amis",
@ -225,7 +227,9 @@
"read_only_room": "Lecture seule", "read_only_room": "Lecture seule",
"moderation": "Modération", "moderation": "Modération",
"report": "Signaler", "report": "Signaler",
"report_reason": "Motif" "report_reason": "Motif",
"accept_knock": "Accept.",
"reject_knock": "Refuser"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "Ce salon", "this_room": "Ce salon",
@ -293,7 +297,10 @@
"sending_progress": "Envoi...", "sending_progress": "Envoi...",
"sending": "Envoi", "sending": "Envoi",
"close": "Fermer", "close": "Fermer",
"files": "Fichier" "files": "Fichier",
"quality": "Qualité",
"original": "Original",
"learn_more": "En apprendre davantage"
}, },
"create": { "create": {
"room_type_channel_name": "Canal", "room_type_channel_name": "Canal",

View file

@ -63,7 +63,10 @@
"outgoing_message_deleted_text": "Scrios tú an teachtaireacht seo.", "outgoing_message_deleted_text": "Scrios tú an teachtaireacht seo.",
"incoming_message_deleted_text": "Scriosadh an teachtaireacht seo.", "incoming_message_deleted_text": "Scriosadh an teachtaireacht seo.",
"seen_by": "Feiceáilte ag", "seen_by": "Feiceáilte ag",
"download_all": "Íoslódáil go léir" "download_all": "Íoslódáil go léir",
"room_upgraded": "Tá an seomra seo uasghrádaithe, téigh chuig {link} chun páirt a ghlacadh sa phlé arís",
"room_upgraded_link": "anseo",
"room_upgraded_view_old": "Rinneadh uasghrádú ar an seomra seo. Cliceáil {link} chun sean-theachtaireachtaí a fheiceáil"
}, },
"room_welcome": { "room_welcome": {
"info_permissions": "Is féidir leat 'ceadanna páirti' a athrú ag am ar bith i socruithe an tseomra.", "info_permissions": "Is féidir leat 'ceadanna páirti' a athrú ag am ar bith i socruithe an tseomra.",
@ -81,7 +84,8 @@
"join_public": "Is féidir le duine ar bith páirt tríd an nasc seo a oscailt: {link}.", "join_public": "Is féidir le duine ar bith páirt tríd an nasc seo a oscailt: {link}.",
"join_invite": "Ní féidir ach daoine a thugann tú cuireadh a bheith páirteach.", "join_invite": "Ní féidir ach daoine a thugann tú cuireadh a bheith páirteach.",
"change": "Athraigh", "change": "Athraigh",
"got_it": "Fuair sé" "got_it": "Fuair sé",
"join_knock": "Is féidir le daoine iarratas a dhéanamh chun páirt a ghlacadh trí 'chnagadh'."
}, },
"login": { "login": {
"create_room": "Cláraigh agus Cruthaigh Seomra", "create_room": "Cláraigh agus Cruthaigh Seomra",
@ -121,7 +125,11 @@
"join_failed": "Theip ar theip ar an seomra.", "join_failed": "Theip ar theip ar an seomra.",
"choose_name": "Roghnaigh ainm le húsáid", "choose_name": "Roghnaigh ainm le húsáid",
"accept_ua": "Aontaím leis an {agreement}", "accept_ua": "Aontaím leis an {agreement}",
"ua": "comhaontú úsáideora seirbhíse" "ua": "comhaontú úsáideora seirbhíse",
"knock": "Cnoc Mhuire",
"knock_reason": "Cúis cnagála (roghnach)",
"enter_knock": "Iarratas chun páirt a ghlacadh",
"status_knocking": "Ag bualadh..."
}, },
"invite": { "invite": {
"title": "Cuir Cairde", "title": "Cuir Cairde",
@ -164,7 +172,7 @@
"leave_room": "Fágáil", "leave_room": "Fágáil",
"version_info": "Cumhachtaithe ag Tionscadal Guardian. Leagan: {version}", "version_info": "Cumhachtaithe ag Tionscadal Guardian. Leagan: {version}",
"scan_code": "Scanadh chun dul isteach sa seomra", "scan_code": "Scanadh chun dul isteach sa seomra",
"export_room": "Comhrá easpórtá", "export_room": "Sábháil comhrá",
"user_admin": "Riarthóir", "user_admin": "Riarthóir",
"user_moderator": "Modhnóir", "user_moderator": "Modhnóir",
"moderation": "Modhnú", "moderation": "Modhnú",
@ -185,7 +193,7 @@
"voice_mode_info": "Athraíonn an comhéadan comhrá go modh 'éisteacht agus taifead'", "voice_mode_info": "Athraíonn an comhéadan comhrá go modh 'éisteacht agus taifead'",
"file_mode": "Modh comhad", "file_mode": "Modh comhad",
"file_mode_info": "Athraíonn an comhéadan comhrá go modh 'titim comhad'", "file_mode_info": "Athraíonn an comhéadan comhrá go modh 'titim comhad'",
"download_chat": "Íoslódáil comhrá", "download_chat": "Sábháil comhrá",
"read_only_room": "Léigh Amháin", "read_only_room": "Léigh Amháin",
"read_only_room_info": "Ní cheadaítear ach riarthóirí agus modhnóirí a sheoladh chuig an seomra.", "read_only_room_info": "Ní cheadaítear ach riarthóirí agus modhnóirí a sheoladh chuig an seomra.",
"message_retention": "Stair Teorainn", "message_retention": "Stair Teorainn",
@ -196,7 +204,17 @@
"message_history_info": "Lig do dhaoine teachtaireachtaí a seoladh a fheiceáil sula ndeachaigh siad isteach ann", "message_history_info": "Lig do dhaoine teachtaireachtaí a seoladh a fheiceáil sula ndeachaigh siad isteach ann",
"report": "Tuairisc", "report": "Tuairisc",
"report_reason": "Cúis", "report_reason": "Cúis",
"report_info": "Tuairiscigh an seomra seo do riarthóirí seirbhíse maidir le hábhar mídhleathach, maslach nó díobhálach eile" "report_info": "Tuairiscigh an seomra seo do riarthóirí seirbhíse maidir le hábhar mídhleathach, maslach nó díobhálach eile",
"accept_knock": "Glac leis",
"reject_knock": "Diúltú",
"join_knock": "Is féidir le daoine 'cnagadh'.",
"knocks": "Na Knicks",
"confirm_make_admin": "Ar mhaith leat riarthóir a dhéanamh den úsáideoir seo?",
"confirm_make_moderator": "Ar mhaith leat an t-úsáideoir seo a dhéanamh ina mhodhnóir?",
"confirm_revoke_moderator": "Ar mhaith leat cearta modhnóra a bhaint den úsáideoir seo?",
"confirm_ban": "Ar mhaith leat an t-úsáideoir seo a dhíbirt as an seomra?",
"user_creator": "Cruthaitheoir",
"confirm_revoke_admin": "Ar mhaith leat cearta riarthóra a bhaint den úsáideoir seo?"
}, },
"poll_create": { "poll_create": {
"answer_label_1": "Freagra*", "answer_label_1": "Freagra*",
@ -257,11 +275,24 @@
"secure_file_send": "comhad slán a sheoladh", "secure_file_send": "comhad slán a sheoladh",
"add_a_message": "Cuir teachtaireacht leis", "add_a_message": "Cuir teachtaireacht leis",
"sending_progress": "Ag seoladh...", "sending_progress": "Ag seoladh...",
"sending": "Seoladh", "sending": "Ag seoladh",
"files_sent": "1 comhad seoladh! | {count} comhaid seolta!", "files_sent": "1 comhad seoladh! | {count} comhaid seolta!",
"files_sent_with_note": "1 chomhad seoladh le nóta! | Comhaid {count} seoltar le nóta!", "files_sent_with_note": "1 chomhad seoladh le nóta! | Comhaid {count} seoltar le nóta!",
"send_more_files": "Seol níos mó comhaid", "send_more_files": "Seol níos mó comhaid",
"close": "Dún" "close": "Dún",
"original": "Bunleagan",
"learn_more": "Faigh tuilleadh eolais",
"quality": "Cáilíocht",
"compressed": "Comhbhrúite",
"metadata_info_compressed": "Má chomhbhrúitear an íomhá, eisiatar a meiteashonraí go huathoibríoch.",
"metadata_info_original": "Cuirtear meiteashonraí an bhunchóip san áireamh go huathoibríoch nuair a roinntear é.",
"exif_data": "Sonraí Exif",
"content_credentials": "Dintiúir Ábhair",
"content_credentials_info": "Tá faisnéis foinse nó staire ar fáil le go bhféadfaidh an meán seo a fhíorú.",
"ai_used": "Grianghraf modhnaithe le hintleacht shaorga",
"screenshot_taken_on": "Scáileán tógtha ar {date}",
"captured_with_camera": "Gabhadh le ceamara",
"old_photo": "Grianghraf níos sine ná 3 mhí"
}, },
"project": { "project": {
"name": "Tionól", "name": "Tionól",
@ -312,7 +343,10 @@
"user_kick_and_ban": "Cuir amach", "user_kick_and_ban": "Cuir amach",
"user_make_admin": "Déan riarachán", "user_make_admin": "Déan riarachán",
"user_make_moderator": "Déan modhnóir", "user_make_moderator": "Déan modhnóir",
"user_revoke_moderator": "Modhnóir a chúlghairm" "user_revoke_moderator": "Modhnóir a chúlghairm",
"cancel_knock": "Cealaigh cnag",
"user_revoke_admin": "Cealaigh an riarthóir",
"upgrade": "Uasghrádú"
}, },
"room": { "room": {
"invitations": "Níl aon chuireadh agat | Tá cuireadh 1 agat | Tá cuireadh {count} agat", "invitations": "Níl aon chuireadh agat | Tá cuireadh 1 agat | Tá cuireadh {count} agat",
@ -327,7 +361,9 @@
"room_list_new_messages": "{count} teachtaireachtaí nua", "room_list_new_messages": "{count} teachtaireachtaí nua",
"room_list_rooms": "Seomraí", "room_list_rooms": "Seomraí",
"room_name_required": "Tá ainm an tseomra ag teastáil", "room_name_required": "Tá ainm an tseomra ag teastáil",
"room_topic_required": "Teastaíonn cur síos ar an seom" "room_topic_required": "Teastaíonn cur síos ar an seom",
"needs_upgrade": "Caithfear an seomra seo a uasghrádú go leagan nua den seomra",
"upgrading": "Ag uasghrádú leagan an tseomra"
}, },
"new_room": { "new_room": {
"new_room": "Seomra Nua", "new_room": "Seomra Nua",
@ -395,7 +431,8 @@
"password_repeat": "Athraigh pasfhocal nua", "password_repeat": "Athraigh pasfhocal nua",
"display_name": "Ainm taispeána", "display_name": "Ainm taispeána",
"display_name_required": "Tá ainm taispeána ag teastáil", "display_name_required": "Tá ainm taispeána ag teastáil",
"notification_label": "Fógra" "notification_label": "Fógra",
"my_rooms": "Mo sheomraí"
}, },
"profile_info_popup": { "profile_info_popup": {
"you_are": "Tá tú", "you_are": "Tá tú",
@ -445,7 +482,7 @@
"download_name": "Íoslódáil", "download_name": "Íoslódáil",
"original_text": "<buntéacs>" "original_text": "<buntéacs>"
}, },
"export": { "room_export": {
"exported_date": "Onnmhairithe ar {date}", "exported_date": "Onnmhairithe ar {date}",
"fetched_n_events": "Imeachtaí {count} faighte", "fetched_n_events": "Imeachtaí {count} faighte",
"fetched_n_of_total_events": "Fuarthas {count} de {total} imeacht", "fetched_n_of_total_events": "Fuarthas {count} de {total} imeacht",

View file

@ -159,7 +159,9 @@
"status_joining": "Unendosi alla stanza…", "status_joining": "Unendosi alla stanza…",
"join_failed": "Impossibile unirsi alla stanza.", "join_failed": "Impossibile unirsi alla stanza.",
"remember_me": "Ricordami", "remember_me": "Ricordami",
"enter_room": "Unirsi alla stanza" "enter_room": "Unirsi alla stanza",
"knock": "Bussa",
"enter_knock": "Chiedi di associarti"
}, },
"invite": { "invite": {
"title": "Aggiungi amici", "title": "Aggiungi amici",
@ -223,7 +225,9 @@
"message_retention_1_week": "1 settimana", "message_retention_1_week": "1 settimana",
"message_retention_2_week": "2 settimane", "message_retention_2_week": "2 settimane",
"report": "Segnala", "report": "Segnala",
"report_reason": "Motivo" "report_reason": "Motivo",
"accept_knock": "Accetto",
"reject_knock": "Nega"
}, },
"voice_recorder": { "voice_recorder": {
"failed_to_record": "Impossibile registrare laudio", "failed_to_record": "Impossibile registrare laudio",
@ -291,7 +295,10 @@
"close": "Chiudi", "close": "Chiudi",
"sending_progress": "Invio in corso...", "sending_progress": "Invio in corso...",
"sending": "Invio", "sending": "Invio",
"files": "Files" "files": "Files",
"quality": "Qualità",
"original": "Originale",
"learn_more": "Per saperne di più"
}, },
"getlink": { "getlink": {
"next": "Prossimo", "next": "Prossimo",

View file

@ -51,7 +51,8 @@
"room_info": { "room_info": {
"room_type_default": "លំនាំដើម", "room_type_default": "លំនាំដើម",
"message_retention_none": "បិទ", "message_retention_none": "បិទ",
"hide_all": "លាក់" "hide_all": "លាក់",
"accept_knock": "ព្រម​ទទួល"
}, },
"fallbacks": { "fallbacks": {
"download_name": "ទាញយក" "download_name": "ទាញយក"
@ -62,7 +63,8 @@
"poll_submit": "បញ្ជូន" "poll_submit": "បញ្ជូន"
}, },
"file_mode": { "file_mode": {
"close": "បិទ" "close": "បិទ",
"learn_more": "ស្វែងយល់បន្ថែម"
}, },
"message": { "message": {
"you": "អ្នក", "you": "អ្នក",
@ -70,5 +72,11 @@
"reply_video": "វីដេអូ", "reply_video": "វីដេអូ",
"file": "ឯកសារ", "file": "ឯកសារ",
"images": "រូបភាព" "images": "រូបភាព"
},
"leave": {
"go_back": "ត្រឡប់ក្រោយ"
},
"create": {
"room_type_channel_name": "ឆាណែល"
} }
} }

View file

@ -56,7 +56,7 @@
"info_auto_join": "بەخێر بێیت بۆ {room}.\nتۆ وەکوو {you} بەشداری دەکەیت.", "info_auto_join": "بەخێر بێیت بۆ {room}.\nتۆ وەکوو {you} بەشداری دەکەیت.",
"change": "گۆڕین" "change": "گۆڕین"
}, },
"export": { "room_export": {
"export_filename": "چەت لە {date} دەرهێنرا", "export_filename": "چەت لە {date} دەرهێنرا",
"exported_date": "لە {date} دەرهێنرا", "exported_date": "لە {date} دەرهێنرا",
"fetched_n_events": "{count} ڕووداو هێنرا", "fetched_n_events": "{count} ڕووداو هێنرا",
@ -344,7 +344,8 @@
"shared_room_number_more": "زیاتر لە {count} ژوور هاوبەش دەکەیت لەگەڵ {name}", "shared_room_number_more": "زیاتر لە {count} ژوور هاوبەش دەکەیت لەگەڵ {name}",
"message_history_warning": "ئاگاداری: بەشداربووانی نوێ دەتوانن مێژووی تەواوی پەیامەکان ببینن", "message_history_warning": "ئاگاداری: بەشداربووانی نوێ دەتوانن مێژووی تەواوی پەیامەکان ببینن",
"message_history": "مێژووی پەیام", "message_history": "مێژووی پەیام",
"report": "سکاڵا" "report": "سکاڵا",
"accept_knock": "پەسەندکردن"
}, },
"goodbye": { "goodbye": {
"room_deleted": "ژوورەکە سڕدرایەوە.", "room_deleted": "ژوورەکە سڕدرایەوە.",
@ -438,7 +439,9 @@
"files_sent_with_note": "1 فایل نێردرا بە تێبینیەکەوە! | {count} فایل نێردرا بە تێبینیەکەوە!", "files_sent_with_note": "1 فایل نێردرا بە تێبینیەکەوە! | {count} فایل نێردرا بە تێبینیەکەوە!",
"send_more_files": "فایلی زیاتر بنێرە", "send_more_files": "فایلی زیاتر بنێرە",
"close": "داخستن", "close": "داخستن",
"files": "فایلەکان" "files": "فایلەکان",
"original": "Eslî",
"learn_more": "Learn more"
}, },
"create": { "create": {
"room_type_channel_name": "کەناڵ" "room_type_channel_name": "کەناڵ"

View file

@ -222,7 +222,8 @@
"shared_room_number": "ທ່ານໄດ້ແບ່ງປັນ {count} ຫ້ອງກັບ {name}", "shared_room_number": "ທ່ານໄດ້ແບ່ງປັນ {count} ຫ້ອງກັບ {name}",
"shared_room_number_more": "ທ່ານໄດ້ແບ່ງປັນຫຼາຍກວ່າ {count} ຫ້ອງກັບ {name}", "shared_room_number_more": "ທ່ານໄດ້ແບ່ງປັນຫຼາຍກວ່າ {count} ຫ້ອງກັບ {name}",
"message_history": "ປະຫວັດການສົນທະນາ", "message_history": "ປະຫວັດການສົນທະນາ",
"message_history_warning": "ຄຳເຕືອນ: ຜູ້ເຂົ້າຮ່ວມໃໝ່ຈະສາມາດເບິ່ງປະຫວັດການສົນທະນາທັງໝົດໄດ້" "message_history_warning": "ຄຳເຕືອນ: ຜູ້ເຂົ້າຮ່ວມໃໝ່ຈະສາມາດເບິ່ງປະຫວັດການສົນທະນາທັງໝົດໄດ້",
"accept_knock": "ຍອມຮັບ"
}, },
"fallbacks": { "fallbacks": {
"download_name": "ດາວໂຫຼດ", "download_name": "ດາວໂຫຼດ",
@ -407,7 +408,7 @@
"poll_submit": "ສົ່ງ", "poll_submit": "ສົ່ງ",
"num_answered": "{count} ຄຳຕອບ" "num_answered": "{count} ຄຳຕອບ"
}, },
"export": { "room_export": {
"exported_date": "ສົ່ງອອກໃນວັນທີ {date}", "exported_date": "ສົ່ງອອກໃນວັນທີ {date}",
"fetched_n_events": "ໄດ້ຮັບ {count} ກິດຈະກຳ", "fetched_n_events": "ໄດ້ຮັບ {count} ກິດຈະກຳ",
"fetched_n_of_total_events": "ໄດ້ຮັບ {count}ຈາກ {total} ກິດຈະກຳ", "fetched_n_of_total_events": "ໄດ້ຮັບ {count}ຈາກ {total} ກິດຈະກຳ",

View file

@ -213,7 +213,8 @@
"limit_history_info": "{period} စာတိုများကို သိမ်းဆည်းထားပါ။", "limit_history_info": "{period} စာတိုများကို သိမ်းဆည်းထားပါ။",
"report_info": "အန္တရာယ်ရှိသော အကြောင်းအရာအတွက် ဤအခန်းကို သတင်းပို့ပါ။", "report_info": "အန္တရာယ်ရှိသော အကြောင်းအရာအတွက် ဤအခန်းကို သတင်းပို့ပါ။",
"report_reason": "အကြောင်းပြချက်", "report_reason": "အကြောင်းပြချက်",
"message_history_info": "မပါဝင်မီ လူများအား ပေးပို့ထားသော မက်ဆေ့ချ်များကို ကြည့်ရှုခွင့်ပေးပါ။" "message_history_info": "မပါဝင်မီ လူများအား ပေးပို့ထားသော မက်ဆေ့ချ်များကို ကြည့်ရှုခွင့်ပေးပါ။",
"accept_knock": "လက်ခံမည်"
}, },
"poll_create": { "poll_create": {
"failed": "စစ်တမ်း ဖန်တီး၍ မရပါ၊ နောက်မှ ထပ်မံကြိုးစားကြည့်ပါ။", "failed": "စစ်တမ်း ဖန်တီး၍ မရပါ၊ နောက်မှ ထပ်မံကြိုးစားကြည့်ပါ။",
@ -242,7 +243,7 @@
"num_answered": "အဖြေ {count}ခု", "num_answered": "အဖြေ {count}ခု",
"results_shared": "ရလဒ်များကို အခန်းသို့ မျှဝေခဲ့သည်။" "results_shared": "ရလဒ်များကို အခန်းသို့ မျှဝေခဲ့သည်။"
}, },
"export": { "room_export": {
"fetched_n_events": "ပွဲအစီအစဉ် {count} ခု ရရှိခဲ့သည်", "fetched_n_events": "ပွဲအစီအစဉ် {count} ခု ရရှိခဲ့သည်",
"fetched_n_of_total_events": "ပွဲအစီအစဉ် {total} တွင် {count} ခု ရရှိခဲ့သည်", "fetched_n_of_total_events": "ပွဲအစီအစဉ် {total} တွင် {count} ခု ရရှိခဲ့သည်",
"processed_n_of_total_events": "ပွဲအစီအစဉ် {total} တွင် {count} ခုအတွက် မီဒီယာကို စီမံဆောင်ရွက်ခဲ့သည်", "processed_n_of_total_events": "ပွဲအစီအစဉ် {total} တွင် {count} ခုအတွက် မီဒီယာကို စီမံဆောင်ရွက်ခဲ့သည်",
@ -451,7 +452,8 @@
"files_sent_with_note": "မှတ်စုနှင့် 1 ဖိုင် ပို့ပြီးပါပြီ | မှတ်စုနှင့် {count} ဖိုင် ပို့ပြီးပါပြီ", "files_sent_with_note": "မှတ်စုနှင့် 1 ဖိုင် ပို့ပြီးပါပြီ | မှတ်စုနှင့် {count} ဖိုင် ပို့ပြီးပါပြီ",
"send_more_files": "ဖိုင်များ ထပ်၍ပို့ရန်", "send_more_files": "ဖိုင်များ ထပ်၍ပို့ရန်",
"close": "ပိတ်မည်", "close": "ပိတ်မည်",
"files": "ဖိုင်များ" "files": "ဖိုင်များ",
"learn_more": "ထပ်မံလေ့လာမယ်"
}, },
"create": { "create": {
"room_type_room_name": "အဖွဲ့", "room_type_room_name": "အဖွဲ့",

View file

@ -83,7 +83,9 @@
"message_retention_1_hour": "Én time", "message_retention_1_hour": "Én time",
"read_only_room": "Skrivebeskyttet", "read_only_room": "Skrivebeskyttet",
"report": "Rapporter", "report": "Rapporter",
"report_reason": "Grunn" "report_reason": "Grunn",
"accept_knock": "Aksepter",
"reject_knock": "Nekt"
}, },
"goodbye": { "goodbye": {
"view_other_rooms": "Vis andre rom", "view_other_rooms": "Vis andre rom",
@ -95,7 +97,8 @@
"status_logging_in": "Logger inn …", "status_logging_in": "Logger inn …",
"status_joining": "Tar del i rom…", "status_joining": "Tar del i rom…",
"user_name_label": "Brukernavn", "user_name_label": "Brukernavn",
"remember_me": "Husk meg" "remember_me": "Husk meg",
"knock": "Bank på"
}, },
"profile_info_popup": { "profile_info_popup": {
"identity_temporary": "{displayName}", "identity_temporary": "{displayName}",
@ -206,7 +209,10 @@
"sending_progress": "Sender…", "sending_progress": "Sender…",
"sending": "Sender", "sending": "Sender",
"close": "Lukk", "close": "Lukk",
"files": "Filer" "files": "Filer",
"quality": "Kvalitet",
"original": "Original",
"learn_more": "Lær mer"
}, },
"emoji": { "emoji": {
"categories": { "categories": {

View file

@ -395,7 +395,8 @@
"shared_room_number": "تاسې له {name} سره {count} خونې شریکې کړي دي", "shared_room_number": "تاسې له {name} سره {count} خونې شریکې کړي دي",
"shared_room_number_more": "تاسې له {name} سره له {count} زیاتې خونې شریکې کړي دي", "shared_room_number_more": "تاسې له {name} سره له {count} زیاتې خونې شریکې کړي دي",
"message_history": "د پیغام تاریخچه", "message_history": "د پیغام تاریخچه",
"message_history_warning": "خبرداری: د پیغام بشپړه تاریخچه به نویو ګډونوالو ته د لیدلو وړ وي" "message_history_warning": "خبرداری: د پیغام بشپړه تاریخچه به نویو ګډونوالو ته د لیدلو وړ وي",
"accept_knock": "منل"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "دغه خونه", "this_room": "دغه خونه",
@ -421,7 +422,7 @@
"original_text": "<original text>", "original_text": "<original text>",
"download_name": "ډانلوډ" "download_name": "ډانلوډ"
}, },
"export": { "room_export": {
"exported_date": "{date} نېټه خروجې اخیستل شوې ده", "exported_date": "{date} نېټه خروجې اخیستل شوې ده",
"fetched_n_events": "{count} پېښې بېرته تر لاسه شوې دي", "fetched_n_events": "{count} پېښې بېرته تر لاسه شوې دي",
"fetched_n_of_total_events": "له {total} پېښو څخه {count} یې بېرته تر لاسه شوې دي", "fetched_n_of_total_events": "له {total} پېښو څخه {count} یې بېرته تر لاسه شوې دي",

View file

@ -257,7 +257,8 @@
"choose_name": "Escolha um nome para usar", "choose_name": "Escolha um nome para usar",
"you_have_been_banned": "Você foi banido desta sala.", "you_have_been_banned": "Você foi banido desta sala.",
"accept_ua": "Eu concordo com o {agreement}", "accept_ua": "Eu concordo com o {agreement}",
"ua": "contrato de serviço do usuário" "ua": "contrato de serviço do usuário",
"knock": "Bater na porta"
}, },
"leave": { "leave": {
"title_public": "Adeus, {user}", "title_public": "Adeus, {user}",
@ -338,7 +339,9 @@
"message_history_info": "Permitir que as pessoas vejam as mensagens enviadas antes de se associarem", "message_history_info": "Permitir que as pessoas vejam as mensagens enviadas antes de se associarem",
"report": "Relatório", "report": "Relatório",
"report_reason": "Motivo", "report_reason": "Motivo",
"report_info": "Denunciar esta sala aos administradores do serviço por conteúdo ilegal, abusivo ou prejudicial" "report_info": "Denunciar esta sala aos administradores do serviço por conteúdo ilegal, abusivo ou prejudicial",
"accept_knock": "Aceite",
"reject_knock": "Negar"
}, },
"room_info_sheet": { "room_info_sheet": {
"this_room": "Esta sala", "this_room": "Esta sala",
@ -385,7 +388,7 @@
"view_results": "Ver os resultados", "view_results": "Ver os resultados",
"results_shared": "Resultados compartilhados com a sala." "results_shared": "Resultados compartilhados com a sala."
}, },
"export": { "room_export": {
"exported_date": "Foi exportado em {date}", "exported_date": "Foi exportado em {date}",
"fetched_n_events": "{count} eventos buscados", "fetched_n_events": "{count} eventos buscados",
"fetched_n_of_total_events": "Obteve {count} de {total} eventos", "fetched_n_of_total_events": "Obteve {count} de {total} eventos",
@ -417,7 +420,11 @@
"any_file_format_accepted": "Qualquer formato de arquivo é aceito", "any_file_format_accepted": "Qualquer formato de arquivo é aceito",
"files": "Arquivos", "files": "Arquivos",
"close": "Fechar", "close": "Fechar",
"send_more_files": "Enviar mais arquivos" "send_more_files": "Enviar mais arquivos",
"quality": "Qualidade",
"original": "Original",
"content_credentials": "Credenciais do conteúdo",
"learn_more": "Saiba mais"
}, },
"notification": { "notification": {
"title": "Uma nova mensagem foi recebida", "title": "Uma nova mensagem foi recebida",

View file

@ -1,25 +1,25 @@
{ {
"new_room": { "new_room": {
"options": "Opções", "options": "Opções",
"title": "Novo bate-papo em grupo", "title": "Nova Conversação de Grupo",
"new_room": "Nova sala", "new_room": "Nova Sala",
"create": "Criar", "create": "Criar",
"next": "Próximo", "next": "Seguinte",
"name_room": "Nome da sala", "name_room": "Nome da sala",
"room_topic": "Se desejar, adicione uma descrição", "room_topic": "Se desejar, adicione uma descrição",
"join_permissions": "Permissões de bilhete", "join_permissions": "Permissões de adesão",
"set_join_permissions": "Defina as permissões de bilhete", "set_join_permissions": "Defina as Permissões de Adesão",
"get_link": "Obter a ligação", "get_link": "Obter a hiperligação",
"join_permissions_info": "Estas permissões determinam como as pessoas podem entrar na sala e com que facilidade as outras pessoas podem ser convidadas. Eles podem ser alteradas a qualquer momento.", "join_permissions_info": "Estas permissões determinam como as pessoas podem junstar-se na sala e com que facilidade as outras pessoas podem ser convidadas. Estas podem ser alteradas a qualquer momento.",
"add_people": "Adicionar pessoas", "add_people": "Adicionar pessoas",
"link_copied": "Ligação copiada!", "link_copied": "Hiperligação copiada!",
"public_info": "Qualquer pessoa com uma ligação", "public_info": "Qualquer pessoa com uma hiperligação",
"public_description": "Obtenha uma ligação para partilhar", "public_description": "Obtenha uma hiperligação para partilhar",
"invite_info": "Apenas pessoas que foram adicionadas", "invite_info": "Apenas as pessoas adicionadas",
"invite_description": "Escolha numa lista ou busque pelo ID da conta", "invite_description": "Escolha de uma lista ou procure pela Id. da conta",
"status_creating": "A criar a sala", "status_creating": "A criar a sala",
"status_avatar": "A enviar avatar", "status_avatar": "A enviar avatar",
"room_name_limit_error_msg": "O máximo de 50 caracteres são permitidos", "room_name_limit_error_msg": "Permitido o máximo de 50 carateres",
"colon_not_allowed": "Dois pontos não são permitidos" "colon_not_allowed": "Dois pontos não são permitidos"
}, },
"getlink": { "getlink": {
@ -51,7 +51,8 @@
"password_repeat": "Repita a nova palavra-passe", "password_repeat": "Repita a nova palavra-passe",
"display_name": "Nome de exibição", "display_name": "Nome de exibição",
"display_name_required": "O nome de exibição é obrigatório", "display_name_required": "O nome de exibição é obrigatório",
"notification_label": "Notificação" "notification_label": "Notificação",
"my_rooms": "Minhas salas"
}, },
"room_info": { "room_info": {
"message_retention_8_hours": "8 horas", "message_retention_8_hours": "8 horas",
@ -104,7 +105,9 @@
"message_history_warning": "aviso: o histórico completo das mensagens ficará visível para os novos participantes", "message_history_warning": "aviso: o histórico completo das mensagens ficará visível para os novos participantes",
"report": "Relatório", "report": "Relatório",
"report_info": "Denunciar esta sala aos administradores do serviço por conteúdo ilegal, abusivo ou prejudicial", "report_info": "Denunciar esta sala aos administradores do serviço por conteúdo ilegal, abusivo ou prejudicial",
"report_reason": "Motivo" "report_reason": "Motivo",
"accept_knock": "Aceitar",
"reject_knock": "Recusar"
}, },
"notification": { "notification": {
"dialog": { "dialog": {
@ -142,7 +145,11 @@
"files_sent": "1 ficheiro enviado! | {count} ficheiros enviados!", "files_sent": "1 ficheiro enviado! | {count} ficheiros enviados!",
"send_more_files": "Enviar mais ficheiros", "send_more_files": "Enviar mais ficheiros",
"close": "Fechar", "close": "Fechar",
"files": "Ficheiros" "files": "Ficheiros",
"quality": "Qualidade",
"original": "Original",
"content_credentials": "Credenciais do conteúdo",
"learn_more": "Saber mais"
}, },
"fallbacks": { "fallbacks": {
"download_name": "Descarregar", "download_name": "Descarregar",
@ -153,110 +160,110 @@
"language_display_name": "Inglês", "language_display_name": "Inglês",
"project": { "project": {
"name": "Convocar", "name": "Convocar",
"tag_line": "Basta conectar" "tag_line": "Basta ligar"
}, },
"global": { "global": {
"save": "Gravar", "save": "Guardar",
"password_didnot_match": "A palavra-passe não coincidiu", "password_didnot_match": "A palavra-passe não coincidiu",
"password_hint": "Mínimo de 12 caracteres contendo pelo menos um número, uma maiúscula e uma minúscula", "password_hint": "Mínimo de 12 carateres contendo pelo menos um número, uma letra maiúscula e uma minúscula",
"show_less": "Mostrar menos", "show_less": "Mostrar menos",
"show_more": "Mostrar mais", "show_more": "Mostrar mais",
"add_reaction": "Adicionar reação", "add_reaction": "Adicionar reação",
"click_to_remove": "Clique para remover", "click_to_remove": "Clique para remover",
"time": { "time": {
"recently": "agora mesmo", "recently": "agora mesmo",
"minutes": "1 minuto atrás | {n} minutos atrás", "minutes": "à 1 minuto |à {n} minutos",
"hours": "1 hora atrás | {n} horas atrás", "hours": "à 1 hora |à {n} horas",
"days": "1 dia atrás | {n} dias atrás" "days": "à 1 dia | à {n} dias"
}, },
"close": "fechar", "close": "fechar",
"notify": "Notificação", "notify": "Notificar",
"different_browser_title": "Tente um navegador diferente", "different_browser_title": "Tente um navegador diferente",
"different_browser_content": "Alguns recursos podem ser interrompidos. Copie e abra a ligação num navegador diferente." "different_browser_content": "Algumas funcionalidades podem ester com problemas. Copie e abra a hiperligação num navegador diferente."
}, },
"menu": { "menu": {
"start_private_chat": "Bate-papo privado com este utilizador", "start_private_chat": "Mensagem Direta com este utilizador",
"direct_chat": "Conversa direta", "direct_chat": "Conversação direta",
"reply": "Responder", "reply": "Responder",
"edit": "Editar", "edit": "Editar",
"delete": "Apagar", "delete": "Eliminar",
"download": "Descarregar", "download": "Transferir",
"ok": "OK", "ok": "OK",
"done": "Feito", "done": "Concluído",
"cancel": "Cancela", "cancel": "Cancelar",
"send": "Envia", "send": "Enviar",
"back": "RETORNA", "back": "ANTERIOR",
"login": "Entrar", "login": "Iniciar sessão",
"logout": "Sair", "logout": "Terminar sessão",
"new_room": "Nova sala", "new_room": "Nova Sala",
"undo": "Desfazer", "undo": "Anular",
"delete_now": "Apagar agora", "delete_now": "Eliminar agora",
"join": "Entrar", "join": "Aderir",
"ignore": "Ignore", "ignore": "Ignorar",
"loading": "A carregar {appName}", "loading": "A carregar {appName}",
"user_kick_and_ban": "Expulsar", "user_kick_and_ban": "Expulsar",
"user_make_admin": "Tornar admin", "user_make_admin": "Tornar administrador",
"user_make_moderator": "Tornar moderador", "user_make_moderator": "Tornar moderador",
"user_revoke_moderator": "Revogar moderador", "user_revoke_moderator": "Revogar moderador",
"pin": "Fixar post", "pin": "Afixar publicação",
"unpin": "Desafixar post" "unpin": "Desafixar publicação"
}, },
"message": { "message": {
"you": "Você", "you": "Você",
"user_created_room": "{user} criou a sala", "user_created_room": "{user} criou a sala",
"user_aliased_room": "{user} criou o codinome da sala {alias}", "user_aliased_room": "{user} criou o pseudónimo da sala {alias}",
"user_changed_display_name": "{user} alterou o nome de exibição para {displayName}", "user_changed_display_name": "{user} alterou o nome de exibição para {displayName}",
"user_changed_avatar": "{user} alterou o avatar", "user_changed_avatar": "{user} alterou o avatar",
"user_changed_room_avatar": "{user} alterou o avatar da sala", "user_changed_room_avatar": "{user} alterou o avatar da sala",
"user_encrypted_room": "{user} criptografou a sala", "user_encrypted_room": "{user} encriptou a sala",
"user_was_invited": "{user} foi convidado para a conversa...", "user_was_invited": "{user} foi convidado para a conversação...",
"user_was_kicked": "{user} foi expulso do chat.", "user_was_kicked": "{user} foi expulso da conversação.",
"user_was_kicked_by_you": "Expulsou {user} do chat.", "user_was_kicked_by_you": "Você expulsou {user} da conversação.",
"user_was_kicked_you": "Foi expulso do chat.", "user_was_kicked_you": "Você foi expulso da conversação.",
"user_was_banned": "{user} foi expulso e banido do chat.", "user_was_banned": "{user} foi expulso e banido da conversação.",
"user_was_banned_by_you": "Expulsou e baniu {user} do chat.", "user_was_banned_by_you": "Você expulsou e baniu {user} da conversação.",
"user_was_banned_you": "Foi expulso e banido do chat.", "user_was_banned_you": "Você foi expulso e banido da conversação.",
"user_joined": "{user} entrou no chat", "user_joined": "{user} juntou-se à conversação",
"user_left": "{user} saiu do chat", "user_left": "{user} saiu da conversação",
"someone": "Alguém", "someone": "Alguém",
"user_said": "{user} disse:", "user_said": "{user} disse:",
"sent_media": "Enviou {count} elementos de média.", "sent_media": "Enviou {count} elementos de multimédia.",
"file_prefix": "Ficheiro: ", "file_prefix": "Ficheiro: ",
"edited": "(editado)", "edited": "(editado)",
"download_progress": "{percentage}% descarregado", "download_progress": "{percentage}% transferido",
"preparing_to_upload": "A preparar para enviar...", "preparing_to_upload": "A preparar para enviar...",
"upload_file_too_large": "O ficheiro é grande demais para ser enviado!", "upload_file_too_large": "O ficheiro é muito grande para ser enviado!",
"upload_exceeded_file_limit": "O tamanho máximo do ficheiro ({configFormattedUploadSize}) foi excedido. ", "upload_exceeded_file_limit": "Foi excedido o tamanho máximo do ficheiro ({configFormattedUploadSize}). ",
"upload_progress": "Carregado {count}", "upload_progress": "Enviado {count}",
"upload_progress_with_total": "Enviado {count} de {total}", "upload_progress_with_total": "Enviado {count} de {total}",
"user_changed_room_history": "{user} fez o histórico da sala {type}", "user_changed_room_history": "{user} tornou o histórico da sala {type}",
"room_history_world_readable": "legível por qualquer pessoa", "room_history_world_readable": "legível por qualquer pessoa",
"room_history_shared": "legível para todos os membros da sala", "room_history_shared": "legível para todos os membros da sala",
"room_history_invited": "legível para os membros a partir do momento em que foram convidados", "room_history_invited": "legível para os membros a partir do momento em que foram convidados",
"room_history_joined": "legível para os membros a partir de quando eles aderiram", "room_history_joined": "legível para os membros a partir do momento em que eles aderiram",
"user_changed_join_rules": "{user} criou a sala {type}", "user_changed_join_rules": "{user} criou a sala {type}",
"room_joinrule_invite": "através de convite apenas", "room_joinrule_invite": "convite apenas",
"room_joinrule_public": "público", "room_joinrule_public": "público",
"user_changed_room_name": "{user} alterou o nome da sala para {name}", "user_changed_room_name": "{user} alterou o nome da sala para {name}",
"user_changed_room_topic": "{user} alterou o assunto da sala para {topic}", "user_changed_room_topic": "{user} alterou o tópico da sala para {topic}",
"unread_messages": "Mensagens não lidas", "unread_messages": "Mensagens não lidas",
"replying_to": "{user}", "replying_to": "A responder a {user}",
"your_message": "A sua mensagem...", "your_message": "A sua mensagem...",
"scale_image": "Escala da imagem", "scale_image": "Dimensionar imagem",
"user_is_typing": "{user} está a digitar", "user_is_typing": "{user} está a digitar",
"users_are_typing": "{count} membros estão digitando", "users_are_typing": "{count} membros estão a digitar",
"room_powerlevel_change": "{user} alterou o nível de {changes}", "room_powerlevel_change": "{user} alterou o nível de {changes}",
"user_powerlevel_change_from_to": "{user} de {powerOld} para {powerNew}", "user_powerlevel_change_from_to": "{user} de {powerOld} para {powerNew}",
"user_changed_guest_access_closed": "{user} não permitiu que os convidados entrassem na sala", "user_changed_guest_access_closed": "{user} não permitiu que os convidados entrassem na sala",
"user_changed_guest_access_open": "{user} permitiu que convidados entrassem na sala", "user_changed_guest_access_open": "{user} permitiu que os convidados entrassem na sala",
"reply_image": "Imagem", "reply_image": "Imagem",
"reply_audio_message": "Mensagem de áudio", "reply_audio_message": "Mensagem de áudio",
"reply_video": "Vídeo", "reply_video": "Vídeo",
"reply_poll": "Enquete", "reply_poll": "Sondagem",
"time_ago": "Hoje | Ontem | {count} dias atrás", "time_ago": "Hoje | Ontem |á {count} dias",
"outgoing_message_deleted_text": "Apagou esta mensagem.", "outgoing_message_deleted_text": "Você eliminou esta mensagem.",
"incoming_message_deleted_text": "Esta mensagem foi apagada.", "incoming_message_deleted_text": "Esta mensagem foi eliminada.",
"not_allowed_to_send": "Apenas administradores e moderadores podem postar na sala", "not_allowed_to_send": "Apenas os administradores e os moderadores estão autorizados a enviar para a sala",
"reaction_count_more": "{reactionCount} mais", "reaction_count_more": "{reactionCount} mais",
"seen_by_count": "Visto por nenhum membro | Visto por 1 membro | Visto por {count} membros", "seen_by_count": "Visto por nenhum membro | Visto por 1 membro | Visto por {count} membros",
"seen_by": "Visto por", "seen_by": "Visto por",
@ -264,18 +271,18 @@
"files": "Ficheiros", "files": "Ficheiros",
"images": "Imagens", "images": "Imagens",
"send_attachements_dialog_title": "Deseja enviar os seguintes anexos?", "send_attachements_dialog_title": "Deseja enviar os seguintes anexos?",
"download_all": "Descarregar tudo", "download_all": "Transferir tudo",
"failed_to_render": "Houve uma falha ao renderizar o evento" "failed_to_render": "Não foi possível renderizar o evento"
}, },
"room": { "room": {
"invitations": "Não tem convites | Tem 1 convite | Tem {count} convites", "invitations": "Não tem convites | Tem 1 convite | Tem {count} convites",
"unseen_messages": "Não possui mensagens não lidas | Tem 1 mensagem não lida | Tem {count} mensagens não lidas", "unseen_messages": "Não tem mensagens não lidas | Tem 1 mensagem não lida | Tem {count} mensagens não lidas",
"members": "sem membros | 1 membro | {count} membros", "members": "sem membros | 1 membro | {count} membros",
"leave": "Sair", "leave": "Sair",
"purge_set_room_state": "A configurar o estado da sala", "purge_set_room_state": "A configurar o estado da sala",
"purge_redacting_events": "A redigir eventos ({count} de {total})", "purge_redacting_events": "A redigir eventos ({count} de {total})",
"purge_removing_members": "A remover membros ({count} de {total})", "purge_removing_members": "A remover membros ({count} de {total})",
"purge_failed": "Houve uma falha ao eliminar a sala!", "purge_failed": "Não foi possível pugar a sala!",
"room_list_invites": "Convites", "room_list_invites": "Convites",
"room_list_new_messages": "{count} novas mensagens", "room_list_new_messages": "{count} novas mensagens",
"room_list_rooms": "Salas", "room_list_rooms": "Salas",
@ -284,21 +291,21 @@
}, },
"room_welcome": { "room_welcome": {
"info": "Bem-vindo! Aqui estão algumas coisas que deve saber sobre a sua sala:", "info": "Bem-vindo! Aqui estão algumas coisas que deve saber sobre a sua sala:",
"encrypted": "As mensagens são criptografadas de ponta a ponta.", "encrypted": "As mensagens são encriptadas de ponta a ponta.",
"room_history_is": "O histórico da sala é {type}.", "room_history_is": "O histórico da sala é {type}.",
"room_history_joined": "As pessoas só podem ver as mensagens enviadas após entrarem.", "room_history_joined": "As pessoas só podem ver as mensagens enviadas depois de se juntarem.",
"join_public": "Qualquer pessoa pode participar abrindo esta ligação: {link}.", "join_public": "Qualquer pessoa pode participar abrindo esta hiperligação: {link}.",
"join_invite": "Apenas as pessoas que convidar podem participar.", "join_invite": "Só podem participar as pessoas que convidar.",
"info_permissions": "Pode alterar as \"permissões de participação\" a qualquer momento nas configurações da sala.", "info_permissions": "Pode alterar as \"permissões de participação\" em qualquer momento nas definições da sala.",
"got_it": "Percebi", "got_it": "Percebi",
"no_past_messages": "Bem-vindo! Para a sua segurança, as mensagens anteriores não estão disponíveis.", "no_past_messages": "Bem-vindo! Para a sua segurança, as mensagens anteriores não estão disponíveis.",
"direct_info": "Olá {you}. Está num chat privado com {user}.", "direct_info": "Olá {you}. Está numa conversação privada com {user}.",
"direct_private_chat": "Mensagem direta", "direct_private_chat": "Mensagem Direta",
"join_channel": "Tudo pronto! Convide pessoas para se juntarem a si: {link}", "join_channel": "Tudo pronto! Convide pessoas para se juntarem a si: {link}",
"info_retention": "🕓 As mensagens enviadas dentro de {time} podem ser visualizadas por qualquer pessoa com a ligação.", "info_retention": "🕓 As mensagens enviadas dentro de {time} podem ser visualizadas por qualquer pessoa com a hiperligação.",
"info_retention_user": "As mensagens mais antigas que {time} serão apagadas do histórico.", "info_retention_user": "As mensagens mais antigas que {time} serão eliminadas do histórico.",
"info_auto_join": "Bem-vindo à {room}.\nEstá entrando como {you}.", "info_auto_join": "Bem-vindo à {room}.\nEstá a juntar-se como {you}.",
"change": "Mudança" "change": "Alterar"
}, },
"device_list": { "device_list": {
"blocked": "Bloqueado", "blocked": "Bloqueado",
@ -381,7 +388,8 @@
"choose_name": "Escolha um nome para usar", "choose_name": "Escolha um nome para usar",
"accept_ua": "Concordo com o {agreement}", "accept_ua": "Concordo com o {agreement}",
"you_have_been_banned": "Foi banido desta sala.", "you_have_been_banned": "Foi banido desta sala.",
"ua": "contrato de serviço do utilizador" "ua": "contrato de serviço do utilizador",
"enter_knock": "Solic. participa."
}, },
"invite": { "invite": {
"title": "Adiciona amigos", "title": "Adiciona amigos",
@ -463,7 +471,7 @@
"num_answered": "{count} respostas", "num_answered": "{count} respostas",
"results_shared": "Resultados partilhados com a sala." "results_shared": "Resultados partilhados com a sala."
}, },
"export": { "room_export": {
"exported_date": "Foi exportado em {date}", "exported_date": "Foi exportado em {date}",
"fetched_n_events": "{count} eventos buscados", "fetched_n_events": "{count} eventos buscados",
"fetched_n_of_total_events": "Obteve {count} de {total} eventos", "fetched_n_of_total_events": "Obteve {count} de {total} eventos",

View file

@ -66,7 +66,11 @@
"message_retention_1_hour": "O oră", "message_retention_1_hour": "O oră",
"message_retention_8_hours": "8 ore", "message_retention_8_hours": "8 ore",
"report": "Raportați", "report": "Raportați",
"report_reason": "Motiv" "report_reason": "Motiv",
"message_retention_2_week": "2 săptămâni",
"message_retention_1_week": "O săptămână",
"accept_knock": "Acceptă",
"reject_knock": "Interzice"
}, },
"goodbye": { "goodbye": {
"view_other_rooms": "Vezi alte camere", "view_other_rooms": "Vezi alte camere",
@ -240,7 +244,8 @@
"files": "Fișiere", "files": "Fișiere",
"images": "Imagini", "images": "Imagini",
"file": "Fişier", "file": "Fişier",
"download_all": "Descărcați tot" "download_all": "Descărcați tot",
"someone": "Cineva"
}, },
"language_display_name": "Engleză", "language_display_name": "Engleză",
"fallbacks": { "fallbacks": {
@ -280,7 +285,10 @@
"file_mode": { "file_mode": {
"sending_progress": "Se trimite...", "sending_progress": "Se trimite...",
"close": "Închideți", "close": "Închideți",
"files": "Fișiere" "files": "Fișiere",
"quality": "Calitate",
"original": "Original",
"learn_more": "Află mai mult"
}, },
"notification": { "notification": {
"dialog": { "dialog": {

View file

@ -69,7 +69,9 @@
"message_history": "История сообщений", "message_history": "История сообщений",
"message_history_warning": "предупреждение: Вся история сообщений будет доступна новым участникам", "message_history_warning": "предупреждение: Вся история сообщений будет доступна новым участникам",
"report_reason": "Причина", "report_reason": "Причина",
"report": "Сообщить об ошибке" "report": "Сообщить об ошибке",
"accept_knock": "Принять",
"reject_knock": "Запретить"
}, },
"file_mode": { "file_mode": {
"sending": "Отправка", "sending": "Отправка",
@ -82,7 +84,10 @@
"secure_file_send": "безопасная отправка файлов", "secure_file_send": "безопасная отправка файлов",
"add_a_message": "Добавить сообщение", "add_a_message": "Добавить сообщение",
"files_sent_with_note": "Отправлен 1 файл с примечанием! | Отправлены {count} файлов с примечанием!", "files_sent_with_note": "Отправлен 1 файл с примечанием! | Отправлены {count} файлов с примечанием!",
"choose_files": "Выбрать файлы" "choose_files": "Выбрать файлы",
"quality": "Качество",
"original": "Оригинал",
"learn_more": "Узнать больше"
}, },
"global": { "global": {
"save": "Сохранить", "save": "Сохранить",
@ -324,7 +329,9 @@
"status_joining": "Присоединение к комнате...", "status_joining": "Присоединение к комнате...",
"join_failed": "Не удалось присоединиться к комнате.", "join_failed": "Не удалось присоединиться к комнате.",
"choose_name": "Выберите себе имя", "choose_name": "Выберите себе имя",
"status_logging_in": "Вход…" "status_logging_in": "Вход…",
"knock": "Постучаться",
"enter_knock": "Вступить"
}, },
"leave": { "leave": {
"title_invite": "Вы уверены, что хотите выйти?", "title_invite": "Вы уверены, что хотите выйти?",
@ -434,7 +441,7 @@
"channel_topic": "Опишите его", "channel_topic": "Опишите его",
"error_channel": "Не удалось создать канал" "error_channel": "Не удалось создать канал"
}, },
"export": { "room_export": {
"fetched_n_events": "Найдено {count} событий", "fetched_n_events": "Найдено {count} событий",
"fetched_n_of_total_events": "Получено {count} из {total} событий", "fetched_n_of_total_events": "Получено {count} из {total} событий",
"export_filename": "Экспортированный чат {date}", "export_filename": "Экспортированный чат {date}",

View file

@ -39,7 +39,8 @@
"message_retention_none": "ඕෆ් කරන්න", "message_retention_none": "ඕෆ් කරන්න",
"message_retention_1_day": "දවස් 1", "message_retention_1_day": "දවස් 1",
"members": "සාමාජිකයන්", "members": "සාමාජිකයන්",
"report": "වාර්තා කරන්න" "report": "වාර්තා කරන්න",
"accept_knock": "පිළිගන්න"
}, },
"leave": { "leave": {
"go_back": "Go back", "go_back": "Go back",
@ -106,12 +107,15 @@
"emoji": { "emoji": {
"categories": { "categories": {
"flags": "කොඩි", "flags": "කොඩි",
"activity": "ක්‍රියාකාරිත්වය" "activity": "ක්‍රියාකාරිත්වය",
"places": "ස්ථාන"
} }
}, },
"file_mode": { "file_mode": {
"close": "වසන්න", "close": "වසන්න",
"files": "ගොනු" "files": "ගොනු",
"quality": "ගුණත්වය",
"learn_more": "වැඩිමනත් තොරතුරු"
}, },
"notification": { "notification": {
"dialog": { "dialog": {

View file

@ -174,7 +174,10 @@
"any_file_format_accepted": "Tüm dosya türleri kabul edilmektedir", "any_file_format_accepted": "Tüm dosya türleri kabul edilmektedir",
"send_more_files": "Daha fazla dosya gönder", "send_more_files": "Daha fazla dosya gönder",
"files_sent": "1 dosya gönderildi! | {count} dosya gönderildi!", "files_sent": "1 dosya gönderildi! | {count} dosya gönderildi!",
"files_sent_with_note": "1 dosya not ile birlikte gönderildi! | {count} dosya not ile birlikte gönderildi!" "files_sent_with_note": "1 dosya not ile birlikte gönderildi! | {count} dosya not ile birlikte gönderildi!",
"quality": "Kodlama",
"original": "Orijinal",
"learn_more": "Daha fazla bilgi edin"
}, },
"room": { "room": {
"leave": "Ayrıl", "leave": "Ayrıl",
@ -260,7 +263,8 @@
"status_joining": "Odaya katılınıyor...", "status_joining": "Odaya katılınıyor...",
"join_failed": "Odaya katılınamadı.", "join_failed": "Odaya katılınamadı.",
"choose_name": "Kullanacağınız ismi seçin", "choose_name": "Kullanacağınız ismi seçin",
"you_have_been_banned": "Bu odadan yasaklandınız." "you_have_been_banned": "Bu odadan yasaklandınız.",
"knock": "Tıklat"
}, },
"invite": { "invite": {
"done": "Bitti", "done": "Bitti",
@ -337,7 +341,9 @@
"message_history": "İleti Geçmişi", "message_history": "İleti Geçmişi",
"message_history_warning": "uyarı: Tüm ileti geçmişi yeni katılımcılara görünür olacaktır", "message_history_warning": "uyarı: Tüm ileti geçmişi yeni katılımcılara görünür olacaktır",
"report": "Rapor", "report": "Rapor",
"report_reason": "Sebep" "report_reason": "Sebep",
"accept_knock": "Kabul et",
"reject_knock": "Reddet"
}, },
"room_info_sheet": { "room_info_sheet": {
"view_details": "Ayrıntıları görüntüle", "view_details": "Ayrıntıları görüntüle",
@ -434,7 +440,7 @@
"close_tab": "Tarayıcı sekmesini kapat", "close_tab": "Tarayıcı sekmesini kapat",
"view_other_rooms": "Diğer odaları görüntüle" "view_other_rooms": "Diğer odaları görüntüle"
}, },
"export": { "room_export": {
"exported_date": "{date} tarihinde dışarı aktarıldı", "exported_date": "{date} tarihinde dışarı aktarıldı",
"fetched_n_events": "{count} eylem toplandı", "fetched_n_events": "{count} eylem toplandı",
"fetched_n_of_total_events": "{total} eylemden {count}tanesi toplandı", "fetched_n_of_total_events": "{total} eylemden {count}tanesi toplandı",

View file

@ -122,7 +122,8 @@
"room_history_joined": "ئەزالارقوشۇلغاندىن كېيىنلا ئەۋەتىلگەن ئۇچۇرلارنى كۆرەلەيدۇ.", "room_history_joined": "ئەزالارقوشۇلغاندىن كېيىنلا ئەۋەتىلگەن ئۇچۇرلارنى كۆرەلەيدۇ.",
"room_history_is": "مۇنازىرەخانا تارىخى {type}.", "room_history_is": "مۇنازىرەخانا تارىخى {type}.",
"encrypted": "ئۇچۇرلار ئاخىرىغىچە مەخپىيلەشتۈرۈلگەن.", "encrypted": "ئۇچۇرلار ئاخىرىغىچە مەخپىيلەشتۈرۈلگەن.",
"info": "خۇش كەپسىز! مۇنازىرەخانا ھەققىدە بىلىشكە تېگىشلىك بىر قانچە ئىش:" "info": "خۇش كەپسىز! مۇنازىرەخانا ھەققىدە بىلىشكە تېگىشلىك بىر قانچە ئىش:",
"change": "ئۆزگەرت"
}, },
"fallbacks": { "fallbacks": {
"download_name": "چۈشۈرۈش", "download_name": "چۈشۈرۈش",
@ -167,7 +168,8 @@
"title": "ياتاق تەپسىلاتلىرى", "title": "ياتاق تەپسىلاتلىرى",
"room_type_default": "كۆڭۈلدىكى", "room_type_default": "كۆڭۈلدىكى",
"message_retention_none": "تاقاق", "message_retention_none": "تاقاق",
"message_retention_8_hours": "8 سائەت" "message_retention_8_hours": "8 سائەت",
"accept_knock": "قوشۇل"
}, },
"goodbye": { "goodbye": {
"view_other_rooms": "باشقا ئۆيلەرنى كۆرۈڭ", "view_other_rooms": "باشقا ئۆيلەرنى كۆرۈڭ",
@ -242,7 +244,9 @@
}, },
"file_mode": { "file_mode": {
"close": "يېپىش", "close": "يېپىش",
"files": "ھۆججەت" "files": "ھۆججەت",
"quality": "سۈپىتى",
"learn_more": "مول بىلىم"
}, },
"getlink": { "getlink": {
"next": "كېيىنكى", "next": "كېيىنكى",

View file

@ -0,0 +1,510 @@
{
"global": {
"time": {
"days": "1 день тому | {n} днів тому",
"recently": "щойно",
"minutes": "1 хвилину тому | {n} хвилин тому",
"hours": "1 годину тому | {n} годин тому"
},
"close": "закрити",
"different_browser_title": "Спробуйте інший браузер",
"different_browser_content": "Деякі функції можуть не працювати. Скопіюйте та відкрийте посилання в іншому браузері.",
"save": "Зберегти",
"password_didnot_match": "Пароль не збігався",
"password_hint": "Мінімум 12 символів, що містять щонайменше одну цифру, одну велику та одну малу літеру",
"add_reaction": "Додати реакцію",
"click_to_remove": "Натисніть, щоб видалити",
"show_less": "Показувати менше",
"show_more": "Показати більше",
"notify": "Повідомити"
},
"menu": {
"start_private_chat": "Пряме повідомлення з цим користувачем",
"direct_chat": "Прямий чат",
"reply": "Відповідь",
"back": "НАЗАД",
"new_room": "Нова кімната",
"delete_now": "Видалити зараз",
"loading": "Завантаження {appName}",
"user_revoke_moderator": "Відкликати модератора",
"pin": "Закріпити публікацію",
"unpin": "Відкріпити публікацію",
"cancel_knock": "Скасувати стукіт",
"edit": "Редагувати",
"delete": "Вилучити",
"download": "Завантажити",
"ok": "Гаразд",
"done": "Готово",
"cancel": "Скасувати",
"send": "Надіслати",
"login": "Увійдіть",
"logout": "Вихід",
"undo": "Відмініти",
"join": "Приєднуйтесь",
"ignore": "Ігнорувати",
"user_kick_and_ban": "Вилучити",
"user_make_admin": "Зробити адміном",
"user_make_moderator": "Зробити модератором",
"user_revoke_admin": "Відкинути адміністратора",
"upgrade": "Оновлення"
},
"language_display_name": "Англійська",
"project": {
"name": "Скликати",
"tag_line": ",Просто підключіться"
},
"message": {
"you": "Ви",
"user_created_room": "{user} створив кімнату",
"user_aliased_room": "{user} зробив кімнату псевдонімом {alias}",
"user_changed_display_name": "{user} змінено відображуване ім'я на {displayName}",
"user_changed_avatar": "{user} змінив аватарку",
"user_changed_room_avatar": "{user} змінив аватар кімнати",
"user_encrypted_room": "{user} зашифрував кімнату",
"user_was_invited": "{user} був запрошений до чату...",
"user_was_kicked": "{user} було виключено з чату.",
"user_was_kicked_by_you": "Ви виключили {user} з чату.",
"user_was_kicked_you": "Тебе виключили з чату.",
"user_was_banned": "{user} був вигнаний та забанений у чаті.",
"user_was_banned_by_you": "Ви вигнали та забанили {user} у чаті.",
"user_was_banned_you": "Вас виключили та забанили в чаті.",
"user_joined": "{user} приєднався до чату",
"user_left": "{user} вийшов з чату",
"user_said": "{user} сказав:",
"sent_media": "Надіслано медіафайлів: {count}.",
"file_prefix": "Файл: ",
"download_progress": "{percentage}% завантажено",
"preparing_to_upload": "Підготовка до завантаження...",
"upload_file_too_large": "Файл занадто великий для завантаження!",
"upload_exceeded_file_limit": "Перевищено максимальний розмір файлу ({configFormattedUploadSize}). ",
"upload_progress": "Завантажено {count}",
"upload_progress_with_total": "Завантажено {count} з {total}",
"user_changed_room_history": "{user} увійшов у історію кімнати {type}",
"room_history_world_readable": "читабельний будь-кому",
"room_history_shared": "читабельний для всіх учасників кімнати",
"room_history_invited": "читабельний для учасників з моменту їх запрошення",
"room_history_joined": "читабельний для учасників з моменту їхньої реєстрації",
"user_changed_join_rules": "{user} зробив кімнату {type}",
"room_joinrule_invite": "лише за запрошеннями",
"user_changed_room_name": "{user} змінив назву кімнати на {name}",
"user_changed_room_topic": "{user} змінив тему кімнати на {topic}",
"unread_messages": "Непрочитані повідомлення",
"replying_to": "Відповідь на {user}",
"your_message": "Ваше повідомлення...",
"scale_image": "Масштаб зображення",
"user_is_typing": "{user} друкує",
"users_are_typing": "{count} учасників друкують",
"room_powerlevel_change": "{user} змінив рівень потужності {changes}",
"user_powerlevel_change_from_to": "{user} від {powerOld} до {powerNew}",
"user_changed_guest_access_closed": "{user} заборонив гостям приєднуватися до кімнати",
"user_changed_guest_access_open": "{user} дозволив гостям приєднатися до кімнати",
"reply_audio_message": "Аудіоповідомлення",
"time_ago": "Сьогодні | Вчора | {count} днів тому",
"outgoing_message_deleted_text": "Ви видалили це повідомлення.",
"incoming_message_deleted_text": "Це повідомлення було видалено.",
"not_allowed_to_send": "Тільки адміністратори та модератори можуть надсилати повідомлення до кімнати",
"reaction_count_more": "{reactionCount} більше",
"seen_by_count": "Не бачили учасники | Бачили 1 учасник | Бачили {count} учасників",
"send_attachements_dialog_title": "Ви хочете надіслати наступні вкладення?",
"failed_to_render": "Не вдалося відобразити подію",
"someone": "Хтось",
"edited": "(відредаговано)",
"room_joinrule_public": "громадськість",
"reply_image": "Зображення",
"reply_video": "Відео",
"reply_poll": "Опитування",
"seen_by": "Побачили",
"file": "Файл",
"files": "Файли",
"images": "Зображення",
"download_all": "Завантажити усі",
"room_upgraded": "Цю кімнату оновлено, перейдіть за посиланням {link}, щоб знову приєднатися до обговорення",
"room_upgraded_link": "тут",
"room_upgraded_view_old": "Цю кімнату оновлено. Натисніть {link}, щоб переглянути старі повідомлення"
},
"room": {
"invitations": "У вас немає запрошень | У вас є 1 запрошення | У вас є {count} запрошень",
"unseen_messages": "У вас немає непрочитаних повідомлень | У вас є 1 непрочитане повідомлення | У вас є {count} непрочитаних повідомлень",
"members": "немає учасників | 1 учасник | {count} учасників",
"purge_set_room_state": "Налаштування стану кімнати",
"purge_redacting_events": "Редагування подій ({count} з {total})",
"purge_removing_members": "Видалення учасників ({count} з {total})",
"purge_failed": "Не вдалося очистити кімнату!",
"room_list_new_messages": "{count} нові повідомлення",
"room_name_required": "Назва кімнати обов'язкова",
"room_topic_required": "Опис кімнати обов'язковий",
"leave": "Залишити",
"room_list_invites": "Запрошення",
"room_list_rooms": "Кількість номерів",
"needs_upgrade": "Цю кімнату потрібно оновити до нової версії",
"upgrading": "Оновлення версії кімнати"
},
"room_welcome": {
"info": "Ласкаво просимо! Ось кілька речей, які варто знати про вашу кімнату:",
"encrypted": "Повідомлення шифруються від початку до кінця.",
"room_history_is": "Історія кімнати {type}.",
"room_history_joined": "Користувачі можуть бачити повідомлення, надіслані лише після приєднання.",
"join_public": "Приєднатися може кожен, перейшовши за цим посиланням: {link}.",
"join_invite": "Приєднатися можуть лише ті, кого ви запросите.",
"join_knock": "Люди можуть подати запит на приєднання, «постукавши».",
"info_permissions": "Ви можете змінити «дозволи на приєднання» будь-коли в налаштуваннях кімнати.",
"no_past_messages": "Ласкаво просимо! З міркувань безпеки попередні повідомлення недоступні.",
"direct_info": "Привіт, {you}. Ви спілкуєтесь у приватному чаті з {user}.",
"direct_private_chat": "Пряме повідомлення",
"join_channel": "Готово! Запросіть людей приєднатися до вас: {link}",
"info_retention": "🕓 Повідомлення, надіслані протягом {time}, можуть переглядати всі, хто має посилання.",
"info_retention_user": "🕓 Повідомлення, старіші за {time}, будуть видалені з історії.",
"info_auto_join": "Ласкаво просимо до {room}.\nВи приєднуєтеся як {you}.",
"got_it": "Зрозуміли",
"change": "Змінити"
},
"new_room": {
"title": "Новий груповий чат",
"new_room": "Нова кімната",
"name_room": "Назва кімнати",
"room_topic": "Додайте опис, якщо хочете",
"join_permissions": "Дозволи на приєднання",
"set_join_permissions": "Встановити дозволи на приєднання",
"join_permissions_info": "Ці дозволи визначають, як люди можуть приєднатися до кімнати та як легко можна запросити інших. Їх можна змінити будь-коли.",
"get_link": "Отримати посилання",
"add_people": "Додати людей",
"link_copied": "Посилання скопійовано!",
"public_info": "Будь-хто, хто має посилання",
"public_description": "Отримати посилання для поширення",
"invite_info": "Тільки додані люди",
"invite_description": "Виберіть зі списку або шукайте за ідентифікатором облікового запису",
"status_creating": "Створення кімнати",
"status_avatar": "Завантаження аватара",
"room_name_limit_error_msg": "Дозволено максимум 50 символів",
"colon_not_allowed": "Двокрапка заборонена",
"create": "Створити",
"next": "Далі",
"options": "Опції"
},
"login": {
"username": "Ім'я користувача (наприклад: Марта)",
"username_required": "Потрібне ім'я користувача",
"password_required": "Потрібен пароль",
"create_room": "Зареєструватися та створити кімнату",
"or": "АБО",
"invalid_message": "Недійсне ім'я користувача або пароль",
"no_supported_flow": "Додаток не може увійти на вказаний сервер",
"terms": "Домашній сервер вимагає від вас ознайомитися та прийняти наступні правила:",
"email": "Вам потрібно підтвердити свою адресу електронної пошти",
"sent_verification": "Електронний лист надіслано на адресу {email}. Будь ласка, скористайтеся своїм звичайним поштовим клієнтом, щоб перевірити адресу.",
"email_not_valid": "Адреса електронної пошти недійсна",
"registration_token": "Будь ласка, введіть реєстраційний токен",
"send_token": "Надіслати токен",
"title": "Увійдіть",
"password": "Введіть пароль",
"login": "Увійдіть",
"accept_terms": "Прийняти",
"send_verification": "Надіслати електронний лист для підтвердження",
"resend_verification": "Повторно надіслати лист з підтвердженням",
"token_not_valid": "Неправильний код"
},
"getlink": {
"title": "Отримати пряме посилання",
"info": "Прямі посилання забезпечують безпечний зв’язок з вами. Для початку виберіть псевдонім, який відображатиметься, коли люди вступатимуть у чат з вами.",
"username": "Введіть псевдонім (наприклад: ваку)",
"hello": "Привіт, {user},\nОсь ваше пряме посилання",
"ready_to_share": "Готово до поширення! Нова прямі кімната відкриватиметься щоразу, коли хтось відкриватиме посилання.",
"scan_title": "Відскануйте цей код, щоб розпочати прямий чат",
"different_link": "Отримати інше посилання",
"share_qr": "Поділитися QR-кодом",
"qr_image_copied": "Зображення скопійовано в буфер обміну",
"next": "Далі",
"continue": "Продовжуйте"
},
"create": {
"title": "Виберіть досвід",
"room_type_room_name": "Груповий чат",
"room_type_room_description": "Зв'яжіть групу людей",
"room_type_channel_description": "Новини та ідеї в трансляції",
"room_type_filedrop_name": "Падіння файлів",
"room_type_filedrop_description": "Отримувати файли та поради",
"topic_too_long": "Дозволено максимум 500 символів",
"room_type_channel_name": "Канал",
"field_required": "Це поле є обов'язковим"
},
"createchannel": {
"title": "Створити канал",
"info": "Транслюйте новини чи знання в будь-якому форматі — відео, подкасті, тексті, зображеннях або PDF-файлах.",
"channel_name": "Назвіть свій канал",
"channel_topic": "Опишіть це",
"channel_topic_label": "Ваш опис відображатиметься, коли користувачі приєднаються до вашого каналу.",
"error_channel": "Не вдалося створити канал",
"status_creating": "Створення каналу"
},
"createfiledrop": {
"title": "Створити файловий дроп",
"info": "Файлові сховища — це безпечне місце для отримання файлів від будь-кого.",
"filedrop_name": "Назвіть свій файловий дроп",
"error_filedrop": "Не вдалося створити перетягування файлів",
"status_creating": "Створення перетягування файлів"
},
"profile": {
"title": "Мій профіль",
"temporary_identity": "Ця ідентифікаційна інформація тимчасова. Встановіть пароль, щоб використовувати її знову",
"my_rooms": "Мої кімнати",
"set_language": "Встановіть свою мову",
"language_description": "Convene доступний багатьма мовами.",
"dont_see_yours": "Не бачите свого?",
"tell_us": "Розкажіть нам.",
"password_repeat": "Повторіть новий пароль",
"display_name_required": "Потрібне відображуване ім'я",
"set_password": "Установка паролю",
"change_name": "Змінити ім'я",
"change_password": "Зміна пароля",
"select_language": "Мова",
"password_old": "Старий пароль",
"password_new": "Новий пароль",
"display_name": "Відображуване ім'я",
"notification_label": "Сповіщення"
},
"profile_info_popup": {
"you_are": "Ви є",
"identity": "{displayName}",
"identity_temporary": "{displayName}",
"want_more": "Хочете більше?",
"powered_by": "Ця кімната працює на платформі {product}. Дізнайтеся більше на {productLink} або створіть ще одну кімнату!",
"new_room": "Нова кімнати",
"review_ua": "Перегляньте Угоду користувача сервісу",
"edit_profile": "Редагувати профіль",
"logout": "Вихід"
},
"join": {
"title": "Ласкаво просимо, вас запросили приєднатися",
"title_user": "Ласкаво просимо, вас запросили до чату",
"joining_as": "Ви приєднуєтеся як:",
"join_user": "Почати чат",
"knock_reason": "Причина стуку (необов'язково)",
"enter_room_user": "Почати чат",
"enter_knock": "Запит на приєднання",
"status_logging_in": "Вхід...",
"status_joining": "Приєднання до кімнати...",
"status_knocking": "Стукіт...",
"join_failed": "Не вдалося приєднатися до кімната.",
"choose_name": "Виберіть ім'я для використання",
"you_have_been_banned": "Вам заборонено вхід до цієї кімнати.",
"accept_ua": "Я погоджуюся з {agreement}",
"ua": "угода користувача послуг",
"user_name_label": "Ім'я користувача",
"remember_me": "Запамʼятати мене",
"join": "Приєднатися до кімнати",
"knock": "Постукатись",
"enter_room": "Увійти в кімнату"
},
"invite": {
"send_invites_to": "Надіслати запрошення",
"status_inviting": "Запрошення друга {index} з {count}",
"status_error": "Не вдалося запросити одного або кількох друзів!",
"title": "Додати друзів",
"done": "Готово"
},
"leave": {
"title_public": "Прощавай, {user}",
"text_public": "Ви завжди можете знову приєднатися до цієї кімнати, якщо знаєте посилання.",
"text_public_lastroom": "Якщо ви хочете знову приєднатися до цієї кімнати, ви можете це зробити під новим ідентифікатором. Щоб зберегти {user}, {action}.",
"text_invite": "Ця кімната замкнена. Ви не можете знову приєднатися без спеціального дозволу.",
"create_account": "створити обліковий запис",
"title_invite": "Ви впевнені, що хочете піти?",
"go_back": "Іди назад",
"leave": "Залишити"
},
"logout": {
"confirm_text": "Ви впевнені, що хочете вийти?"
},
"purge_room": {
"title": "Видалити кімнату?",
"info": "Усіх учасників та повідомлення буде видалено. Цю дію не можна скасувати.",
"n_seconds": "{seconds} секунди",
"self_destruct": "Ваша кімната самознищиться за лічені секунди.",
"deleting": "Видалення кімнати:",
"notified": "Ми повідомили учасників.",
"room_deletion_notice": "Час прощатися! Цю кімнату видалив {user}. Вона самознищиться за лічені секунди.",
"button": "Вилучити"
},
"goodbye": {
"room_deleted": "Кімнату видалено.",
"close_tab": "Закрити вкладку браузера",
"view_other_rooms": "Переглянути інші кімнати"
},
"room_info": {
"title": "Деталі кімнати",
"created_by": "Створено {user}",
"permissions": "Дозволи на Приєднання",
"join_invite": "Додано лише людей",
"join_public": "Будь-хто, хто має посилання",
"join_knock": "Люди можуть «стукати».",
"copy_invite_link": "Копіювати посилання для запрошення",
"link_copied": "Посилання скопійовано!",
"purge": "Видалити кімнату",
"knocks": "Стукає",
"user": "{user}",
"user_you": "{user} (ви)",
"show_all": "Показати всі >",
"version_info": "За підтримки Guardian Project. Версія: {version}",
"scan_code": "Відскануйте, щоб приєднатися до кімнати",
"export_room": "Зберегти чат",
"room_type": "Тип кімнати",
"voice_mode": "Голосовий режим",
"voice_mode_info": "Перемикає інтерфейс чату в режим «прослуховування та запису»",
"file_mode": "Режим файлу",
"file_mode_info": "Перемикає інтерфейс чату в режим «скидання файлів»",
"download_chat": "Зберегти чат",
"read_only_room_info": "Тільки адміністратори та модератори мають право надсилати повідомлення до кімнати.",
"message_retention": "Обмеження історії",
"message_retention_info": "Встановіть обмеження на тривалість зберігання повідомлень",
"limit_history_info": "Зберігати повідомлення для {period}",
"message_retention_4_week": "4 тижні",
"direct_link": "Моє пряме посилання",
"direct_link_desc": "Готово до поширення! Нова пряма кімната відкриватиметься щоразу, коли хтось відкриватиме посилання.",
"shared_room_number": "Ви ділите {count} кімнат з {name}",
"shared_room_number_more": "Ви ділите більше ніж {count} кімнат з {name}",
"message_history": "Історія повідомлень",
"message_history_info": "Дозволити користувачам переглядати повідомлення, надіслані до їх приєднання",
"message_history_warning": "попередження: нові учасники бачитимуть повну історію повідомлень",
"report_info": "Повідомити адміністраторів служби про наявність незаконного, образливого або іншого шкідливого контенту в цій кімнаті",
"confirm_make_admin": "Ви хочете зробити цього користувача адміністратором?",
"confirm_make_moderator": "Ви хочете зробити цього користувача модератором?",
"confirm_revoke_moderator": "Ви хочете позбавити цього користувача прав модератора?",
"confirm_ban": "Ви хочете вигнати цього користувача з кімнати?",
"copy_link": "Копіювати посилання",
"members": "Члени",
"accept_knock": "Прийняти",
"reject_knock": "Заборонити",
"hide_all": "Приховати",
"leave_room": "Залишити",
"user_admin": "Адміністратор",
"user_moderator": "Модератор",
"moderation": "Модерація",
"experimental_features": "Експериментальні функції",
"room_type_default": "За замовчанням",
"read_only_room": "Тільки для читання",
"message_retention_none": "Вимкнено",
"message_retention_2_week": "2 тижня",
"message_retention_1_week": "1 тиждень",
"message_retention_1_day": "1 день",
"message_retention_8_hours": "8 години",
"message_retention_1_hour": "1 година",
"report": "Повідомити",
"report_reason": "Причина",
"user_creator": "Творець",
"confirm_revoke_admin": "Ви хочете позбавити цього користувача прав адміністратора?"
},
"room_info_sheet": {
"this_room": "Ця кімната",
"view_details": "Докладніше"
},
"voice_recorder": {
"swipe_to_cancel": "Проведіть пальцем, щоб скасувати",
"release_to_cancel": "Відпустіть, щоб скасувати",
"failed_to_record": "Не вдалося записати аудіо",
"not_supported_text": "На жаль, цей браузер не підтримує запис аудіо.",
"not_supported_title": "Не підтримується"
},
"power_level": {
"admin": "адміністратор",
"moderator": "модератор",
"custom": "звичай ({level})",
"restricted": "обмежений",
"default": "типовий"
},
"fallbacks": {
"original_text": "<оригінальний текст>",
"audio_file": "Аудіофайл",
"video_file": "Відеофайл",
"download_name": "Завантажити"
},
"poll_create": {
"title": "Створити нове опитування",
"creating": "Створення опитування",
"poll_disclosed": "Відкрито поточні результати відображаються постійно.",
"poll_undisclosed": "Закрито користувачі побачать результати після закриття опитування.",
"add_answer": "Додати відповідь",
"failed": "Не вдалося створити опитування, спробуйте пізніше.",
"question_label": "Задайте своє питання*",
"question_required": "Вам потрібно ввести питання!",
"answer_label_1": "Відповідь*",
"please_complete": "Будь ласка, заповніть",
"answer_required": "Відповідь не може бути порожньою. Будь ласка, введіть текст або видаліть цей варіант.",
"tip_title": "ДЛЯ ПОРАД",
"tip_text": "Учасники побачать результати опитування після того, як дадуть відповіді. Закрийте опитування, щоб показати результати всім присутнім.",
"create_poll_menu_option": "Створити опитування",
"poll_status_closed": "Опитування закрито",
"poll_status_disclosed": "Результати будуть показані після закриття опитування.",
"poll_status_open": "Опитування відкрите",
"poll_status_open_not_voted": "Опитування відкрите проголосуйте, щоб побачити результати",
"close_poll": "Закрити опитування",
"num_answered": "{count} відповіді",
"results_shared": "Результати опубліковано в кімнаті.",
"create": "Опублікувати",
"answer_label_n": "Відповідь",
"view_results": "Переглянути результати",
"poll_submit": "Надіслати"
},
"room_export": {
"exported_date": "Експортовано {date}",
"fetched_n_events": "Отримано подій: {count}",
"fetched_n_of_total_events": "Отримано {count} з {total} подій",
"processed_n_of_total_events": "Оброблено медіафайли для {count} з {total} подій",
"export_filename": "Експортовано чат {date}"
},
"notification": {
"title": "Отримано нове повідомлення",
"dialog": {
"title": "Залишайтеся на зв'язку за допомогою сповіщень у чаті!",
"body": "Ніколи більше не пропускайте повідомлення чи важливу розмову! Отримуйте сповіщення щоразу, коли хтось надсилає вам повідомлення або відповідає у вашому чаті.",
"enable": "Ввімкнути"
},
"blocked_message": "Сповіщення заблоковано. Перейдіть до налаштувань пристрою або браузера, щоб увімкнути сповіщення",
"not_supported": "Сповіщення ще не підтримуються в мобільних пристроях",
"periodicSync_new_msg_reminder": "У вас можуть бути нові повідомлення"
},
"device_list": {
"blocked": "Заблокований",
"verified": "Перевірено",
"not_verified": "Не перевірено"
},
"emoji": {
"search": "Пошук…",
"categories": {
"activity": "Діяльність",
"flags": "Прапори",
"objects": "Об'єкти",
"nature": "Природа",
"symbols": "Символи",
"places": "Місця",
"foods": "Продукти харчування",
"frequently": "Часто використовується",
"peoples": "Народи"
}
},
"file_mode": {
"sending": "Відправлення",
"close": "Закрити",
"files": "Файли",
"quality": "Якість",
"original": "Оригінальний",
"content_credentials": "Облікові дані вмісту",
"learn_more": "Дізнатися більше",
"choose_files": "Вибрати файли",
"any_file_format_accepted": "Приймається будь-який формат файлу",
"secure_file_send": "безпечне надсилання файлів",
"add_a_message": "Додати повідомлення",
"sending_progress": "Надсилання...",
"files_sent": "1 файл надіслано! | {count} файлів надіслано!",
"files_sent_with_note": "1 файл надіслано з приміткою! | {count} файлів надіслано з приміткою!",
"send_more_files": "Надіслати більше файлів",
"compressed": "Стиснутий",
"metadata_info_compressed": "Стиснення зображення автоматично виключає його метадані.",
"metadata_info_original": "Спільний доступ до оригіналу автоматично включає його метадані.",
"exif_data": "Дані Exif",
"content_credentials_info": "Для цього медіа доступна інформація про джерело або історію, яку потрібно перевірити.",
"ai_used": "Фото змінено за допомогою штучного інтелекту",
"screenshot_taken_on": "Знімок екрана зроблено {date}",
"captured_with_camera": "Знято камерою",
"old_photo": "Фотографія старша за 3 місяці"
}
}

View file

@ -29,10 +29,10 @@
"user_admin": "管理员", "user_admin": "管理员",
"voice_mode": "语音模块", "voice_mode": "语音模块",
"voice_mode_info": "将聊天界面切换到“收听和录音”模式", "voice_mode_info": "将聊天界面切换到“收听和录音”模式",
"download_chat": "下载聊天", "download_chat": "保存聊天记录",
"read_only_room": "只读", "read_only_room": "只读",
"read_only_room_info": "只允许管理员和主持人发送到聊天室", "read_only_room_info": "只允许管理员和主持人发送到聊天室",
"export_room": "导出聊天", "export_room": "保存聊天记录",
"user_moderator": "版主", "user_moderator": "版主",
"experimental_features": "实验功能", "experimental_features": "实验功能",
"direct_link": "我的直接链接", "direct_link": "我的直接链接",
@ -60,7 +60,17 @@
"report_reason": "理由", "report_reason": "理由",
"limit_history_info": "保留信息 {period}", "limit_history_info": "保留信息 {period}",
"message_history_info": "允许用户查看他们加入群聊之前发送的信息", "message_history_info": "允许用户查看他们加入群聊之前发送的信息",
"report_info": "向服务管理员举报此房间存在非法、辱骂或其他有害内容" "report_info": "向服务管理员举报此房间存在非法、辱骂或其他有害内容",
"accept_knock": "接受",
"reject_knock": "拒绝",
"join_knock": "人们可以“敲门”。",
"knocks": "敲门",
"user_creator": "创建者",
"confirm_make_admin": "您想让该用户成为管理员吗?",
"confirm_revoke_admin": "您想移除该用户的管理员权限吗?",
"confirm_make_moderator": "您想让该用户成为版主吗?",
"confirm_revoke_moderator": "您想移除该用户的版主权限吗?",
"confirm_ban": "您想将该用户踢出房间吗?"
}, },
"leave": { "leave": {
"leave": "离开", "leave": "离开",
@ -112,7 +122,9 @@
"unseen_messages": "你没有任何未读信息 | 您有 1 条未读信息 | 您有 {count} 条未读信息", "unseen_messages": "你没有任何未读信息 | 您有 1 条未读信息 | 您有 {count} 条未读信息",
"room_list_new_messages": "{count} 条新消息", "room_list_new_messages": "{count} 条新消息",
"room_name_required": "聊天室名称必填", "room_name_required": "聊天室名称必填",
"room_topic_required": "需要聊天室描述" "room_topic_required": "需要聊天室描述",
"needs_upgrade": "此聊天室需要升级到新的版本",
"upgrading": "正在升级聊天室版本"
}, },
"message": { "message": {
"you": "您", "you": "您",
@ -178,7 +190,10 @@
"upload_exceeded_file_limit": "超出 ({configFormattedUploadSize}) 的最大文件大小。 ", "upload_exceeded_file_limit": "超出 ({configFormattedUploadSize}) 的最大文件大小。 ",
"someone": "某人", "someone": "某人",
"failed_to_render": "无法呈现事件", "failed_to_render": "无法呈现事件",
"sent_media": "已发送{count} 媒体项目。" "sent_media": "已发送{count} 媒体项目。",
"room_upgraded": "此聊天室已升级,请前往{link}重新加入讨论",
"room_upgraded_view_old": "此聊天室已升级,点击{link}查看旧信息",
"room_upgraded_link": "这里"
}, },
"menu": { "menu": {
"login": "登录", "login": "登录",
@ -205,7 +220,10 @@
"user_kick_and_ban": "退出", "user_kick_and_ban": "退出",
"delete_now": "立即删除", "delete_now": "立即删除",
"pin": "置顶帖", "pin": "置顶帖",
"unpin": "取消置顶帖子" "unpin": "取消置顶帖子",
"user_revoke_admin": "撤销管理员",
"cancel_knock": "取消敲门",
"upgrade": "升级"
}, },
"power_level": { "power_level": {
"restricted": "被限制", "restricted": "被限制",
@ -258,7 +276,11 @@
"choose_name": "选择要使用的名称", "choose_name": "选择要使用的名称",
"you_have_been_banned": "您已被禁止进入该聊天室。", "you_have_been_banned": "您已被禁止进入该聊天室。",
"accept_ua": "我同意 {agreement}", "accept_ua": "我同意 {agreement}",
"ua": "服务使用协议" "ua": "服务使用协议",
"knock": "请求",
"enter_knock": "申请加入",
"knock_reason": "敲门原因(可选)",
"status_knocking": "正在敲门..."
}, },
"profile": { "profile": {
"display_name": "显示名称", "display_name": "显示名称",
@ -276,7 +298,8 @@
"dont_see_yours": "看不到你的?", "dont_see_yours": "看不到你的?",
"tell_us": "告诉我们。", "tell_us": "告诉我们。",
"display_name_required": "显示名称是必需的", "display_name_required": "显示名称是必需的",
"notification_label": "通知" "notification_label": "通知",
"my_rooms": "我的聊天室"
}, },
"new_room": { "new_room": {
"status_avatar": "正在上传头像", "status_avatar": "正在上传头像",
@ -317,7 +340,8 @@
"info_retention_user": "🕓 早于 {time} 的信息将从历史记录中删除。", "info_retention_user": "🕓 早于 {time} 的信息将从历史记录中删除。",
"join_channel": "一切就绪!邀请其他人加入您:{link}", "join_channel": "一切就绪!邀请其他人加入您:{link}",
"info_retention": "🕓有链接的任何人都可以查看在 {time} 内发送的信息。", "info_retention": "🕓有链接的任何人都可以查看在 {time} 内发送的信息。",
"info_auto_join": "欢迎来到{room}。\n您以{you}的身份加入。" "info_auto_join": "欢迎来到{room}。\n您以{you}的身份加入。",
"join_knock": "人们可以通过“敲门”来请求加入。"
}, },
"profile_info_popup": { "profile_info_popup": {
"new_room": "新的聊天室", "new_room": "新的聊天室",
@ -385,7 +409,7 @@
"answer_required": "答案不能为空。 请输入一些文本或删除此选项。", "answer_required": "答案不能为空。 请输入一些文本或删除此选项。",
"num_answered": "{count} 答案" "num_answered": "{count} 答案"
}, },
"export": { "room_export": {
"fetched_n_events": "获取了 {count} 个事件", "fetched_n_events": "获取了 {count} 个事件",
"exported_date": "于 {date} 导出", "exported_date": "于 {date} 导出",
"fetched_n_of_total_events": "已获取 {count} 个事件,共 {total} 个事件", "fetched_n_of_total_events": "已获取 {count} 个事件,共 {total} 个事件",
@ -403,7 +427,20 @@
"any_file_format_accepted": "接受任何文件格式", "any_file_format_accepted": "接受任何文件格式",
"files_sent_with_note": "发送 1 个文件并附有备注! | 已发送 {count} 个文件并附有备注!", "files_sent_with_note": "发送 1 个文件并附有备注! | 已发送 {count} 个文件并附有备注!",
"close": "关闭", "close": "关闭",
"files_sent": "已发送 1 个文件! | 已发送 {count} 个文件!" "files_sent": "已发送 1 个文件! | 已发送 {count} 个文件!",
"quality": "画质",
"original": "原来的",
"content_credentials": "内容凭据",
"learn_more": "了解更多",
"compressed": "压缩",
"metadata_info_compressed": "压缩图像会自动排除其元数据。",
"metadata_info_original": "分享原件将自动包含其元数据。",
"exif_data": "Exif 数据",
"content_credentials_info": "该媒体可提供来源或历史信息以供验证。",
"ai_used": "经过 AI 修改的照片",
"screenshot_taken_on": "屏幕截图拍摄于 {date}",
"captured_with_camera": "用相机拍摄",
"old_photo": "3 个月前的照片"
}, },
"notification": { "notification": {
"dialog": { "dialog": {

View file

@ -3,7 +3,6 @@
class="action-row ma-0 pa-0" class="action-row ma-0 pa-0"
no-gutters no-gutters
align-content="center" align-content="center"
v-on="$listeners"
> >
<v-col cols="auto" class="me-2 align-self-center"> <v-col cols="auto" class="me-2 align-self-center">
<v-icon :size="iconSize">{{ icon }}</v-icon> <v-icon :size="iconSize">{{ icon }}</v-icon>
@ -40,5 +39,6 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/chat.scss"; @use "vuetify/settings";
@use "@/assets/css/chat.scss" as *;
</style> </style>

View file

@ -1,5 +1,5 @@
<template> <template>
<div v-bind="{ ...$props, ...$attrs }" v-on="$listeners" class="messageIn"> <div v-bind="{ ...$props, ...$attrs }" class="messageIn">
<div class="load-earlier clickable" @click="loadPrevious"> <div class="load-earlier clickable" @click="loadPrevious">
<v-icon color="white" size="28">expand_less</v-icon> <v-icon color="white" size="28">expand_less</v-icon>
</div> </div>
@ -8,8 +8,8 @@
<div class="typing-users"> <div class="typing-users">
<transition-group name="list" tag="div"> <transition-group name="list" tag="div">
<v-avatar v-for="(member) in recordingMembersExceptMe" :key="member.userId" class="typing-user" size="32" color="grey"> <v-avatar v-for="(member) in recordingMembersExceptMe" :key="member.userId" class="typing-user" size="32" color="grey">
<img v-if="memberAvatar(member)" :src="memberAvatar(member)" /> <AuthedImage v-if="memberAvatar(member)" :src="memberAvatar(member)" />
<span v-else class="white--text headline">{{ <span v-else class="text-white headline">{{
member.name.substring(0, 1).toUpperCase() member.name.substring(0, 1).toUpperCase()
}}</span> }}</span>
</v-avatar> </v-avatar>
@ -23,7 +23,7 @@
<v-avatar v-if="currentAudioEvent" class="avatar" ref="avatar" size="32" color="#ededed" <v-avatar v-if="currentAudioEvent" class="avatar" ref="avatar" size="32" color="#ededed"
@click.stop="otherAvatarClicked($refs.avatar.$el)"> @click.stop="otherAvatarClicked($refs.avatar.$el)">
<img v-if="messageEventAvatar(currentAudioEvent)" :src="messageEventAvatar(currentAudioEvent)" /> <img v-if="messageEventAvatar(currentAudioEvent)" :src="messageEventAvatar(currentAudioEvent)" />
<span v-else class="white--text headline">{{ <span v-else class="text-white headline">{{
eventSenderDisplayName(currentAudioEvent).substring(0, 1).toUpperCase() eventSenderDisplayName(currentAudioEvent).substring(0, 1).toUpperCase()
}}</span> }}</span>
</v-avatar> </v-avatar>
@ -33,8 +33,8 @@
<div class="typing-users"> <div class="typing-users">
<transition-group name="list" tag="div"> <transition-group name="list" tag="div">
<v-avatar v-for="reaction in reactions" :key="reaction.member.userId" class="typing-user" size="32" color="grey"> <v-avatar v-for="reaction in reactions" :key="reaction.member.userId" class="typing-user" size="32" color="grey">
<img v-if="memberAvatar(reaction.member)" :src="memberAvatar(reaction.member)" /> <AuthedImage v-if="memberAvatar(reaction.member)" :src="memberAvatar(reaction.member)" />
<span v-else class="white--text headline">{{ <span v-else class="text-white headline">{{
reaction.member.name.substring(0, 1).toUpperCase() reaction.member.name.substring(0, 1).toUpperCase()
}}</span> }}</span>
<div class="reaction-emoji">{{ reaction.emoji }}</div> <div class="reaction-emoji">{{ reaction.emoji }}</div>
@ -55,7 +55,7 @@
<v-btn id="btn-rewind" :disabled="!info || info.loading" @click.stop="rewind" icon> <v-btn id="btn-rewind" :disabled="!info || info.loading" @click.stop="rewind" icon>
<v-icon size="28">$vuetify.icons.rewind</v-icon> <v-icon size="28">$vuetify.icons.rewind</v-icon>
</v-btn> </v-btn>
<v-progress-circular v-if="info && info.loading" :value="info.loadPercent" @click.stop="pause" size="36" width="2" style="margin:26px"></v-progress-circular> <v-progress-circular v-if="info && info.loading" :model-value="info.loadPercent" @click.stop="pause" size="36" width="2" style="margin:26px"></v-progress-circular>
<v-btn v-else-if="info && info.playing" id="btn-pause" @click.stop="pause" icon> <v-btn v-else-if="info && info.playing" id="btn-pause" @click.stop="pause" icon>
<v-icon size="56">$vuetify.icons.pause_circle</v-icon> <v-icon size="56">$vuetify.icons.pause_circle</v-icon>
</v-btn> </v-btn>
@ -69,10 +69,9 @@
<div class="load-later"> <div class="load-later">
<div style="align-self: flex-end;"> <div style="align-self: flex-end;">
<v-btn class="clap-button clickable" text elevation="0" v-blur @click.stop="clapButtonClicked()">👏</v-btn> <v-btn class="clap-button clickable" variant="text" elevation="0" v-blur @click.stop="clapButtonClicked()">👏</v-btn>
<v-btn :class="{'mic-button': true, 'dimmed': !canRecordAudio}" ref="mic_button" fab small elevation="0" v-blur <v-btn icon="mic" :class="{'mic-button': true, 'dimmed': !canRecordAudio}" ref="mic_button" theme="dark" size="small" elevation="0" v-blur
@click.stop="micButtonClicked()"> @click.stop="micButtonClicked()">
<v-icon color="white">mic</v-icon>
</v-btn> </v-btn>
</div> </div>
<v-icon class="clickable" @click="loadNext" color="white" size="28">expand_more</v-icon> <v-icon class="clickable" @click="loadNext" color="white" size="28">expand_more</v-icon>
@ -85,10 +84,14 @@
<script> <script>
import messageMixin from "./messages/messageMixin"; import messageMixin from "./messages/messageMixin";
import util from "../plugins/utils"; import util from "../plugins/utils";
import AuthedImage from "./AuthedImage.vue";
import clapping from "@/assets/sounds/clapping.mp3";
import emitter from 'tiny-emitter/instance';
export default { export default {
mixins: [messageMixin], mixins: [messageMixin],
components: {}, components: { AuthedImage },
emits: ['mark-read','loadprevious','loadnext','start-recording','sendclap'],
props: { props: {
autoplay: { autoplay: {
type: Boolean, type: Boolean,
@ -129,18 +132,18 @@ export default {
}; };
}, },
mounted() { mounted() {
this.$root.$on('audio-playback-started', this.audioPlaybackStarted); emitter.on('audio-playback-started', this.audioPlaybackStarted);
this.$root.$on('audio-playback-paused', this.audioPlaybackPaused); emitter.on('audio-playback-paused', this.audioPlaybackPaused);
this.$root.$on('audio-playback-ended', this.audioPlaybackEnded); emitter.on('audio-playback-ended', this.audioPlaybackEnded);
this.$root.$on('audio-playback-reaction', this.audioPlaybackReaction); emitter.on('audio-playback-reaction', this.audioPlaybackReaction);
document.body.classList.add("dark"); document.body.classList.add("dark");
this.$audioPlayer.setAutoplay(false); this.$audioPlayer.setAutoplay(false);
}, },
beforeDestroy() { beforeUnmount() {
this.$root.$off('audio-playback-started', this.audioPlaybackStarted); emitter.off('audio-playback-started', this.audioPlaybackStarted);
this.$root.$off('audio-playback-paused', this.audioPlaybackPaused); emitter.off('audio-playback-paused', this.audioPlaybackPaused);
this.$root.$off('audio-playback-ended', this.audioPlaybackEnded); emitter.off('audio-playback-ended', this.audioPlaybackEnded);
this.$root.$off('audio-playback-reaction', this.audioPlaybackReaction); emitter.off('audio-playback-reaction', this.audioPlaybackReaction);
document.body.classList.remove("dark"); document.body.classList.remove("dark");
this.$audioPlayer.removeListener(this._uid); this.$audioPlayer.removeListener(this._uid);
this.currentAudioEvent = null; this.currentAudioEvent = null;
@ -270,7 +273,7 @@ export default {
}, },
audioPlaybackReaction(reaction) { audioPlaybackReaction(reaction) {
// Play sound! // Play sound!
const audio = new Audio(require("@/assets/sounds/clapping.mp3")); const audio = new Audio(clapping);
audio.volume = 0.6; audio.volume = 0.6;
audio.play(); audio.play();
@ -407,7 +410,9 @@ export default {
40, 40,
40, 40,
"scale", "scale",
true true,
false,
this.$matrix.useAuthedMedia,
); );
} }
return null; return null;
@ -440,5 +445,5 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/chat.scss"; @use "@/assets/css/chat.scss" as *;
</style> </style>

View file

@ -0,0 +1,69 @@
<template>
<img :src="imageSrc" style="width:100%;height:100%" />
</template>
<script>
import axios from 'axios';
export default {
name: "AuthedImage",
props: {
src: {
type: String,
default: function () {
return undefined;
},
},
},
unmounted() {
this.unloadSrc();
},
watch: {
src: {
immediate: true,
handler(newValue) {
this.unloadSrc();
this.loadSrc();
}
}
},
data() {
return {
imageSrc: null
}
},
methods: {
loadSrc() {
if (this.src) {
if (this.$matrix.useAuthedMedia) {
axios
.get(this.src, {
responseType: "blob", headers: {
Authorization: `Bearer ${this.$matrix.matrixClient.getAccessToken()}`,
}
})
.then((response) => {
this.imageSrc = URL.createObjectURL(response.data);
})
.catch((err) => {
console.log("Download error: ", err);
});
} else {
this.imageSrc = this.src;
}
}
},
unloadSrc() {
if (this.imageSrc && this.src != this.imageSrc) {
const url = this.imageSrc;
this.imageSrc = null;
URL.revokeObjectURL(url);
}
}
}
};
</script>
<style lang="scss">
@use "@/assets/css/chat.scss" as *;
</style>

View file

@ -18,15 +18,13 @@
:style="{ top: `${isMove ? y : calcY()}px` }" :style="{ top: `${isMove ? y : calcY()}px` }"
> >
<v-btn <v-btn
fab size="small"
x-small
elevation="0" elevation="0"
color="black"
@click.stop="onBackgroundClick" @click.stop="onBackgroundClick"
class="bottom-sheet-close" class="bottom-sheet-close"
v-if="showCloseButton" v-if="showCloseButton"
icon="cancel"
> >
<v-icon color="white" >cancel</v-icon>
</v-btn> </v-btn>
<div class="bottom-sheet-handle"><div class="bottom-sheet-handle-decoration" /></div> <div class="bottom-sheet-handle"><div class="bottom-sheet-handle-decoration" /></div>
<div ref="sheetContent" class="sheetContent"> <div ref="sheetContent" class="sheetContent">
@ -116,7 +114,7 @@ export default {
} }
}); });
}, },
beforeDestroy() { beforeUnmount() {
this.mc.destroy(); this.mc.destroy();
window.onresize = null; window.onresize = null;
}, },
@ -163,8 +161,10 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~vuetify/src/styles/settings/_variables.scss'; @use 'vuetify/settings' as *;
@import '@/assets/css/variables'; @use '@/assets/css/variables' as *;
@use "sass:map";
.sheetContent { .sheetContent {
position:absolute; position:absolute;
top:20px;left:0; top:20px;left:0;
@ -220,12 +220,12 @@ export default {
.bottom-sheet-close { .bottom-sheet-close {
position: absolute; position: absolute;
right: 0; right: 4px;
top: 0; top: 4px;
z-index: 1; z-index: 1;
} }
@media #{map-get($display-breakpoints, 'lg-and-up')} { @media #{map.get($display-breakpoints, 'lg-and-up')} {
margin: 0 auto; margin: 0 auto;
width: $dialog-desktop-width; width: $dialog-desktop-width;
} }
@ -238,7 +238,7 @@ export default {
} }
.bottom-sheet-content[data-state="small"] { .bottom-sheet-content[data-state="small"] {
@media #{map-get($display-breakpoints, 'lg-and-up')} { @media #{map.get($display-breakpoints, 'lg-and-up')} {
top: 100px !important; top: 100px !important;
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -6,8 +6,8 @@
class="chat-header-members text-start ma-0 pa-0" class="chat-header-members text-start ma-0 pa-0"
> >
<v-avatar size="48" class="clickable me-2 chat-header-avatar" color="grey" @click.stop="onAvatarClicked"> <v-avatar size="48" class="clickable me-2 chat-header-avatar" color="grey" @click.stop="onAvatarClicked">
<v-img v-if="roomAvatar" :src="roomAvatar" /> <AuthedImage v-if="roomAvatar" :src="roomAvatar" />
<span v-else class="white--text headline">{{ <span v-else class="text-white headline">{{
room.name.substring(0, 1).toUpperCase() room.name.substring(0, 1).toUpperCase()
}}</span> }}</span>
</v-avatar> </v-avatar>
@ -28,27 +28,25 @@
</div> </div>
</div> </div>
</div> </div>
<div class="num-members">{{ $tc("room.members", memberCount) }}</div> <div class="num-members">{{ $t("room.members", memberCount) }}</div>
</v-col> </v-col>
<v-col cols="auto" class="text-end ma-0 pa-0 ms-1"> <v-col cols="auto" class="text-end ma-0 pa-0 ms-1">
<v-avatar :class="{ 'avatar-32': true, 'clickable': true, 'popup-open': showProfileInfo }" size="26" <v-avatar :class="{ 'avatar-32': true, 'clickable': true, 'popup-open': showProfileInfo }" size="26"
color="#e0e0e0" @click.stop="showProfileInfo = true"> color="#e0e0e0" @click.stop="showProfileInfo = true">
<img v-if="userAvatar" :src="userAvatar" /> <AuthedImage v-if="userAvatar" :src="userAvatar" />
<span v-else class="white--text">{{ userAvatarLetter }}</span> <span v-else class="text-white">{{ userAvatarLetter }}</span>
</v-avatar> </v-avatar>
</v-col> </v-col>
<v-col cols="auto" class="text-end ma-0 pa-0 ms-1"> <v-col cols="auto" class="text-end ma-0 pa-0 ms-1">
<v-btn id="btn-purge-room" v-if="userCanPurgeRoom" class="mx-2 box-shadow-none" fab dark small color="red" <v-btn id="btn-purge-room" v-if="userCanPurgeRoom" icon="$vuetify.icons.ic_moderator-delete" class="mx-2 box-shadow-none" theme="light" size="small" color="red"
@click.stop="$emit('purge')"> @click.stop="$emit('purge')">
<v-icon light>$vuetify.icons.ic_moderator-delete</v-icon>
</v-btn> </v-btn>
<v-btn id="btn-leave-room" class="mx-2 box-shadow-none" fab dark small color="red" @click.stop="leaveRoom" v-else> <v-btn id="btn-leave-room" v-else icon="$vuetify.icons.ic_member-leave" class="mx-2 box-shadow-none" theme="light" size="small" color="red" @click.stop="leaveRoom">
<v-icon color="white">$vuetify.icons.ic_member-leave</v-icon>
</v-btn> </v-btn>
</v-col> </v-col>
<v-col cols="auto" class="text-end ma-0 pa-0 ms-1 clickable close-button more-menu-button"> <v-col cols="auto" class="text-end ma-0 pa-0 ms-1 clickable close-button more-menu-button">
<div :class="{ 'popup-open': showMoreMenu }"> <div :class="{ 'popup-open': showMoreMenu }">
<v-btn class="mx-2 box-shadow-none" fab dark small color="transparent" @click.stop="onShowMoreMenu"> <v-btn class="mx-2 box-shadow-none" icon theme="dark" size="small" color="transparent" @click.stop="onShowMoreMenu">
<v-icon size="15">$vuetify.icons.ic_more</v-icon> <v-icon size="15">$vuetify.icons.ic_more</v-icon>
</v-btn> </v-btn>
</div> </div>
@ -56,7 +54,7 @@
</v-row> </v-row>
<!-- "REALLY LEAVE?" dialog --> <!-- "REALLY LEAVE?" dialog -->
<LeaveRoomDialog :show="showLeaveConfirmation" :room="room" @close="showLeaveConfirmation = false" /> <LeaveRoomDialog v-model="showLeaveConfirmation" :room="room" />
<!-- PROFILE INFO POPUP --> <!-- PROFILE INFO POPUP -->
<ProfileInfoPopup :show="showProfileInfo" @close="showProfileInfo = false" /> <ProfileInfoPopup :show="showProfileInfo" @close="showProfileInfo = false" />
@ -65,8 +63,6 @@
<MoreMenuPopup :show="showMoreMenu" :menuItems="moreMenuItems" @close="showMoreMenu = false" <MoreMenuPopup :show="showMoreMenu" :menuItems="moreMenuItems" @close="showMoreMenu = false"
v-on:leave="showLeaveConfirmation = true" /> v-on:leave="showLeaveConfirmation = true" />
<RoomExport :room="room" v-if="downloadingChat" v-on:close="downloadingChat = false" />
</v-container> </v-container>
</template> </template>
@ -75,18 +71,18 @@ import LeaveRoomDialog from "../components/LeaveRoomDialog";
import ProfileInfoPopup from "../components/ProfileInfoPopup"; import ProfileInfoPopup from "../components/ProfileInfoPopup";
import MoreMenuPopup from "../components/MoreMenuPopup"; import MoreMenuPopup from "../components/MoreMenuPopup";
import profileInfoMixin from "../components/profileInfoMixin"; import profileInfoMixin from "../components/profileInfoMixin";
import RoomExport from "../components/RoomExport"; import AuthedImage from "./AuthedImage.vue";
import roomInfoMixin from "./roomInfoMixin"; import roomInfoMixin from "./roomInfoMixin";
export default { export default {
name: "ChatHeader", name: "ChatHeader",
mixins: [profileInfoMixin, roomInfoMixin], mixins: [profileInfoMixin, roomInfoMixin],
emits: ['download','view-room-details','header-click'],
components: { components: {
LeaveRoomDialog, LeaveRoomDialog,
ProfileInfoPopup, ProfileInfoPopup,
MoreMenuPopup, MoreMenuPopup,
RoomExport AuthedImage
}, },
data() { data() {
return { return {
@ -94,7 +90,6 @@ export default {
showLeaveConfirmation: false, showLeaveConfirmation: false,
showProfileInfo: false, showProfileInfo: false,
showMoreMenu: false, showMoreMenu: false,
downloadingChat: false,
showMissedItemsInfo: false, showMissedItemsInfo: false,
/** Timer for showing the "missed items" hint */ /** Timer for showing the "missed items" hint */
@ -106,7 +101,7 @@ export default {
this.updateMemberCount(); this.updateMemberCount();
}, },
destroyed() { unmounted() {
this.$matrix.off("Room.timeline", this.onEvent); this.$matrix.off("Room.timeline", this.onEvent);
}, },
@ -121,11 +116,11 @@ export default {
notificationsText() { notificationsText() {
const invitationCount = this.$matrix.invites.length const invitationCount = this.$matrix.invites.length
if (invitationCount > 0) { if (invitationCount > 0) {
return this.$tc('room.invitations', invitationCount); return this.$t('room.invitations', invitationCount);
} }
const missedMessagesCount = this.$matrix.joinedRooms.reduce((value, r) => ((r.roomId !== this.$matrix.currentRoomId && r.getCanonicalAlias() !== this.$matrix.currentRoomId) ? (value + r.getUnreadNotificationCount("total")) : value), 0); const missedMessagesCount = this.$matrix.joinedRooms.reduce((value, r) => ((r.roomId !== this.$matrix.currentRoomId && r.getCanonicalAlias() !== this.$matrix.currentRoomId) ? (value + r.getUnreadNotificationCount("total")) : value), 0);
if (missedMessagesCount > 0) { if (missedMessagesCount > 0) {
return this.$tc('room.unseen_messages', missedMessagesCount); return this.$t('room.unseen_messages', missedMessagesCount);
} }
return ""; return "";
}, },
@ -142,7 +137,7 @@ export default {
if (this.userCanExportChat) { if (this.userCanExportChat) {
items.push({ items.push({
icon: '$vuetify.icons.ic_download', text: this.$t('room_info.download_chat'), handler: () => { icon: '$vuetify.icons.ic_download', text: this.$t('room_info.download_chat'), handler: () => {
this.downloadingChat = true; this.$emit("download", { event: this.event });
} }
}); });
} }
@ -171,7 +166,9 @@ export default {
40, 40,
40, 40,
"scale", "scale",
true true,
false,
this.$matrix.useAuthedMedia
); );
} }
} }
@ -244,7 +241,7 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/chat.scss"; @use "@/assets/css/chat.scss" as *;
.popup-open { .popup-open {
position: relative; position: relative;

View file

@ -7,7 +7,7 @@
> >
<v-avatar size="48" class="clickable me-2 chat-header-avatar rounded-circle" color="grey" @click.stop="onAvatarClicked"> <v-avatar size="48" class="clickable me-2 chat-header-avatar rounded-circle" color="grey" @click.stop="onAvatarClicked">
<v-img v-if="privatePartyAvatar(40)" :src="privatePartyAvatar(40)" /> <v-img v-if="privatePartyAvatar(40)" :src="privatePartyAvatar(40)" />
<span v-else class="white--text headline">{{ <span v-else class="text-white headline">{{
privateParty.name.substring(0, 1).toUpperCase() privateParty.name.substring(0, 1).toUpperCase()
}}</span> }}</span>
</v-avatar> </v-avatar>
@ -37,28 +37,26 @@
<v-col v-if="$matrix.joinedRooms.length > 1" cols="auto" class="text-end ma-0 pa-0 ms-1"> <v-col v-if="$matrix.joinedRooms.length > 1" cols="auto" class="text-end ma-0 pa-0 ms-1">
<v-avatar :class="{ 'avatar-32': true, 'clickable': true, 'popup-open': showProfileInfo }" size="26" <v-avatar :class="{ 'avatar-32': true, 'clickable': true, 'popup-open': showProfileInfo }" size="26"
color="#e0e0e0" @click.stop="showProfileInfo = true"> color="#e0e0e0" @click.stop="showProfileInfo = true">
<img v-if="userAvatar" :src="userAvatar" /> <AuthedImage v-if="userAvatar" :src="userAvatar" />
<span v-else class="white--text">{{ userAvatarLetter }}</span> <span v-else class="text-white">{{ userAvatarLetter }}</span>
</v-avatar> </v-avatar>
</v-col> </v-col>
<v-col cols="auto" class="text-end ma-0 pa-0 ms-1"> <v-col cols="auto" class="text-end ma-0 pa-0 ms-1">
<v-btn id="btn-purge-room" v-if="userCanPurgeRoom" class="mx-2 box-shadow-none" fab dark small color="red" <v-btn id="btn-purge-room" v-if="userCanPurgeRoom" icon="$vuetify.icons.ic_moderator-delete" class="mx-2 box-shadow-none" theme="light" size="small" color="red"
@click.stop="$emit('purge')"> @click.stop="$emit('purge')">
<v-icon light>$vuetify.icons.ic_moderator-delete</v-icon>
</v-btn> </v-btn>
<template v-else> <template v-else>
<v-btn v-if="$matrix.joinedRooms.length == 1" id="btn-leave-room" class="box-shadow-none leave-button" color="red" @click.stop="leaveRoom"> <v-btn v-if="$matrix.joinedRooms.length == 1" id="btn-leave-room" class="box-shadow-none leave-button" theme="dark" color="red" @click.stop="leaveRoom">
<v-icon color="white">$vuetify.icons.ic_member-leave</v-icon>{{ $t('room.leave') }} <v-icon color="white"></v-icon>{{ $t('room.leave') }}
</v-btn> </v-btn>
<v-btn id="btn-leave-room" class="mx-2 box-shadow-none" fab dark small color="red" @click.stop="leaveRoom" v-else> <v-btn v-else id="btn-leave-room" icon="$vuetify.icons.ic_member-leave" class="mx-2 box-shadow-none" theme="dark" size="small" color="red" @click.stop="leaveRoom">
<v-icon color="white">$vuetify.icons.ic_member-leave</v-icon>
</v-btn> </v-btn>
</template> </template>
</v-col> </v-col>
<v-col v-if="$matrix.joinedRooms.length > 1" cols="auto" class="text-end ma-0 pa-0 ms-1 clickable close-button more-menu-button"> <v-col v-if="$matrix.joinedRooms.length > 1" cols="auto" class="text-end ma-0 pa-0 ms-1 clickable close-button more-menu-button">
<div :class="{ 'popup-open': showMoreMenu }"> <div :class="{ 'popup-open': showMoreMenu }">
<v-btn class="mx-2 box-shadow-none" fab dark small color="transparent" @click.stop="onShowMoreMenu"> <v-btn class="mx-2 box-shadow-none" icon theme="dark" size="small" color="transparent" @click.stop="onShowMoreMenu">
<v-icon size="15">$vuetify.icons.ic_more</v-icon> <v-icon size="15">$vuetify.icons.ic_more</v-icon>
</v-btn> </v-btn>
</div> </div>
@ -66,7 +64,7 @@
</v-row> </v-row>
<!-- "REALLY LEAVE?" dialog --> <!-- "REALLY LEAVE?" dialog -->
<LeaveRoomDialog :show="showLeaveConfirmation" :room="room" @close="showLeaveConfirmation = false" /> <LeaveRoomDialog v-model="showLeaveConfirmation" :room="room" />
<!-- PROFILE INFO POPUP --> <!-- PROFILE INFO POPUP -->
<ProfileInfoPopup :show="showProfileInfo" @close="showProfileInfo = false" /> <ProfileInfoPopup :show="showProfileInfo" @close="showProfileInfo = false" />
@ -75,8 +73,6 @@
<MoreMenuPopup :show="showMoreMenu" :menuItems="moreMenuItems" @close="showMoreMenu = false" <MoreMenuPopup :show="showMoreMenu" :menuItems="moreMenuItems" @close="showMoreMenu = false"
v-on:leave="showLeaveConfirmation = true" /> v-on:leave="showLeaveConfirmation = true" />
<RoomExport :room="room" v-if="downloadingChat" v-on:close="downloadingChat = false" />
</v-container> </v-container>
</template> </template>
@ -84,8 +80,7 @@
import LeaveRoomDialog from "../components/LeaveRoomDialog"; import LeaveRoomDialog from "../components/LeaveRoomDialog";
import ProfileInfoPopup from "../components/ProfileInfoPopup"; import ProfileInfoPopup from "../components/ProfileInfoPopup";
import MoreMenuPopup from "../components/MoreMenuPopup"; import MoreMenuPopup from "../components/MoreMenuPopup";
import RoomExport from "../components/RoomExport"; import AuthedImage from "./AuthedImage.vue";
import ChatHeader from "./ChatHeader.vue"; import ChatHeader from "./ChatHeader.vue";
export default { export default {
@ -95,14 +90,14 @@ export default {
LeaveRoomDialog, LeaveRoomDialog,
ProfileInfoPopup, ProfileInfoPopup,
MoreMenuPopup, MoreMenuPopup,
RoomExport AuthedImage
}, },
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/chat.scss"; @use "@/assets/css/chat.scss" as *;
.popup-open { .popup-open {
position: relative; position: relative;

View file

@ -0,0 +1,37 @@
<template>
<v-dialog
v-bind="{ ...$props }"
class="ma-0 pa-0"
:width="$vuetify.display.smAndUp ? '688px' : '95%'"
scroll-strategy="none"
@click:outside="$emit('update:modelValue', false)"
>
<v-card>
<v-card-text class="pa-4 black--text">{{ message }}</v-card-text>
<v-card-actions class="pt-3">
<v-spacer></v-spacer>
<v-btn variant="flat" class="text-button" @click.stop="$emit('update:modelValue', false)">{{ $t("menu.cancel") }}</v-btn>
<v-btn variant="flat" class="text-button" @click.stop="onOkButton">{{ $t("menu.ok") }}</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
name: "ConfirmationDialog",
props: ["modelValue"],
emits: ["update:modelValue", "ok"],
props: {
message: {
type: String,
default: "?",
},
},
methods: {
onOkButton() {
this.$emit("ok");
this.$emit("update:modelValue", false);
},
},
};
</script>

View file

@ -1,10 +1,10 @@
<template> <template>
<div> <div>
<v-expand-transition> <v-expand-transition>
<v-card class="ma-3" v-show="locationLink" flat> <v-card class="ma-3" v-show="locationLink" variant="flat">
<v-container> <v-container>
<slot/> <slot/>
<v-row cols="12" class="qr-container ma-3"> <v-row cols="12" class="qr-container mt-3 ml-3 mr-3">
<v-col cols="auto"> <v-col cols="auto">
<canvas <canvas
v-longTap:250="[ v-longTap:250="[
@ -23,12 +23,31 @@
<div class="link">{{ locationLink }}</div> <div class="link">{{ locationLink }}</div>
</v-col> </v-col>
</v-row> </v-row>
<v-row align="center" class="mt-0 pt-0"> <v-row v-if="mirrors.length > 0" justify="end" class="mt-3">
<v-col cols="auto">
<v-select
:items="mirrors"
v-model="currentMirror"
:menu-props="{ auto: true }"
hide-details
single-line
density="compact"
bg-color="transparent"
variant="solo"
flat
>
<template v-slot:selection>
<span style="font-size: 0.8rem">Use a mirror</span>
</template>
</v-select>
</v-col>
</v-row>
<v-row align="center" class="mt-3 pt-0">
<v-col align="center" class="mt-0 pt-0"> <v-col align="center" class="mt-0 pt-0">
<v-btn <v-btn
id="btn-copy-room-link" id="btn-copy-room-link"
:color="locationLinkCopied ? '#DEE6FF' : 'black'" :color="locationLinkCopied ? '#DEE6FF' : 'black'"
depressed variant="flat"
@click.stop="copyRoomLink" @click.stop="copyRoomLink"
:class="{'filled-button' : true, 'link-copied-in-place' : locationLinkCopied}" :class="{'filled-button' : true, 'link-copied-in-place' : locationLinkCopied}"
>{{ $t(`room_info.${locationLinkCopied ? 'link_copied' : i18nCopyLinkKey}`) }}</v-btn >{{ $t(`room_info.${locationLinkCopied ? 'link_copied' : i18nCopyLinkKey}`) }}</v-btn
@ -50,6 +69,7 @@ export default {
components: { components: {
QRCodePopup QRCodePopup
}, },
emits: ['mirror-change'],
props: { props: {
locationLink: { locationLink: {
type: String type: String
@ -61,19 +81,32 @@ export default {
i18nQrPopupTitleKey: { i18nQrPopupTitleKey: {
type: String, type: String,
default: 'room_info.scan_code' default: 'room_info.scan_code'
},
allowMirrors: {
type: Boolean,
default: false
} }
}, },
data() { data() {
return { return {
locationLinkCopied: false, locationLinkCopied: false,
showFullScreenQR: false, showFullScreenQR: false,
currentMirror: "",
} }
}, },
computed: { computed: {
popupTitle() { popupTitle() {
return this.$t(this.i18nQrPopupTitleKey); return this.$t(this.i18nQrPopupTitleKey);
}, },
mirrors() {
if (this.allowMirrors) {
const m = this.$config.mirrors;
if (m && Array.isArray(m) && m.length > 0) {
return m;
}
}
return [];
}
}, },
methods: { methods: {
copyRoomLink() { copyRoomLink() {
@ -118,6 +151,11 @@ export default {
handler() { handler() {
this.updateQRCode(); this.updateQRCode();
} }
},
currentMirror: {
handler(newVal) {
this.$emit("mirror-change", newVal);
}
} }
}, },
mounted() { mounted() {

View file

@ -1,7 +1,7 @@
<template> <template>
<div class="create-root fill-height"> <div class="create-root fill-height">
<div class="mt-4 d-flex flex-row align-center"> <div class="mt-4 d-flex flex-row align-center">
<v-btn id="btn-back" text class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack"> <v-btn id="btn-back" variant="text" class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack">
<v-icon>arrow_back</v-icon> <v-icon>arrow_back</v-icon>
</v-btn> </v-btn>
<YouAre class="flex-grow-1 text-end" v-if="loggedIn" /> <YouAre class="flex-grow-1 text-end" v-if="loggedIn" />
@ -62,8 +62,9 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/typography.scss"; @use "@/assets/css/typography.scss";
@import "@/assets/css/create.scss"; @use "@/assets/css/create.scss";
@use "@/assets/css/variables" as *;
.create-title { .create-title {
margin-bottom: 24 * $chat-text-size; margin-bottom: 24 * $chat-text-size;

View file

@ -1,7 +1,7 @@
<template> <template>
<div class="create-root fill-height"> <div class="create-root fill-height">
<div class="mt-4 d-flex flex-row align-center"> <div class="mt-4 d-flex flex-row align-center">
<v-btn id="btn-back" text class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack" <v-btn id="btn-back" variant="text" class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack"
:disabled="creatingRoom"> :disabled="creatingRoom">
<v-icon>arrow_back</v-icon> <v-icon>arrow_back</v-icon>
</v-btn> </v-btn>
@ -18,22 +18,22 @@
<v-text-field v-model="roomTopic" :label="$t('createchannel.channel_topic')" <v-text-field v-model="roomTopic" :label="$t('createchannel.channel_topic')"
v-bind="{ ...roomTopicInputFields }" v-on="{ ...roomTopicInputListeners }"></v-text-field> v-bind="{ ...roomTopicInputFields }" v-on="{ ...roomTopicInputListeners }"></v-text-field>
<div class="caption-2 text-center mt-2 mb-8">{{ $t('createchannel.channel_topic_label') }}</div> <div class="caption-2 text-center mt-2 mb-8">{{ $t('createchannel.channel_topic_label') }}</div>
<div class="error--text" v-if="errorMessage != null">{{ this.errorMessage }}</div> <div class="text-red" v-if="errorMessage != null">{{ this.errorMessage }}</div>
<interactive-auth ref="interactiveAuth" /> <interactive-auth ref="interactiveAuth" />
<div class="create-buttons"> <div class="create-buttons">
<!-- Create button --> <!-- Create button -->
<v-btn :disabled="!formIsValid || creatingRoom" color="#6360F0" depressed @click.stop="handleNext" <v-btn :disabled="!formIsValid || creatingRoom" color="#6360F0" variant="flat" @click.stop="handleNext"
class="filled-button mt-4"> class="filled-button mt-4">
<div v-if="creatingRoom" class="text-center"> <div v-if="creatingRoom" class="text-center">
{{ creatingRoomStatus }} {{ creatingRoomStatus }}
<v-progress-circular v-if="creatingRoom" :indeterminate="creatingRoomProgress == null" <v-progress-circular v-if="creatingRoom" :indeterminate="creatingRoomProgress == null"
:value="creatingRoomProgress" color="primary" width="2" size="20"></v-progress-circular> :model-value="creatingRoomProgress" color="primary" width="2" size="20"></v-progress-circular>
</div> </div>
<span v-else>{{ $t("getlink.next") }}</span> <span v-else>{{ $t("getlink.next") }}</span>
</v-btn> </v-btn>
<v-btn v-if="!loggedIn" color="black" depressed text @click.stop="goToLoginPage" class="text-button">{{ <v-btn v-if="!loggedIn" color="black" variant="flat" @click.stop="goToLoginPage" class="text-button">{{
$t("menu.login") $t("menu.login")
}}</v-btn> }}</v-btn>
</div> </div>
@ -98,7 +98,7 @@ export default {
generateAliasForRoom() { generateAliasForRoom() {
return true; return true;
}, },
getRoomCreationOptions() { getRoomCreationOptions(roomVersion) {
const createRoomOptions = { const createRoomOptions = {
visibility: "private", // Not listed! visibility: "private", // Not listed!
name: this.roomName, name: this.roomName,
@ -132,7 +132,9 @@ export default {
// Set power level event. Need to do that here, because we might not have the userId when the options object is created. // Set power level event. Need to do that here, because we might not have the userId when the options object is created.
const powerLevels = {}; const powerLevels = {};
powerLevels[this.$matrix.currentUserId] = 100; if (roomVersion < 12) {
powerLevels[this.$matrix.currentUserId] = 100;
}
let powerLevelContent = { let powerLevelContent = {
users: powerLevels, users: powerLevels,
events_default: 50, events_default: 50,
@ -182,6 +184,6 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/typography.scss"; @use "@/assets/css/typography.scss";
@import "@/assets/css/create.scss"; @use "@/assets/css/create.scss";
</style> </style>

View file

@ -1,7 +1,7 @@
<template> <template>
<div class="create-root fill-height"> <div class="create-root fill-height">
<div class="mt-4 d-flex flex-row align-center"> <div class="mt-4 d-flex flex-row align-center">
<v-btn id="btn-back" text class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack" <v-btn id="btn-back" variant="text" class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack"
:disabled="creatingRoom"> :disabled="creatingRoom">
<v-icon>arrow_back</v-icon> <v-icon>arrow_back</v-icon>
</v-btn> </v-btn>
@ -16,22 +16,22 @@
<v-text-field v-model="roomName" :label="$t('createfiledrop.filedrop_name')" <v-text-field v-model="roomName" :label="$t('createfiledrop.filedrop_name')"
v-bind="{ ...roomNameInputFields }" v-on="{ ...roomNameInputListeners }"></v-text-field> v-bind="{ ...roomNameInputFields }" v-on="{ ...roomNameInputListeners }"></v-text-field>
<div class="error--text" v-if="errorMessage != null">{{ this.errorMessage }}</div> <div class="text-red" v-if="errorMessage != null">{{ this.errorMessage }}</div>
<interactive-auth ref="interactiveAuth" /> <interactive-auth ref="interactiveAuth" />
<div class="create-buttons"> <div class="create-buttons">
<!-- Create button --> <!-- Create button -->
<v-btn :disabled="!formIsValid || creatingRoom" color="#6360F0" depressed @click.stop="handleNext" <v-btn :disabled="!formIsValid || creatingRoom" color="#6360F0" variant="flat" @click.stop="handleNext"
class="filled-button mt-4"> class="filled-button mt-4">
<div v-if="creatingRoom" class="text-center"> <div v-if="creatingRoom" class="text-center">
{{ creatingRoomStatus }} {{ creatingRoomStatus }}
<v-progress-circular v-if="creatingRoom" :indeterminate="creatingRoomProgress == null" <v-progress-circular v-if="creatingRoom" :indeterminate="creatingRoomProgress == null"
:value="creatingRoomProgress" color="primary" width="2" size="20"></v-progress-circular> :model-value="creatingRoomProgress" color="primary" width="2" size="20"></v-progress-circular>
</div> </div>
<span v-else>{{ $t("getlink.next") }}</span> <span v-else>{{ $t("getlink.next") }}</span>
</v-btn> </v-btn>
<v-btn v-if="!loggedIn" color="black" depressed text @click.stop="goToLoginPage" class="text-button">{{ <v-btn v-if="!loggedIn" color="black" variant="flat" @click.stop="goToLoginPage" class="text-button">{{
$t("menu.login") $t("menu.login")
}}</v-btn> }}</v-btn>
</div> </div>
@ -95,7 +95,7 @@ export default {
generateAliasForRoom() { generateAliasForRoom() {
return true; return true;
}, },
getRoomCreationOptions() { getRoomCreationOptions(roomVersion) {
const createRoomOptions = { const createRoomOptions = {
visibility: "private", // Not listed! visibility: "private", // Not listed!
name: this.roomName, name: this.roomName,
@ -142,7 +142,9 @@ export default {
// Set power level event. Need to do that here, because we might not have the userId when the options object is created. // Set power level event. Need to do that here, because we might not have the userId when the options object is created.
const powerLevels = {}; const powerLevels = {};
powerLevels[this.$matrix.currentUserId] = 100; if (roomVersion < 12) {
powerLevels[this.$matrix.currentUserId] = 100;
}
let powerLevelContent = { let powerLevelContent = {
users: powerLevels, users: powerLevels,
events_default: 0, events_default: 0,
@ -190,6 +192,6 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/typography.scss"; @use "@/assets/css/typography.scss";
@import "@/assets/css/create.scss"; @use "@/assets/css/create.scss";
</style> </style>

View file

@ -1,16 +1,15 @@
<template> <template>
<v-dialog <RoundedDialog
v-model="showDialog" v-model="showDialog"
v-show="room"
scrollable scrollable
class="ma-0 pa-0" class="ma-0 pa-0"
:width="$vuetify.breakpoint.smAndUp ? '940px' : '95%'" :width="$vuetify.display.smAndUp ? '940px' : '95%'"
> >
<v-card> <v-card>
<v-card-title> <v-card-title>
<v-container fluid> <v-container fluid>
<div class="room-name no-upper">{{ $t("poll_create.title") }}</div> <div class="room-name no-upper">{{ $t("poll_create.title") }}</div>
<v-btn id="btn-close" text class="header-button-right" @click.stop="showDialog = false"> <v-btn id="btn-close" icon class="header-button-right" @click.stop="showDialog = false">
<v-icon>close</v-icon> <v-icon>close</v-icon>
</v-btn> </v-btn>
</v-container> </v-container>
@ -52,7 +51,7 @@
:class="{ deletable: pollAnswers.length > 1 }" :class="{ deletable: pollAnswers.length > 1 }"
ref="answerInput" ref="answerInput"
> >
<v-btn v-if="pollAnswers.length > 1" icon @click="removeAnswer(index)"><v-icon>delete</v-icon></v-btn> <v-btn v-if="pollAnswers.length > 1" color="transparent" icon="delete" @click="removeAnswer(index)"></v-btn>
</InputControl> </InputControl>
</v-col> </v-col>
</v-row> </v-row>
@ -60,7 +59,7 @@
<v-row cols="12" no-gutters class="ma-0 pa-0"> <v-row cols="12" no-gutters class="ma-0 pa-0">
<v-col class="ma-0 pa-0"> <v-col class="ma-0 pa-0">
<div :class="{'add-answer-button':true, 'clickable': true, 'hidden': addingAnswer}" @click.stop="addAnswer"> <div :class="{'add-answer-button':true, 'clickable': true, 'hidden': addingAnswer}" @click.stop="addAnswer">
<img src="@/assets/icons/ic_add.svg" /> <v-icon>$vuetify.icons.ic_add</v-icon>
</div> </div>
</v-col> </v-col>
</v-row> </v-row>
@ -68,7 +67,7 @@
<v-col cols="auto"> <v-col cols="auto">
<v-btn <v-btn
id="btn-create-poll" id="btn-create-poll"
depressed variant="flat"
block block
class="filled-button publish-button" class="filled-button publish-button"
@click.stop="onCreatePoll()" @click.stop="onCreatePoll()"
@ -98,37 +97,22 @@
</v-container> </v-container>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-dialog> </RoundedDialog>
</template> </template>
<script> <script>
import roomInfoMixin from "./roomInfoMixin";
import util from "../plugins/utils"; import util from "../plugins/utils";
import InputControl from "./InputControl.vue"; import InputControl from "./InputControl.vue";
import RoomDialogBase from "./RoomDialogBase.vue";
import RoundedDialog from "./RoundedDialog.vue";
export default { export default {
name: "CreatePollDialog", name: "CreatePollDialog",
mixins: [roomInfoMixin], extends: RoomDialogBase,
props: {
show: {
type: Boolean,
default: function() {
return false;
},
},
},
data() { data() {
return this.defaultData(); return this.defaultData();
}, },
watch: { methods: {
show: { onOpenDialog() {
handler(newVal, ignoredOldVal) {
this.showDialog = newVal;
},
},
showDialog() {
if (!this.showDialog) {
this.$emit("close");
} else {
// Reset values // Reset values
let defaults = this.defaultData(); let defaults = this.defaultData();
this.isValid = defaults.isValid; this.isValid = defaults.isValid;
@ -142,13 +126,9 @@ export default {
if (this.$refs.pollcreateform) { if (this.$refs.pollcreateform) {
this.$refs.pollcreateform.resetValidation(); this.$refs.pollcreateform.resetValidation();
} }
}
}, },
},
methods: {
defaultData() { defaultData() {
return { return {
showDialog: false,
isValid: true, isValid: true,
isCreating: false, isCreating: false,
status: String.fromCharCode(160), status: String.fromCharCode(160),
@ -213,11 +193,11 @@ export default {
return this.pollQuestion && this.pollAnswers.length > 0 && this.pollAnswers.every(a => a.text); return this.pollQuestion && this.pollAnswers.length > 0 && this.pollAnswers.every(a => a.text);
} }
}, },
components: { InputControl }, components: { InputControl, RoundedDialog },
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/chat.scss"; @use "@/assets/css/chat.scss" as *;
@import "@/assets/css/components/poll.scss"; @use "@/assets/css/components/poll.scss";
</style> </style>

View file

@ -1,7 +1,7 @@
<template> <template>
<div class="create-root fill-height"> <div class="create-root fill-height">
<div class="mt-4 d-flex flex-row align-center"> <div class="mt-4 d-flex flex-row align-center">
<v-btn id="btn-back" text class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack" <v-btn id="btn-back" variant="text" class="back-button" v-show="$navigation && $navigation.canPop()" @click.stop="goBack"
:disabled="creatingRoom"> :disabled="creatingRoom">
<v-icon>arrow_back</v-icon> <v-icon>arrow_back</v-icon>
</v-btn> </v-btn>
@ -18,7 +18,7 @@
v-on="{ ...roomTopicInputListeners }"></v-text-field> v-on="{ ...roomTopicInputListeners }"></v-text-field>
<!-- Message History (public room) --> <!-- Message History (public room) -->
<v-card class="ma-0 mt-10" flat> <v-card class="ma-0 mt-10" variant="flat">
<v-card-text class="with-right-label"> <v-card-text class="with-right-label">
<div> <div>
<div class="paragraph-bold">{{ $t('room_info.message_history') }}</div> <div class="paragraph-bold">{{ $t('room_info.message_history') }}</div>
@ -33,7 +33,7 @@
<hr color="#ededed" /> <hr color="#ededed" />
<!-- Limit History (message retention) --> <!-- Limit History (message retention) -->
<v-card class="ma-0 mt-2" flat> <v-card class="ma-0 mt-2" variant="flat">
<v-card-text class="with-right-label"> <v-card-text class="with-right-label">
<div> <div>
<div class="paragraph-bold">{{ $t('room_info.message_retention') }}</div> <div class="paragraph-bold">{{ $t('room_info.message_retention') }}</div>
@ -48,15 +48,15 @@
</v-card> </v-card>
<div class="error--text" v-if="errorMessage != null">{{ this.errorMessage }}</div> <div class="text-red" v-if="errorMessage != null">{{ this.errorMessage }}</div>
<!-- Create button --> <!-- Create button -->
<v-btn :disabled="!formIsValid || creatingRoom" color="#6360F0" depressed @click.stop="onCreate" <v-btn :disabled="!formIsValid || creatingRoom" color="#6360F0" variant="flat" @click.stop="onCreate"
class="filled-button mt-4"> class="filled-button mt-4">
<div v-if="creatingRoom && !enterRoomDialog" class="text-center"> <div v-if="creatingRoom && !enterRoomDialog" class="text-center">
{{ creatingRoomStatus }} {{ creatingRoomStatus }}
<v-progress-circular v-if="creatingRoom" :indeterminate="creatingRoomProgress == null" <v-progress-circular v-if="creatingRoom" :indeterminate="creatingRoomProgress == null"
:value="creatingRoomProgress" color="primary" width="2" size="20"></v-progress-circular> :model-value="creatingRoomProgress" color="primary" width="2" size="20"></v-progress-circular>
</div> </div>
<span v-else>{{ $t("getlink.next") }}</span> <span v-else>{{ $t("getlink.next") }}</span>
</v-btn> </v-btn>
@ -70,24 +70,45 @@
<input id="user-avatar-picker" ref="useravatar" type="file" name="user-avatar" <input id="user-avatar-picker" ref="useravatar" type="file" name="user-avatar"
@change="handlePickedUserAvatar($event)" accept="image/*" class="d-none" /> @change="handlePickedUserAvatar($event)" accept="image/*" class="d-none" />
<v-dialog v-model="enterRoomDialog" :width="$vuetify.breakpoint.smAndUp ? '50%' : '90%'"> <v-dialog v-model="enterRoomDialog" :width="$vuetify.display.smAndUp ? '50%' : '90%'">
<v-card> <v-card>
<v-container v-if="canEditProfile" class="pa-10"> <v-container v-if="canEditProfile" class="pa-10">
<v-row class="align-center"> <v-row class="align-center">
<v-col class="py-0"> <v-col class="py-0">
<div class="text-start font-weight-bold">{{ $t("join.choose_name") }}</div> <div class="text-start font-weight-bold">{{ $t("join.choose_name") }}</div>
<v-select ref="avatar" :items="availableAvatars" cache-items outlined dense @change="selectAvatar" <v-select ref="avatar"
:value="selectedProfile"> :items="availableAvatars"
variant="outlined"
density="compact"
@update:modelValue="selectAvatar"
:modelValue="selectedProfile"
item-props
item-value="id"
return-object
single-line
class="avatar-select-control"
>
<template v-slot:selection> <template v-slot:selection>
<v-text-field background-color="transparent" solo flat hide-details <v-text-field
@click.native.stop="(event) => event.target.focus()" @focus="$event.target.select()" background-color="transparent"
variant="solo"
flat
density="compact"
hide-details
@keydown="$event.stopPropagation()"
@keypress="$event.stopPropagation()"
@keyup="$event.stopPropagation()"
@click.stop="(event) => event.target.focus()" @focus="$event.target.select()"
v-model="selectedProfile.name"></v-text-field> v-model="selectedProfile.name"></v-text-field>
</template> </template>
<template v-slot:item="data"> <template v-slot:item="{ props }">
<v-avatar size="32"> <v-list-item v-bind="props">
<v-img :src="data.item.image" /> <template v-slot:prepend>
</v-avatar> <v-avatar size="32">
<div class="ms-2">{{ data.item.name }}</div> <v-img :src="props.image" />
</v-avatar>
</template>
</v-list-item>
</template> </template>
</v-select> </v-select>
</v-col> </v-col>
@ -99,24 +120,24 @@
</v-row> </v-row>
<v-row class="mt-0"> <v-row class="mt-0">
<v-col class="py-0"> <v-col class="py-0">
<v-checkbox id="chk-remember-me" class="mt-0" v-model="rememberMe" @change="onRememberMe" <v-checkbox id="chk-remember-me" class="mt-0" v-model="rememberMe"
:label="$t('join.remember_me')" /> :label="$t('join.remember_me')" />
</v-col> </v-col>
</v-row> </v-row>
<v-row class="mt-0"> <v-row class="mt-0">
<v-col class="py-0"> <v-col class="py-0">
<v-checkbox id="chk-accept-ua" class="mt-0" v-model="acceptUA"> <v-checkbox id="chk-accept-ua" class="mt-0" v-model="acceptUA">
<template slot="label"> <template v-slot:label>
<i18n path="join.accept_ua" tag="span"> <i18n-t keypath="join.accept_ua" tag="span">
<template v-slot:agreement> <template v-slot:agreement>
<a href="./ua.html" target="_blank" @click.stop>{{ $t("join.ua") }}</a> <a href="./ua.html" target="_blank" @click.stop>{{ $t("join.ua") }}</a>
</template> </template>
</i18n> </i18n-t>
</template> </template>
</v-checkbox> </v-checkbox>
</v-col> </v-col>
</v-row> </v-row>
<v-btn color="black" depressed class="filled-button" @click.stop="onEnterRoom" <v-btn color="black" variant="flat" class="filled-button" @click.stop="onEnterRoom"
:disabled="!acceptUA || !selectedProfile.name"> :disabled="!acceptUA || !selectedProfile.name">
{{ $t("join.enter_room") }} {{ $t("join.enter_room") }}
</v-btn> </v-btn>
@ -124,8 +145,10 @@
</v-card> </v-card>
</v-dialog> </v-dialog>
<MessageRetentionDialog :initialValue="limitHistoryMilliseconds" :show="selectRetentionDialog" <MessageRetentionDialog
v-on:close="selectRetentionDialog = false" v-on:message-retention-update="onUpdateHistoryLimit" /> v-model="selectRetentionDialog"
:initialValue="limitHistoryMilliseconds"
v-on:message-retention-update="onUpdateHistoryLimit" />
</div> </div>
</template> </template>
@ -149,7 +172,8 @@ export default {
selectedProfile: { selectedProfile: {
id: "", id: "",
image: "", image: "",
name: "" name: "",
title: "",
}, },
enterRoomDialog: false, enterRoomDialog: false,
selectRetentionDialog: false, selectRetentionDialog: false,
@ -253,7 +277,7 @@ export default {
generateAliasForRoom() { generateAliasForRoom() {
return this.publicRoom; return this.publicRoom;
}, },
getRoomCreationOptions() { getRoomCreationOptions(roomVersion) {
var createRoomOptions = {}; var createRoomOptions = {};
if (this.publicRoom) { if (this.publicRoom) {
createRoomOptions = { createRoomOptions = {
@ -318,7 +342,9 @@ export default {
// Set power level event. Need to do that here, because we might not have the userId when the options object is created. // Set power level event. Need to do that here, because we might not have the userId when the options object is created.
const powerLevels = {}; const powerLevels = {};
powerLevels[this.$matrix.currentUserId] = 100; if (roomVersion < 12) {
powerLevels[this.$matrix.currentUserId] = 100;
}
let powerLevelContent = { let powerLevelContent = {
users: powerLevels, users: powerLevels,
events_default: 0 events_default: 0
@ -333,6 +359,7 @@ export default {
}, },
selectAvatar(value) { selectAvatar(value) {
console.log("SELECT AVATAR", value);
this.selectedProfile = Object.assign({}, value); // Make a copy, so editing does not destroy data this.selectedProfile = Object.assign({}, value); // Make a copy, so editing does not destroy data
}, },
@ -369,5 +396,9 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/create.scss"; @use "@/assets/css/create.scss";
.avatar-select-control .v-select__selection {
flex-basis: 100%;
}
</style> </style>

View file

@ -1,27 +1,26 @@
<template> <template>
<v-list dense @click.native.stop="nullEvent"> <v-list density="compact" @click.stop="nullEvent" color="primary">
<v-list-item-group color="primary">
<v-list-item <v-list-item
v-for="device in devices" v-for="device in devices"
:key="device.deviceId" :key="device.deviceId"
:value="device.deviceId" :value="device.deviceId"
> >
<template v-slot:default="{ active }"> <template v-slot:default>
<v-list-item-content>
<v-list-item-title>{{ displayName(device) }}</v-list-item-title> <v-list-item-title>{{ displayName(device) }}</v-list-item-title>
<v-list-item-subtitle>{{ <v-list-item-subtitle>{{
verificationStatus(device) verificationStatus(device)
}}</v-list-item-subtitle> }}</v-list-item-subtitle>
</v-list-item-content> </template>
<v-list-item-action v-if="active"> <template v-slot:append="{ isActive }">
<v-list-item-action v-if="isActive">
<v-btn icon> <v-btn icon>
<v-icon <v-icon
:color=" :color="
device.isBlocked() device.isBlocked
? 'red' ? 'red'
: device.isVerified() : device.isVerified
? 'green' ? 'green'
: 'grey lighten-1' : 'grey-lighten-1'
" "
>verified_user</v-icon >verified_user</v-icon
> >
@ -29,11 +28,12 @@
</v-list-item-action> </v-list-item-action>
</template> </template>
</v-list-item> </v-list-item>
</v-list-item-group>
</v-list> </v-list>
</template> </template>
<script> <script>
import { DeviceVerification } from 'matrix-js-sdk';
export default { export default {
name: "DeviceList", name: "DeviceList",
props: { props: {
@ -55,7 +55,7 @@ export default {
handler(member, ignoredOldVal) { handler(member, ignoredOldVal) {
this.updateDevices(); this.updateDevices();
if (member) { if (member) {
this.$matrix.matrixClient.downloadKeys([member.userId]).then(() => { this.$matrix.matrixClient.downloadKeysForUsers([member.userId]).then(() => {
this.updateDevices(); this.updateDevices();
}); });
} }
@ -68,23 +68,36 @@ export default {
this.devices = []; this.devices = [];
return; return;
} }
this.devices = this.$matrix.matrixClient.getStoredDevicesForUser( this.$matrix.matrixClient.getCrypto().getUserDeviceInfo(
this.member.userId [this.member.userId], true
); ).then(deviceMap => {
if (deviceMap && deviceMap.get(this.member.userId)) {
const userDevices = deviceMap.get(this.member.userId);
const devices = [...userDevices.keys()].map(k => {
return userDevices.get(k);
}).map(d => ({
deviceId: d.deviceId,
displayName: d.displayName,
isBlocked: d.verified == DeviceVerification.Blocked,
isVerified: d.verified == DeviceVerification.Verified
}));
this.devices = devices;
}
})
}, },
displayName(device) { displayName(device) {
var name = device.deviceId; var name = device.deviceId;
if (device.getDisplayName()) { if (device.displayName) {
name += " - " + device.getDisplayName(); name += " - " + device.displayName;
} }
return name; return name;
}, },
verificationStatus(device) { verificationStatus(device) {
if (device.isBlocked()) { if (device.isBlocked) {
return this.$t('device_list.blocked'); return this.$t('device_list.blocked');
} else if (device.isVerified()) { } else if (device.isVerified) {
return this.$t('device_list.verified'); return this.$t('device_list.verified');
} else { } else {
return this.$t('device_list.not_verified'); return this.$t('device_list.not_verified');

View file

@ -7,20 +7,20 @@
<div color="rgba(255,255,255,0.1)" class="text-center"> <div color="rgba(255,255,255,0.1)" class="text-center">
<v-form v-model="isValid" ref="form"> <v-form v-model="isValid" ref="form">
<v-text-field v-model="user.user_id" :label="$t('getlink.username')" color="black" background-color="white" <v-text-field v-model="user.user_id" :label="$t('getlink.username')" color="black" background-color="white"
solo :rules="[(v) => !!v || $t('login.username_required')]" :error="userErrorMessage != null" variant="solo" :rules="[(v) => !!v || $t('login.username_required')]" :error="userErrorMessage != null"
:error-messages="userErrorMessage" required v-on:keyup.enter="onUsernameEnter" :error-messages="userErrorMessage" required v-on:keyup.enter="onUsernameEnter"
v-on:keydown="hasError = false"></v-text-field> v-on:keydown="hasError = false"></v-text-field>
<!-- <div class="error--text" v-if="loadingLoginFlows">Loading login flows...</div> --> <!-- <div class="text-red" v-if="loadingLoginFlows">Loading login flows...</div> -->
<div class="error--text" v-if="hasError">{{ this.message }}</div> <div class="text-red" v-if="hasError">{{ this.message }}</div>
<interactive-auth ref="interactiveAuth" /> <interactive-auth ref="interactiveAuth" />
<div class="create-buttons"> <div class="create-buttons">
<v-btn id="btn-login" :disabled="!isValid || loading" color="primary" depressed block <v-btn id="btn-login" :disabled="!isValid || loading" color="primary" variant="flat" block
@click.stop="handleLogin" :loading="loading" class="filled-button mt-4">{{ $t("getlink.next") }}</v-btn> @click.stop="handleLogin" :loading="loading" class="filled-button mt-4">{{ $t("getlink.next") }}</v-btn>
<v-btn color="black" depressed text block @click.stop="goToLoginPage" class="text-button">{{ <v-btn color="black" variant="flat" block @click.stop="goToLoginPage" class="text-button">{{
$t("menu.login") $t("menu.login")
}}</v-btn> }}</v-btn>
</div> </div>
@ -36,14 +36,14 @@
<template v-slot:share> <template v-slot:share>
<div v-if="shareSupported" class="clickable create-share" @click="shareLink"> <div v-if="shareSupported" class="clickable create-share" @click="shareLink">
<div>{{ $t("getlink.share_qr") }}</div> <div>{{ $t("getlink.share_qr") }}</div>
<v-img src="@/assets/icons/ic_share.svg" /> <v-icon>$vuetify.icons.ic_share</v-icon>
</div> </div>
</template> </template>
</copy-link> </copy-link>
<div class="create-buttons"> <div class="create-buttons">
<v-btn color="black" style="color:black;background-color:white !important;" depressed @click.stop="goHome" <v-btn color="black" style="color:black;background-color:white !important;" variant="flat" @click.stop="goHome"
class="outlined-button">{{ $t("getlink.continue") }}</v-btn> class="outlined-button">{{ $t("getlink.continue") }}</v-btn>
<v-btn color="black" depressed text block @click.stop="getDifferentLink" class="text-button">{{ <v-btn color="black" variant="flat" block @click.stop="getDifferentLink" class="text-button">{{
$t("getlink.different_link") }}</v-btn> $t("getlink.different_link") }}</v-btn>
</div> </div>
</div> </div>
@ -248,6 +248,6 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/typography.scss"; @use "@/assets/css/typography.scss";
@import "@/assets/css/create.scss"; @use "@/assets/css/create.scss";
</style> </style>

View file

@ -12,7 +12,7 @@
</v-row> </v-row>
</v-container> </v-container>
<v-card class="members ma-3" flat> <v-card class="members ma-3" variant="flat">
<v-card-title class="h2">{{ $t("room.room_list_rooms") }}</v-card-title> <v-card-title class="h2">{{ $t("room.room_list_rooms") }}</v-card-title>
<v-card-text class="pa-0"> <v-card-text class="pa-0">
<RoomList <RoomList
@ -26,9 +26,8 @@
<!-- Loading indicator --> <!-- Loading indicator -->
<v-container <v-container
fluid fluid
fill-height
v-if="loading" v-if="loading"
class="loading-indicator" class="loading-indicator transparent fill-height"
> >
<v-row align="center" justify="center"> <v-row align="center" justify="center">
<v-col class="text-center"> <v-col class="text-center">
@ -43,7 +42,7 @@
</template> </template>
<script> <script>
import RoomList from "../components/RoomList"; import RoomList from "../components/RoomList.vue";
import YouAre from "../components/YouAre.vue"; import YouAre from "../components/YouAre.vue";
import logoMixin from "../components/logoMixin"; import logoMixin from "../components/logoMixin";
export default { export default {

View file

@ -0,0 +1,46 @@
<template>
<v-img class="image-with-progress" v-bind="{...$props, ...$attrs}">
<LoadProgress class="image-with-progress__progress" v-if="loadingProgress != undefined && loadingProgress >= 0 && loadingProgress < 100" :percentage="loadingProgress" />
</v-img>
</template>
<script>
import User from "../models/user";
import util from "../plugins/utils";
import rememberMeMixin from "./rememberMeMixin";
import * as sdk from "matrix-js-sdk";
import logoMixin from "./logoMixin";
import LoadProgress from "./LoadProgress.vue";
import { VImg } from "vuetify/components/VImg";
export default {
name: "ImageWithProgress",
extends: VImg,
components: { LoadProgress },
props: {
loadingProgress: {
type: Number,
default: function () {
return -1;
},
},
},
data() {
return {};
},
};
</script>
<style lang="scss">
.image-with-progress {
position: relative;
.image-with-progress__progress {
position: absolute;
top: 4px;
right: 4px;
color: white;
width: 32px;
height: 32px;
}
}
</style>

View file

@ -23,6 +23,7 @@ export default {
prop: "modelValue", prop: "modelValue",
event: "update:modelValue", event: "update:modelValue",
}, },
emits: ['update:modelValue'],
props: { props: {
label: { label: {
type: String, type: String,
@ -64,7 +65,7 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@/assets/css/chat.scss"; @use "@/assets/css/chat.scss" as *;
.input-field { .input-field {
width: 100%; width: 100%;

Some files were not shown because too many files have changed in this diff Show more