Compare commits
63 commits
Author | SHA1 | Date | |
---|---|---|---|
|
c675f62e3a | ||
|
cf5d3819a8 | ||
80840dfd05 | |||
dcded3e946 | |||
|
dbcdb0f633 | ||
5eeb7066f2 | |||
|
7ff452681b | ||
|
ea661f6842 | ||
f863aaaca5 | |||
2bf2b94f9a | |||
7d49e1e94f | |||
|
182d619ca3 | ||
|
0343cd8bd3 | ||
|
b1532b5f3c | ||
|
558410d1c9 | ||
|
ad02237b6e | ||
|
2bd41dd19e | ||
|
40be0f7460 | ||
7e5c21d6d1 | |||
1272e6b7c0 | |||
d39e8e0607 | |||
fad8648a06 | |||
|
cbf68611fb | ||
|
2b73a81834 | ||
|
6a704a5167 | ||
|
789bab93a6 | ||
b396b529b3 | |||
|
e1be93f3fc | ||
|
923863e262 | ||
|
b37cbc498c | ||
|
c4fe7f1a88 | ||
|
27020a4358 | ||
|
2939bb467b | ||
|
ab681b3fea | ||
|
393334b083 | ||
|
e335d48542 | ||
|
674e8c94e7 | ||
|
5403cadde4 | ||
51f788e84f | |||
|
d5990f165b | ||
0a5c7bec1a | |||
657dacb38c | |||
cc2585409c | |||
f625d044e0 | |||
|
6752f5d5d9 | ||
|
fa7f387b63 | ||
449544bf02 | |||
|
a86b700093 | ||
|
ec433731a8 | ||
|
215a1b9391 | ||
|
97eb259cca | ||
|
8fb5aa80c6 | ||
7746119bbe | |||
fabde82a64 | |||
4a14fd5fc9 | |||
4ee683a4ee | |||
f19dd6d8a4 | |||
|
9a76e6b00e | ||
|
c9cc2280c7 | ||
|
7bcee6e970 | ||
|
bb918fd05c | ||
|
c4778bdf17 | ||
|
7f3dd9fa4a |
44 changed files with 511 additions and 140 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -10,3 +10,4 @@ config/local.json
|
||||||
config/local.*.json
|
config/local.*.json
|
||||||
docs/site/
|
docs/site/
|
||||||
.vscode/
|
.vscode/
|
||||||
|
./*.zip
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
platform: linux/amd64
|
||||||
pipeline:
|
pipeline:
|
||||||
lint:
|
lint:
|
||||||
when:
|
when:
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
|
||||||
<title>Akkoma</title>
|
<title>3V.IS</title>
|
||||||
<link rel="stylesheet" href="/static/font/tiresias.css">
|
<link rel="stylesheet" href="/static/font/tiresias.css">
|
||||||
<link rel="stylesheet" href="/static/font/css/lato.css">
|
<link rel="stylesheet" href="/static/font/css/lato.css">
|
||||||
<link rel="stylesheet" href="/static/mfm.css">
|
<link rel="stylesheet" href="/static/mfm.css">
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
</head>
|
</head>
|
||||||
<body class="hidden">
|
<body class="hidden">
|
||||||
<noscript>To use Akkoma, please enable JavaScript.</noscript>
|
<noscript>To use 3V.IS, please enable JavaScript.</noscript>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
<div id="modal"></div>
|
<div id="modal"></div>
|
||||||
<!-- built files will be auto injected -->
|
<!-- built files will be auto injected -->
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "pleroma_fe",
|
"name": "pleroma_fe",
|
||||||
"version": "3.5.0",
|
"version": "3.10.0",
|
||||||
"description": "A frontend for Akkoma instances",
|
"description": "A frontend for Akkoma instances",
|
||||||
"author": "Roger Braun <roger@rogerbraun.net>",
|
"author": "Roger Braun <roger@rogerbraun.net>",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
|
|
@ -455,6 +455,7 @@ textarea,
|
||||||
background: none;
|
background: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
height: unset;
|
height: unset;
|
||||||
|
font-size: 1.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
--_padding: 0.5em;
|
--_padding: 0.5em;
|
||||||
|
@ -583,6 +584,7 @@ textarea,
|
||||||
textarea {
|
textarea {
|
||||||
padding: var(--_padding);
|
padding: var(--_padding);
|
||||||
line-height: var(--post-line-height);
|
line-height: var(--post-line-height);
|
||||||
|
font-size: 1.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
option {
|
option {
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
:bound-to="{ x: 'container' }"
|
:bound-to="{ x: 'container' }"
|
||||||
remove-padding
|
remove-padding
|
||||||
>
|
>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<template v-if="relationship.following">
|
<template v-if="relationship.following">
|
||||||
<button
|
<button
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button class="button-unstyled ellipsis-button">
|
<button class="button-unstyled ellipsis-button">
|
||||||
<FAIcon
|
<FAIcon
|
||||||
class="icon"
|
class="icon"
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
keypath="user_card.block_confirm"
|
keypath="user_card.block_confirm"
|
||||||
tag="span"
|
tag="span"
|
||||||
>
|
>
|
||||||
<template v-slot:user>
|
<template #user>
|
||||||
<span
|
<span
|
||||||
v-text="user.screen_name_ui"
|
v-text="user.screen_name_ui"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -270,7 +270,7 @@
|
||||||
&.-contain-fit {
|
&.-contain-fit {
|
||||||
img,
|
img,
|
||||||
canvas {
|
canvas {
|
||||||
object-fit: contain;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
class="btn button-default"
|
class="btn button-default"
|
||||||
>
|
>
|
||||||
{{ $t('domain_mute_card.unmute') }}
|
{{ $t('domain_mute_card.unmute') }}
|
||||||
<template v-slot:progress>
|
<template #progress>
|
||||||
{{ $t('domain_mute_card.unmute_progress') }}
|
{{ $t('domain_mute_card.unmute_progress') }}
|
||||||
</template>
|
</template>
|
||||||
</ProgressButton>
|
</ProgressButton>
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
class="btn button-default"
|
class="btn button-default"
|
||||||
>
|
>
|
||||||
{{ $t('domain_mute_card.mute') }}
|
{{ $t('domain_mute_card.mute') }}
|
||||||
<template v-slot:progress>
|
<template #progress>
|
||||||
{{ $t('domain_mute_card.mute_progress') }}
|
{{ $t('domain_mute_card.mute_progress') }}
|
||||||
</template>
|
</template>
|
||||||
</ProgressButton>
|
</ProgressButton>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
:bound-to="{ x: 'container' }"
|
:bound-to="{ x: 'container' }"
|
||||||
remove-padding
|
remove-padding
|
||||||
>
|
>
|
||||||
<template v-slot:content="{close}">
|
<template #content="{close}">
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<button
|
<button
|
||||||
v-if="canMute && !status.thread_muted"
|
v-if="canMute && !status.thread_muted"
|
||||||
|
@ -172,7 +172,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button class="button-unstyled popover-trigger">
|
<button class="button-unstyled popover-trigger">
|
||||||
<FAIcon
|
<FAIcon
|
||||||
class="fa-scale-110 fa-old-padding"
|
class="fa-scale-110 fa-old-padding"
|
||||||
|
|
|
@ -134,7 +134,7 @@
|
||||||
:offset="{ y: 5 }"
|
:offset="{ y: 5 }"
|
||||||
remove-padding
|
remove-padding
|
||||||
>
|
>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button
|
<button
|
||||||
class="btn button-default"
|
class="btn button-default"
|
||||||
:disabled="!tagPolicyEnabled"
|
:disabled="!tagPolicyEnabled"
|
||||||
|
@ -147,7 +147,7 @@
|
||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:content="{close}">
|
<template #content="{close}">
|
||||||
<div
|
<div
|
||||||
class="dropdown-menu"
|
class="dropdown-menu"
|
||||||
:disabled="!tagPolicyEnabled"
|
:disabled="!tagPolicyEnabled"
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
@show="setToggled(true)"
|
@show="setToggled(true)"
|
||||||
@close="setToggled(false)"
|
@close="setToggled(false)"
|
||||||
>
|
>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<span v-if="user.is_local">
|
<span v-if="user.is_local">
|
||||||
<button
|
<button
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button
|
<button
|
||||||
class="btn button-default btn-block moderation-tools-button"
|
class="btn button-default btn-block moderation-tools-button"
|
||||||
:class="{ toggled }"
|
:class="{ toggled }"
|
||||||
|
@ -137,11 +137,11 @@
|
||||||
v-if="showDeleteUserDialog"
|
v-if="showDeleteUserDialog"
|
||||||
:on-cancel="deleteUserDialog.bind(this, false)"
|
:on-cancel="deleteUserDialog.bind(this, false)"
|
||||||
>
|
>
|
||||||
<template v-slot:header>
|
<template #header>
|
||||||
{{ $t('user_card.admin_menu.delete_user') }}
|
{{ $t('user_card.admin_menu.delete_user') }}
|
||||||
</template>
|
</template>
|
||||||
<p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>
|
<p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>
|
||||||
<template v-slot:footer>
|
<template #footer>
|
||||||
<button
|
<button
|
||||||
class="btn button-default"
|
class="btn button-default"
|
||||||
@click="deleteUserDialog(false)"
|
@click="deleteUserDialog(false)"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
placement="bottom"
|
placement="bottom"
|
||||||
:bound-to="{ x: 'container' }"
|
:bound-to="{ x: 'container' }"
|
||||||
>
|
>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<button
|
<button
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button class="filter-trigger-button button-unstyled">
|
<button class="filter-trigger-button button-unstyled">
|
||||||
<FAIcon icon="filter" />
|
<FAIcon icon="filter" />
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
remove-padding
|
remove-padding
|
||||||
@show="focusInput"
|
@show="focusInput"
|
||||||
>
|
>
|
||||||
<template v-slot:content="{close}">
|
<template #content="{close}">
|
||||||
<EmojiPicker
|
<EmojiPicker
|
||||||
:enable-sticker-picker="false"
|
:enable-sticker-picker="false"
|
||||||
@emoji="addReaction($event, close)"
|
@emoji="addReaction($event, close)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button
|
<button
|
||||||
class="button-unstyled popover-trigger"
|
class="button-unstyled popover-trigger"
|
||||||
:title="$t('tool_tip.add_reaction')"
|
:title="$t('tool_tip.add_reaction')"
|
||||||
|
|
|
@ -91,20 +91,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label
|
|
||||||
class="form--label"
|
|
||||||
for="bio"
|
|
||||||
>{{ $t('registration.bio') }} ({{ $t('general.optional') }})</label>
|
|
||||||
<textarea
|
|
||||||
id="bio"
|
|
||||||
v-model="user.bio"
|
|
||||||
:disabled="isPending"
|
|
||||||
class="form-control"
|
|
||||||
:placeholder="bioPlaceholder"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="form-group"
|
class="form-group"
|
||||||
:class="{ 'form-group--error': v$.user.password.$error }"
|
:class="{ 'form-group--error': v$.user.password.$error }"
|
||||||
|
@ -162,18 +148,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
|
||||||
class="form-group"
|
|
||||||
:class="{ 'form-group--error': v$.user.language.$error }"
|
|
||||||
>
|
|
||||||
<interface-language-switcher
|
|
||||||
for="email-language"
|
|
||||||
:prompt-text="$t('registration.email_language')"
|
|
||||||
:language="v$.user.language.$model"
|
|
||||||
:set-language="val => v$.user.language.$model = val"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
v-if="accountApprovalRequired"
|
v-if="accountApprovalRequired"
|
||||||
class="form-group"
|
class="form-group"
|
||||||
|
|
|
@ -25,22 +25,23 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 1.1em;
|
font-size: 1.2em;
|
||||||
line-height: 1.2em;
|
line-height: 1.2em;
|
||||||
margin: 1.4em 0;
|
margin: 1.4em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 1.1em;
|
font-size: 1.2em;
|
||||||
margin: 1em 0;
|
margin: 1em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 1em;
|
font-size: 1.1em;
|
||||||
margin: 1.2em 0;
|
margin: 1.2em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
|
font-size: 1.1em;
|
||||||
margin: 1.1em 0;
|
margin: 1.1em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,11 +61,12 @@
|
||||||
>
|
>
|
||||||
<h4>{{ $t('search.no_results') }}</h4>
|
<h4>{{ $t('search.no_results') }}</h4>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- qb: why can't search results be expandable? -->
|
||||||
<Status
|
<Status
|
||||||
v-for="status in visibleStatuses"
|
v-for="status in visibleStatuses"
|
||||||
:key="status.id"
|
:key="status.id"
|
||||||
:collapsable="false"
|
:collapsable="false"
|
||||||
:expandable="false"
|
:expandable="true"
|
||||||
:compact="false"
|
:compact="false"
|
||||||
class="search-result"
|
class="search-result"
|
||||||
:statusoid="status"
|
:statusoid="status"
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
:items="items"
|
:items="items"
|
||||||
:get-key="getKey"
|
:get-key="getKey"
|
||||||
>
|
>
|
||||||
<template v-slot:item="{item}">
|
<template #item="{item}">
|
||||||
<div
|
<div
|
||||||
class="selectable-list-item-inner"
|
class="selectable-list-item-inner"
|
||||||
:class="{ 'selectable-list-item-selected-inner': isSelected(item) }"
|
:class="{ 'selectable-list-item-selected-inner': isSelected(item) }"
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:empty>
|
<template #empty>
|
||||||
<slot name="empty" />
|
<slot name="empty" />
|
||||||
</template>
|
</template>
|
||||||
</List>
|
</List>
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
<Popover
|
<Popover
|
||||||
trigger="hover"
|
trigger="hover"
|
||||||
>
|
>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
|
|
||||||
<FAIcon
|
<FAIcon
|
||||||
icon="wrench"
|
icon="wrench"
|
||||||
:aria-label="$t('settings.setting_changed')"
|
:aria-label="$t('settings.setting_changed')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="modified-tooltip">
|
<div class="modified-tooltip">
|
||||||
{{ $t('settings.setting_changed') }}
|
{{ $t('settings.setting_changed') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
<Popover
|
<Popover
|
||||||
trigger="hover"
|
trigger="hover"
|
||||||
>
|
>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
|
|
||||||
<FAIcon
|
<FAIcon
|
||||||
icon="server"
|
icon="server"
|
||||||
:aria-label="$t('settings.setting_server_side')"
|
:aria-label="$t('settings.setting_server_side')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="serverside-tooltip">
|
<div class="serverside-tooltip">
|
||||||
{{ $t('settings.setting_server_side') }}
|
{{ $t('settings.setting_server_side') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
:refresh="true"
|
:refresh="true"
|
||||||
:get-key="i => i"
|
:get-key="i => i"
|
||||||
>
|
>
|
||||||
<template v-slot:header="{selected}">
|
<template #header="{selected}">
|
||||||
<div class="bulk-actions">
|
<div class="bulk-actions">
|
||||||
<ProgressButton
|
<ProgressButton
|
||||||
v-if="selected.length > 0"
|
v-if="selected.length > 0"
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
:click="() => blockUsers(selected)"
|
:click="() => blockUsers(selected)"
|
||||||
>
|
>
|
||||||
{{ $t('user_card.block') }}
|
{{ $t('user_card.block') }}
|
||||||
<template v-slot:progress>
|
<template #progress>
|
||||||
{{ $t('user_card.block_progress') }}
|
{{ $t('user_card.block_progress') }}
|
||||||
</template>
|
</template>
|
||||||
</ProgressButton>
|
</ProgressButton>
|
||||||
|
@ -39,16 +39,16 @@
|
||||||
:click="() => unblockUsers(selected)"
|
:click="() => unblockUsers(selected)"
|
||||||
>
|
>
|
||||||
{{ $t('user_card.unblock') }}
|
{{ $t('user_card.unblock') }}
|
||||||
<template v-slot:progress>
|
<template #progress>
|
||||||
{{ $t('user_card.unblock_progress') }}
|
{{ $t('user_card.unblock_progress') }}
|
||||||
</template>
|
</template>
|
||||||
</ProgressButton>
|
</ProgressButton>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:item="{item}">
|
<template #item="{item}">
|
||||||
<BlockCard :user-id="item" />
|
<BlockCard :user-id="item" />
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:empty>
|
<template #empty>
|
||||||
{{ $t('settings.no_blocks') }}
|
{{ $t('settings.no_blocks') }}
|
||||||
</template>
|
</template>
|
||||||
</BlockList>
|
</BlockList>
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
:refresh="true"
|
:refresh="true"
|
||||||
:get-key="i => i"
|
:get-key="i => i"
|
||||||
>
|
>
|
||||||
<template v-slot:header="{selected}">
|
<template #header="{selected}">
|
||||||
<div class="bulk-actions">
|
<div class="bulk-actions">
|
||||||
<ProgressButton
|
<ProgressButton
|
||||||
v-if="selected.length > 0"
|
v-if="selected.length > 0"
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
:click="() => muteUsers(selected)"
|
:click="() => muteUsers(selected)"
|
||||||
>
|
>
|
||||||
{{ $t('user_card.mute') }}
|
{{ $t('user_card.mute') }}
|
||||||
<template v-slot:progress>
|
<template #progress>
|
||||||
{{ $t('user_card.mute_progress') }}
|
{{ $t('user_card.mute_progress') }}
|
||||||
</template>
|
</template>
|
||||||
</ProgressButton>
|
</ProgressButton>
|
||||||
|
@ -92,16 +92,16 @@
|
||||||
:click="() => unmuteUsers(selected)"
|
:click="() => unmuteUsers(selected)"
|
||||||
>
|
>
|
||||||
{{ $t('user_card.unmute') }}
|
{{ $t('user_card.unmute') }}
|
||||||
<template v-slot:progress>
|
<template #progress>
|
||||||
{{ $t('user_card.unmute_progress') }}
|
{{ $t('user_card.unmute_progress') }}
|
||||||
</template>
|
</template>
|
||||||
</ProgressButton>
|
</ProgressButton>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:item="{item}">
|
<template #item="{item}">
|
||||||
<MuteCard :user-id="item" />
|
<MuteCard :user-id="item" />
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:empty>
|
<template #empty>
|
||||||
{{ $t('settings.no_mutes') }}
|
{{ $t('settings.no_mutes') }}
|
||||||
</template>
|
</template>
|
||||||
</MuteList>
|
</MuteList>
|
||||||
|
@ -125,7 +125,7 @@
|
||||||
:refresh="true"
|
:refresh="true"
|
||||||
:get-key="i => i"
|
:get-key="i => i"
|
||||||
>
|
>
|
||||||
<template v-slot:header="{selected}">
|
<template #header="{selected}">
|
||||||
<div class="bulk-actions">
|
<div class="bulk-actions">
|
||||||
<ProgressButton
|
<ProgressButton
|
||||||
v-if="selected.length > 0"
|
v-if="selected.length > 0"
|
||||||
|
@ -133,16 +133,16 @@
|
||||||
:click="() => unmuteDomains(selected)"
|
:click="() => unmuteDomains(selected)"
|
||||||
>
|
>
|
||||||
{{ $t('domain_mute_card.unmute') }}
|
{{ $t('domain_mute_card.unmute') }}
|
||||||
<template v-slot:progress>
|
<template #progress>
|
||||||
{{ $t('domain_mute_card.unmute_progress') }}
|
{{ $t('domain_mute_card.unmute_progress') }}
|
||||||
</template>
|
</template>
|
||||||
</ProgressButton>
|
</ProgressButton>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:item="{item}">
|
<template #item="{item}">
|
||||||
<DomainMuteCard :domain="item" />
|
<DomainMuteCard :domain="item" />
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:empty>
|
<template #empty>
|
||||||
{{ $t('settings.no_mutes') }}
|
{{ $t('settings.no_mutes') }}
|
||||||
</template>
|
</template>
|
||||||
</DomainMuteList>
|
</DomainMuteList>
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
|
|
||||||
.status-container {
|
.status-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
padding: var(--status-margin, $status-margin);
|
padding: var(--status-margin, $status-margin);
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
:bound-to="{ x: 'container' }"
|
:bound-to="{ x: 'container' }"
|
||||||
@show="enter"
|
@show="enter"
|
||||||
>
|
>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<slot />
|
<slot />
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<Status
|
<Status
|
||||||
v-if="status"
|
v-if="status"
|
||||||
:is-preview="true"
|
:is-preview="true"
|
||||||
|
|
|
@ -43,14 +43,14 @@
|
||||||
right: 0;
|
right: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
object-fit: contain;
|
object-fit: cover;
|
||||||
visibility: var(--_still-image-canvas-visibility, visible);
|
visibility: var(--_still-image-canvas-visibility, visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
object-fit: contain;
|
object-fit: cover;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
class="TimelineQuickSettings"
|
class="TimelineQuickSettings"
|
||||||
:bound-to="{ x: 'container' }"
|
:bound-to="{ x: 'container' }"
|
||||||
>
|
>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<div v-if="loggedIn">
|
<div v-if="loggedIn">
|
||||||
<button
|
<button
|
||||||
|
@ -80,7 +80,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button class="button-unstyled">
|
<button class="button-unstyled">
|
||||||
<FAIcon icon="filter" />
|
<FAIcon icon="filter" />
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -9,12 +9,12 @@
|
||||||
@show="openMenu"
|
@show="openMenu"
|
||||||
@close="() => isOpen = false"
|
@close="() => isOpen = false"
|
||||||
>
|
>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="timeline-menu-popover popover-default">
|
<div class="timeline-menu-popover popover-default">
|
||||||
<TimelineMenuContent />
|
<TimelineMenuContent />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<button class="button-unstyled title timeline-menu-title">
|
<button class="button-unstyled title timeline-menu-title">
|
||||||
<span class="timeline-title">{{ timelineName() }}</span>
|
<span class="timeline-title">{{ timelineName() }}</span>
|
||||||
<span>
|
<span>
|
||||||
|
|
|
@ -57,7 +57,6 @@ export default {
|
||||||
style () {
|
style () {
|
||||||
return {
|
return {
|
||||||
backgroundImage: [
|
backgroundImage: [
|
||||||
`linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,
|
|
||||||
`url(${this.user.cover_photo})`
|
`url(${this.user.cover_photo})`
|
||||||
].join(', ')
|
].join(', ')
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,12 +35,14 @@
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
mask: linear-gradient(to top, white, transparent) bottom no-repeat,
|
height: 200px;
|
||||||
linear-gradient(to top, white, white);
|
overflow: clip;
|
||||||
|
background-position-y: center;
|
||||||
// Autoprefixer seem to ignore this one, and also syntax is different
|
// Autoprefixer seem to ignore this one, and also syntax is different
|
||||||
-webkit-mask-composite: xor;
|
-webkit-mask-composite: xor;
|
||||||
mask-composite: exclude;
|
mask-composite: exclude;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
|
background-repeat-y: no-repeat;
|
||||||
mask-size: 100% 60%;
|
mask-size: 100% 60%;
|
||||||
border-top-left-radius: calc(var(--panelRadius) - 1px);
|
border-top-left-radius: calc(var(--panelRadius) - 1px);
|
||||||
border-top-right-radius: calc(var(--panelRadius) - 1px);
|
border-top-right-radius: calc(var(--panelRadius) - 1px);
|
||||||
|
@ -97,14 +99,14 @@
|
||||||
.user-info {
|
.user-info {
|
||||||
color: $fallback--lightText;
|
color: $fallback--lightText;
|
||||||
color: var(--lightText, $fallback--lightText);
|
color: var(--lightText, $fallback--lightText);
|
||||||
padding: 0 26px;
|
padding: 150px 26px 0; //qb: move below background
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
padding: 16px 0 6px;
|
padding: 16px 6px 6px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
max-height: 56px;
|
max-height: 92px; //qb: for bigger avatar
|
||||||
|
|
||||||
> * {
|
> * {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
@ -116,8 +118,8 @@
|
||||||
--_avatarShadowInset: var(--avatarShadowInset);
|
--_avatarShadowInset: var(--avatarShadowInset);
|
||||||
|
|
||||||
flex: 1 0 100%;
|
flex: 1 0 100%;
|
||||||
width: 56px;
|
width: 92px;
|
||||||
height: 56px;
|
height: 92px;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,6 +169,7 @@
|
||||||
.user-summary {
|
.user-summary {
|
||||||
display: block;
|
display: block;
|
||||||
margin-left: 0.6em;
|
margin-left: 0.6em;
|
||||||
|
margin-top: 1.5em;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
placement="top"
|
placement="top"
|
||||||
:offset="{ y: 5 }"
|
:offset="{ y: 5 }"
|
||||||
>
|
>
|
||||||
<template v-slot:trigger>
|
<template #trigger>
|
||||||
<slot />
|
<slot />
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:content>
|
<template #content>
|
||||||
<div class="user-list-popover">
|
<div class="user-list-popover">
|
||||||
<template v-if="users.length">
|
<template v-if="users.length">
|
||||||
<div
|
<div
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="user-reporting-panel-right">
|
<div class="user-reporting-panel-right">
|
||||||
<List :items="statuses">
|
<List :items="statuses">
|
||||||
<template v-slot:item="{item}">
|
<template #item="{item}">
|
||||||
<div class="status-fadein user-reporting-panel-sitem">
|
<div class="status-fadein user-reporting-panel-sitem">
|
||||||
<Status
|
<Status
|
||||||
:in-conversation="false"
|
:in-conversation="false"
|
||||||
|
|
|
@ -384,7 +384,7 @@
|
||||||
"email": "Adreça de Correu",
|
"email": "Adreça de Correu",
|
||||||
"email_language": "En quina llengua vols rebre els correus del servidor?",
|
"email_language": "En quina llengua vols rebre els correus del servidor?",
|
||||||
"fullname": "Nom a mostrar",
|
"fullname": "Nom a mostrar",
|
||||||
"fullname_placeholder": "p. ex. Atsuko Kagari",
|
"fullname_placeholder": "Nickname, or first and last name",
|
||||||
"new_captcha": "Clica a la imatge per a obtenir un nou captcha",
|
"new_captcha": "Clica a la imatge per a obtenir un nou captcha",
|
||||||
"password_confirm": "Confirma la contrasenya",
|
"password_confirm": "Confirma la contrasenya",
|
||||||
"reason": "Raó per a registrar-se",
|
"reason": "Raó per a registrar-se",
|
||||||
|
|
|
@ -413,7 +413,7 @@
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
"email_language": "In welcher Sprache möchtest du E-Mails vom Server erhalten?",
|
"email_language": "In welcher Sprache möchtest du E-Mails vom Server erhalten?",
|
||||||
"fullname": "Angezeigter Name",
|
"fullname": "Angezeigter Name",
|
||||||
"fullname_placeholder": "z. B. Atsuko Kagari",
|
"fullname_placeholder": "Nickname, or first and last name",
|
||||||
"new_captcha": "Zum Erstellen eines neuen Captcha auf das Bild klicken",
|
"new_captcha": "Zum Erstellen eines neuen Captcha auf das Bild klicken",
|
||||||
"password_confirm": "Passwort bestätigen",
|
"password_confirm": "Passwort bestätigen",
|
||||||
"reason": "Grund zur Anmeldung",
|
"reason": "Grund zur Anmeldung",
|
||||||
|
|
|
@ -380,7 +380,7 @@
|
||||||
"text/x.misskeymarkdown": "MFM"
|
"text/x.misskeymarkdown": "MFM"
|
||||||
},
|
},
|
||||||
"content_warning": "Content Warning (optional)",
|
"content_warning": "Content Warning (optional)",
|
||||||
"default": "Just arrived at Luna Nova Academy",
|
"default": "What are you working on?",
|
||||||
"direct_warning_to_all": "This post will be visible to all the mentioned users.",
|
"direct_warning_to_all": "This post will be visible to all the mentioned users.",
|
||||||
"direct_warning_to_first_only": "This post will only be visible to the mentioned users at the beginning of the message.",
|
"direct_warning_to_first_only": "This post will only be visible to the mentioned users at the beginning of the message.",
|
||||||
"edit_remote_warning": "Changes made to the post may not be visible on some instances!",
|
"edit_remote_warning": "Changes made to the post may not be visible on some instances!",
|
||||||
|
@ -418,7 +418,7 @@
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
"email_language": "In which language do you want to receive emails from the server?",
|
"email_language": "In which language do you want to receive emails from the server?",
|
||||||
"fullname": "Display name",
|
"fullname": "Display name",
|
||||||
"fullname_placeholder": "e.g. Atsuko Kagari",
|
"fullname_placeholder": "Nickname, or first and last name",
|
||||||
"new_captcha": "Click the image to get a new captcha",
|
"new_captcha": "Click the image to get a new captcha",
|
||||||
"password_confirm": "Password confirmation",
|
"password_confirm": "Password confirmation",
|
||||||
"reason": "Reason to register",
|
"reason": "Reason to register",
|
||||||
|
|
|
@ -417,7 +417,7 @@
|
||||||
"email": "Correo electrónico",
|
"email": "Correo electrónico",
|
||||||
"email_language": "¿En qué idioma desea recibir correos electrónicos del servidor?",
|
"email_language": "¿En qué idioma desea recibir correos electrónicos del servidor?",
|
||||||
"fullname": "Nombre a mostrar",
|
"fullname": "Nombre a mostrar",
|
||||||
"fullname_placeholder": "p. ej. Atsuko Kagari",
|
"fullname_placeholder": "Nickname, or first and last name",
|
||||||
"new_captcha": "Haz click en la imagen para obtener un nuevo captcha",
|
"new_captcha": "Haz click en la imagen para obtener un nuevo captcha",
|
||||||
"password_confirm": "Confirmar contraseña",
|
"password_confirm": "Confirmar contraseña",
|
||||||
"reason": "Razón para registrarse",
|
"reason": "Razón para registrarse",
|
||||||
|
|
|
@ -380,7 +380,7 @@
|
||||||
"text/x.misskeymarkdown": "MFM"
|
"text/x.misskeymarkdown": "MFM"
|
||||||
},
|
},
|
||||||
"content_warning": "Peringatan Konten (opsional)",
|
"content_warning": "Peringatan Konten (opsional)",
|
||||||
"default": "Baru saja tiba di Luna Nova Academy",
|
"default": "What are you working on?",
|
||||||
"direct_warning_to_all": "Postingan ini akan terlihat oleh pengguna yang disebutkan.",
|
"direct_warning_to_all": "Postingan ini akan terlihat oleh pengguna yang disebutkan.",
|
||||||
"direct_warning_to_first_only": "Postingan ini akan terlihat oleh pengguna yang disebutkan di awal pesan.",
|
"direct_warning_to_first_only": "Postingan ini akan terlihat oleh pengguna yang disebutkan di awal pesan.",
|
||||||
"edit_remote_warning": "Perubahan yang dibuat pada postingan ini mungkin tidak terlihat pada beberapa instansi!",
|
"edit_remote_warning": "Perubahan yang dibuat pada postingan ini mungkin tidak terlihat pada beberapa instansi!",
|
||||||
|
@ -418,7 +418,7 @@
|
||||||
"email": "Surel",
|
"email": "Surel",
|
||||||
"email_language": "Dalam bahasa apa kamu ingin menerima surel dari server ini?",
|
"email_language": "Dalam bahasa apa kamu ingin menerima surel dari server ini?",
|
||||||
"fullname": "Tampilan Nama",
|
"fullname": "Tampilan Nama",
|
||||||
"fullname_placeholder": "cth. Atsuko Kagari",
|
"fullname_placeholder": "Nickname, or first and last name",
|
||||||
"new_captcha": "Klik gambarnya untuk mendapatkan captcha baru",
|
"new_captcha": "Klik gambarnya untuk mendapatkan captcha baru",
|
||||||
"password_confirm": "Konfirmasi kata sandi",
|
"password_confirm": "Konfirmasi kata sandi",
|
||||||
"reason": "Alasan mendaftar",
|
"reason": "Alasan mendaftar",
|
||||||
|
|
|
@ -415,7 +415,7 @@
|
||||||
"email": "E-mail",
|
"email": "E-mail",
|
||||||
"email_language": "In welke taal wil je e-mails ontvangen van de server?",
|
"email_language": "In welke taal wil je e-mails ontvangen van de server?",
|
||||||
"fullname": "Weergavenaam",
|
"fullname": "Weergavenaam",
|
||||||
"fullname_placeholder": "bijv. Atsuko Kagari",
|
"fullname_placeholder": "Nickname, or first and last name",
|
||||||
"new_captcha": "Klik op de afbeelding voor een nieuwe captcha",
|
"new_captcha": "Klik op de afbeelding voor een nieuwe captcha",
|
||||||
"password_confirm": "Wachtwoord bevestiging",
|
"password_confirm": "Wachtwoord bevestiging",
|
||||||
"reason": "Reden voor registratie",
|
"reason": "Reden voor registratie",
|
||||||
|
@ -828,7 +828,7 @@
|
||||||
"fine_print": "Lees onze {0} om niets nuttig te leren!",
|
"fine_print": "Lees onze {0} om niets nuttig te leren!",
|
||||||
"header": "Voorvertoning",
|
"header": "Voorvertoning",
|
||||||
"header_faint": "Alles komt goed",
|
"header_faint": "Alles komt goed",
|
||||||
"input": "Zojuist aangekomen bij Luna Nova Academie",
|
"input": "What are you working on?",
|
||||||
"link": "een leuke kleine link",
|
"link": "een leuke kleine link",
|
||||||
"mono": "inhoud",
|
"mono": "inhoud",
|
||||||
"text": "Nog een boel andere {0} en {1}"
|
"text": "Nog een boel andere {0} en {1}"
|
||||||
|
|
|
@ -186,7 +186,7 @@ const interfaceMod = {
|
||||||
if (thirdColumnMode === 'none' || !rootState.users.currentUser) {
|
if (thirdColumnMode === 'none' || !rootState.users.currentUser) {
|
||||||
commit('setLayoutType', normalOrMobile)
|
commit('setLayoutType', normalOrMobile)
|
||||||
} else {
|
} else {
|
||||||
const wideLayout = width >= 1280
|
const wideLayout = width >= 1600
|
||||||
commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)
|
commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,3 +2,18 @@
|
||||||
place a css file at $static_dir/static/custom.css
|
place a css file at $static_dir/static/custom.css
|
||||||
to apply custom styles to your frontend
|
to apply custom styles to your frontend
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* qb: for 3v.is */
|
||||||
|
|
||||||
|
.app-layout {
|
||||||
|
--miniColumn: 33rem !important;
|
||||||
|
--maxiColumn: minmax(var(--miniColumn), 39rem) !important;
|
||||||
|
--columnGap: 0.5em !important;
|
||||||
|
--status-margin: 0.5em !important;
|
||||||
|
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--post-line-height: 2.0;
|
||||||
|
}
|
||||||
|
|
BIN
static/logo-512.png
Executable file → Normal file
BIN
static/logo-512.png
Executable file → Normal file
Binary file not shown.
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 8.7 KiB |
55
static/logo.svg
Executable file → Normal file
55
static/logo.svg
Executable file → Normal file
|
@ -1,34 +1,27 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" standalone="no"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 362.83 362.83">
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
<defs>
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
<style>
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
.cls-1 {
|
width="256.000000pt" height="256.000000pt" viewBox="0 0 256.000000 256.000000"
|
||||||
fill: #462d7a;
|
preserveAspectRatio="xMidYMid meet">
|
||||||
}
|
|
||||||
|
|
||||||
.cls-2 {
|
<g transform="translate(0.000000,256.000000) scale(0.100000,-0.100000)"
|
||||||
stroke: #2c1e50;
|
fill="#000000" stroke="none">
|
||||||
}
|
<path d="M80 2370 l0 -90 330 0 330 0 0 -110 0 -110 180 0 180 0 0 200 0 200
|
||||||
|
-510 0 -510 0 0 -90z"/>
|
||||||
.cls-2, .cls-3 {
|
<path d="M1280 2130 l0 -330 170 0 170 0 0 330 0 330 -170 0 -170 0 0 -330z"/>
|
||||||
stroke-miterlimit: 10;
|
<path d="M2120 2130 l0 -330 170 0 170 0 0 330 0 330 -170 0 -170 0 0 -330z"/>
|
||||||
}
|
<path d="M260 1910 l0 -110 220 0 220 0 0 110 0 110 -220 0 -220 0 0 -110z"/>
|
||||||
|
<path d="M740 1650 l0 -110 -330 0 -330 0 0 -100 0 -100 510 0 510 0 0 210 0
|
||||||
.cls-3 {
|
210 -180 0 -180 0 0 -110z"/>
|
||||||
stroke: #fff;
|
<path d="M1660 1550 l0 -210 210 0 210 0 0 210 0 210 -210 0 -210 0 0 -210z"/>
|
||||||
}
|
<path d="M740 970 l0 -190 170 0 170 0 0 190 0 190 -170 0 -170 0 0 -190z"/>
|
||||||
</style>
|
<path d="M1280 970 l0 -190 170 0 170 0 0 100 0 100 420 0 420 0 0 90 0 90
|
||||||
</defs>
|
-590 0 -590 0 0 -190z"/>
|
||||||
<g id="Layer_9" data-name="Layer 9">
|
<path d="M1660 630 l0 -110 220 0 220 0 0 110 0 110 -220 0 -220 0 0 -110z"/>
|
||||||
<path class="cls-2" d="M269.3,197.19c-5.77-11.54-85.59,16.83-154.76,27.39-21.09,3.22-38.13,4.31-47.3,4.75-.74,2.91-1.76,7.02-2.87,11.97-1.93,8.6-2.89,12.89-2.6,13.78,3.3,9.95,59.73-.88,99.18-7.64,32.67-5.6,115.14-18.96,114.61-30.77-.03-.69-1.11-4.01-3.27-10.65-1.78-5.47-2.67-8.2-2.98-8.83Z"/>
|
<path d="M740 380 l0 -280 170 0 170 0 0 280 0 280 -170 0 -170 0 0 -280z"/>
|
||||||
</g>
|
<path d="M2140 380 l0 -100 -430 0 -430 0 0 -90 0 -90 590 0 590 0 0 190 0
|
||||||
<g id="Layer_6" data-name="Layer 6">
|
190 -160 0 -160 0 0 -100z"/>
|
||||||
<path class="cls-1" d="M115.2,131.89c6.26-6.54,20.19-20.63,42.39-26.14,15.79-3.92,28.51-1.28,33.51,0,83.72,21.41,116.03,201.78,77.79,226.32-10.28,6.6-26.86,2.7-36.77-3.3-32.63-19.78-29.3-72.87-44.44-73.73-5.11-.29-7.15,5.8-20.91,24.94-19.63,27.3-31.49,43.44-49.21,50.87-2.53,1.06-26.91,12.07-41.84,1.23-38.55-28-2.96-155.84,39.49-200.18Zm56.31,10.45c-27.39-.52-46.38,38.21-37.98,54.55,10.09,19.62,65.5,18.26,74.77-3.3,7.21-16.78-11.38-50.77-36.79-51.24Z"/>
|
<path d="M160 270 l0 -170 170 0 170 0 0 170 0 170 -170 0 -170 0 0 -170z"/>
|
||||||
</g>
|
|
||||||
<g id="Layer_4" data-name="Layer 4">
|
|
||||||
<path d="M68.93,86.51c-6.55,27.74,252.45,113.97,267.56,89.66,9.24-14.87-64.9-83.62-163.53-97.57-39.06-5.52-100.95-5.14-104.03,7.91Z"/>
|
|
||||||
</g>
|
|
||||||
<g id="Layer_5" data-name="Layer 5">
|
|
||||||
<path class="cls-3" d="M138.96,93.76c.41-5.25,6.51-5.74,28.85-19.42,26.97-16.51,28.85-22.38,56.86-40.83,30.07-19.81,48.46-31.94,54.82-26.61,9.72,8.15-25.18,43.33-21.31,99.35,.87,12.61,3.12,17.79-.86,23.01-18.25,23.95-120.07-13.68-118.35-35.5Z"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.4 KiB |
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"threevis": "/static/themes/threevis-theme.json",
|
||||||
"pleroma-dark": "/static/themes/pleroma-dark.json",
|
"pleroma-dark": "/static/themes/pleroma-dark.json",
|
||||||
"pleroma-light": "/static/themes/pleroma-light.json",
|
"pleroma-light": "/static/themes/pleroma-light.json",
|
||||||
"pleroma-amoled": [ "Pleroma Dark AMOLED", "#000000", "#111111", "#b0b0b1", "#d8a070", "#aa0000", "#0fa00f", "#0095ff", "#d59500"],
|
"pleroma-amoled": [ "Pleroma Dark AMOLED", "#000000", "#111111", "#b0b0b1", "#d8a070", "#aa0000", "#0fa00f", "#0095ff", "#d59500"],
|
||||||
|
|
|
@ -1,5 +1,28 @@
|
||||||
<h4>Terms of Service</h4>
|
<h4>What is 3V.IS?</h4>
|
||||||
|
<p>"three-viz". WAYWO?: "What are you working on?" Hopefully a place for project pages, docs, game dev,
|
||||||
<p>This is a placeholder, overwrite this by putting a file at <pre>$STATIC_DIR/static/terms-of-service.html</pre><p>
|
art, and screenshots. Create long format posts, connect them with links, and edit anytime with history. Of course short posting of memes, hot takes, and cat pics still works.</p>
|
||||||
|
<p>Mastodon, Pleroma, and other federated sites may be accessed from here. See timelines, search, and follow other users. 3V.IS is an Akkoma instance with aesthetic tweaks. See <a href=https://docs.akkoma.dev/stable>Akkoma docs</a> to
|
||||||
<p>See the <a href="https://docs.akkoma.dev/main/backend/configuration/static_dir/">Static Directory</a> docs for more info.</p>
|
learn more.</p>
|
||||||
|
<p></p>
|
||||||
|
<h4>Terms of Use:</h4>
|
||||||
|
<p>Be a minimum 18 years of age.</p>
|
||||||
|
<p>Be respectful of others. Please discourse in constructive terms and avoid offensive language. </p>
|
||||||
|
<p>At signup provide a reliable email address. This will be used for lost password recovery. Contact fixbot@qbism.com if ever needed.</p>
|
||||||
|
<p>Understand 3V.IS is under development. The site or portions thereof may be down for indefinite amounts of time.</p>
|
||||||
|
<p>Do not post any private or sensitive information. Do not respond to requests for passwords or personal
|
||||||
|
information allegedly from this site.</p>
|
||||||
|
<p>Understand timeline content may originate outside this instance. </p>
|
||||||
|
<p>It is recommended to keep backups of posted media. No guarantee of data preservation is provided.</p>
|
||||||
|
<p>Please be efficient with resource consumption. Do not use the site for private file storage.</p>
|
||||||
|
<p>Users may edit or delete posts after publishing. Know that post edit history is viewable.</p>
|
||||||
|
<h4>Financial support:</h4>
|
||||||
|
<p>Currently 3V.IS is not seeking assistance. Perhaps later if the site grows.</p>
|
||||||
|
<p>Support independent artists and game developers as you can.</p>
|
||||||
|
<p></p>
|
||||||
|
<p>Credits:</p>
|
||||||
|
<p>Additional emojis from https://fedi.absturztau.be/emoji-packs/</p>
|
||||||
|
<p>8bit font</p>
|
||||||
|
<p>roo</p>
|
||||||
|
<p>gummy</p>
|
||||||
|
<p>blobs by Mooshieblob</p>
|
||||||
|
<p>Robomoji is licenced under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.</p>
|
||||||
|
|
356
static/themes/threevis-theme.json
Normal file
356
static/themes/threevis-theme.json
Normal file
|
@ -0,0 +1,356 @@
|
||||||
|
{
|
||||||
|
"_pleroma_theme_version": 2,
|
||||||
|
"name": "threevis",
|
||||||
|
"theme": {
|
||||||
|
"themeEngineVersion": 3,
|
||||||
|
"shadows": {
|
||||||
|
"panel": [
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"blur": 4,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"topBar": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"blur": 4,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"popup": [
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"y": 2,
|
||||||
|
"blur": 3,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"avatar": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 1,
|
||||||
|
"blur": 8,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.7
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"avatarStatus": [],
|
||||||
|
"panelHeader": [],
|
||||||
|
"button": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"blur": 2,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buttonHover": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"blur": 4,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#37301a",
|
||||||
|
"alpha": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buttonPressed": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"blur": 4,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#37301a",
|
||||||
|
"alpha": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"input": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -1,
|
||||||
|
"blur": 0,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
"alpha": 0.2,
|
||||||
|
"inset": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"blur": 2,
|
||||||
|
"inset": true,
|
||||||
|
"spread": 0,
|
||||||
|
"color": "#000000",
|
||||||
|
"alpha": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"colors": {
|
||||||
|
"underlay": "#000000",
|
||||||
|
"bg": "#d6d1c9",
|
||||||
|
"fg": "#e8e2da",
|
||||||
|
"cRed": "#f92672",
|
||||||
|
"cGreen": "#009402",
|
||||||
|
"cOrange": "#ff8800",
|
||||||
|
"cBlue": "#6670ff",
|
||||||
|
"accent": "#6f45ed",
|
||||||
|
"link": "#533dd1",
|
||||||
|
"text": "#37301a",
|
||||||
|
"badgeNotification": "#f92672",
|
||||||
|
"badgeNotificationText": "#ffffff",
|
||||||
|
"alertNeutral": "#37301a",
|
||||||
|
"alertNeutralText": "#ffffff",
|
||||||
|
"alertPopupNeutral": "#37301a",
|
||||||
|
"alertPopupNeutralText": "#ffffff",
|
||||||
|
"alertSuccess": "#009402",
|
||||||
|
"alertSuccessText": "#37301a",
|
||||||
|
"alertPopupSuccess": "#009402",
|
||||||
|
"alertPopupSuccessText": "#ffffff",
|
||||||
|
"alertWarning": "#ff8800",
|
||||||
|
"alertWarningText": "#37301a",
|
||||||
|
"alertPopupWarning": "#ff8800",
|
||||||
|
"alertPopupWarningText": "#37301a",
|
||||||
|
"alertError": "#f92672",
|
||||||
|
"alertErrorText": "#37301a",
|
||||||
|
"alertPopupError": "#f92672",
|
||||||
|
"alertPopupErrorText": "#ffffff",
|
||||||
|
"panel": "#e0dad2",
|
||||||
|
"panelText": "#61593d",
|
||||||
|
"alertNeutralPanelText": "#000000",
|
||||||
|
"alertSuccessPanelText": "#000000",
|
||||||
|
"alertWarningPanelText": "#000000",
|
||||||
|
"alertErrorPanelText": "#000000",
|
||||||
|
"fgText": "#eceae4",
|
||||||
|
"topBar": "#e0dad2",
|
||||||
|
"topBarText": "#1b1913",
|
||||||
|
"input": "#e0dad2",
|
||||||
|
"inputTopbarText": "#1b1913",
|
||||||
|
"inputPanelText": "#61593d",
|
||||||
|
"inputText": "#37301a",
|
||||||
|
"btn": "#e0dad2",
|
||||||
|
"btnText": "#1b1913",
|
||||||
|
"btnTopBarText": "#1b1913",
|
||||||
|
"btnDisabled": "#dad1cd",
|
||||||
|
"btnDisabledTopBarText": "#aaa39f",
|
||||||
|
"btnPanelText": "#1b1913",
|
||||||
|
"btnDisabledPanelText": "#aaa39f",
|
||||||
|
"btnDisabledText": "#aaa39f",
|
||||||
|
"btnToggled": "#b7a996",
|
||||||
|
"btnToggledTopBarText": "#1b1913",
|
||||||
|
"btnToggledPanelText": "#1b1913",
|
||||||
|
"btnToggledText": "#1b1913",
|
||||||
|
"btnPressed": "#e0dad2",
|
||||||
|
"btnPressedTopBarText": "#1b1913",
|
||||||
|
"btnPressedTopBar": "#e0dad2",
|
||||||
|
"btnPressedPanelText": "#1b1913",
|
||||||
|
"btnPressedPanel": "#e0dad2",
|
||||||
|
"btnPressedText": "#1b1913",
|
||||||
|
"tabActiveText": "#37301a",
|
||||||
|
"tabText": "#1b1913",
|
||||||
|
"tab": "#e0dad2",
|
||||||
|
"fgLink": "#097995",
|
||||||
|
"topBarLink": "#512eff",
|
||||||
|
"panelLink": "#512eff",
|
||||||
|
"panelFaint": "#1b1913",
|
||||||
|
"icon": "#877f73",
|
||||||
|
"poll": "#9f98c4",
|
||||||
|
"pollText": "#37301a",
|
||||||
|
"border": "#dcd6cc",
|
||||||
|
"postCyantext": "#000a99",
|
||||||
|
"postGreentext": "#6bff6e",
|
||||||
|
"postLink": "#2300d1",
|
||||||
|
"lightText": "#000000",
|
||||||
|
"popover": "#d7cecb",
|
||||||
|
"selectedMenuPopover": "#ccc1bd",
|
||||||
|
"highlight": "#ccc1bd",
|
||||||
|
"highlightText": "#37301a",
|
||||||
|
"selectedMenu": "#ccc1bd",
|
||||||
|
"selectedMenuText": "#37301a",
|
||||||
|
"selectedMenuPopoverIcon": "#82796c",
|
||||||
|
"highlightLink": "#2300d1",
|
||||||
|
"selectedMenuLink": "#2300d1",
|
||||||
|
"selectedMenuPopoverLink": "#2300d1",
|
||||||
|
"selectedMenuPopoverText": "#37301a",
|
||||||
|
"faintLink": "#512eff",
|
||||||
|
"highlightFaintLink": "#2300d1",
|
||||||
|
"selectedMenuFaintLink": "#2300d1",
|
||||||
|
"selectedMenuPopoverFaintLink": "#2300d1",
|
||||||
|
"faint": "#37301a",
|
||||||
|
"highlightFaintText": "#37301a",
|
||||||
|
"selectedMenuFaintText": "#37301a",
|
||||||
|
"selectedMenuPopoverFaintText": "#37301a",
|
||||||
|
"highlightLightText": "#000000",
|
||||||
|
"selectedMenuLightText": "#000000",
|
||||||
|
"selectedMenuPopoverLightText": "#000000",
|
||||||
|
"selectedMenuIcon": "#82796c",
|
||||||
|
"selectedPost": "#ccc1bd",
|
||||||
|
"selectedPostText": "#37301a",
|
||||||
|
"selectedPostIcon": "#82796c",
|
||||||
|
"selectedPostLink": "#2300d1",
|
||||||
|
"selectedPostFaintLink": "#2300d1",
|
||||||
|
"highlightPostLink": "#2300d1",
|
||||||
|
"selectedPostPostLink": "#2300d1",
|
||||||
|
"selectedPostLightText": "#000000",
|
||||||
|
"selectedPostFaintText": "#37301a",
|
||||||
|
"popoverText": "#37301a",
|
||||||
|
"popoverIcon": "#877f73",
|
||||||
|
"popoverLink": "#2300d1",
|
||||||
|
"postFaintLink": "#2300d1",
|
||||||
|
"popoverPostFaintLink": "#2300d1",
|
||||||
|
"popoverFaintLink": "#2300d1",
|
||||||
|
"popoverFaintText": "#37301a",
|
||||||
|
"popoverPostLink": "#2300d1",
|
||||||
|
"popoverLightText": "#000000",
|
||||||
|
"highlightIcon": "#82796c",
|
||||||
|
"highlightPostFaintLink": "#2300d1",
|
||||||
|
"profileTint": "#d7cecb",
|
||||||
|
"profileBg": "#717377",
|
||||||
|
"wallpaper": "#dcd4d1"
|
||||||
|
},
|
||||||
|
"opacity": {
|
||||||
|
"underlay": 0.15,
|
||||||
|
"bg": 1,
|
||||||
|
"alert": 0.5,
|
||||||
|
"alertPopup": 0.95,
|
||||||
|
"panel": 1,
|
||||||
|
"input": 0.5,
|
||||||
|
"btn": 1,
|
||||||
|
"faint": 0.5,
|
||||||
|
"border": 1,
|
||||||
|
"popover": 1,
|
||||||
|
"profileTint": 0.5
|
||||||
|
},
|
||||||
|
"radii": {
|
||||||
|
"btn": "1",
|
||||||
|
"input": "1",
|
||||||
|
"checkbox": "1",
|
||||||
|
"panel": "2",
|
||||||
|
"avatar": "2",
|
||||||
|
"avatarAlt": "10",
|
||||||
|
"tooltip": 2,
|
||||||
|
"attachment": "2"
|
||||||
|
},
|
||||||
|
"fonts": {
|
||||||
|
"interface": {
|
||||||
|
"family": "sans-serif"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"family": "inherit"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"family": "inherit"
|
||||||
|
},
|
||||||
|
"postCode": {
|
||||||
|
"family": "monospace"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"themeEngineVersion": 3,
|
||||||
|
"fonts": {},
|
||||||
|
"shadows": {},
|
||||||
|
"opacity": {},
|
||||||
|
"colors": {
|
||||||
|
"bg": "#d7cecb",
|
||||||
|
"fg": "#e0dad2",
|
||||||
|
"text": "#37301a",
|
||||||
|
"link": "#512eff",
|
||||||
|
"accent": "#4947b8",
|
||||||
|
"cBlue": "#6670ff",
|
||||||
|
"cRed": "#F92672",
|
||||||
|
"cGreen": "#009402",
|
||||||
|
"cOrange": "#ff8800",
|
||||||
|
"fgText": "#eceae4",
|
||||||
|
"fgLink": "#097995",
|
||||||
|
"panelText": "#61593d",
|
||||||
|
"panelLink": "#512eff",
|
||||||
|
"topBarLink": "#512eff",
|
||||||
|
"alertNeutralText": "#ffffff"
|
||||||
|
},
|
||||||
|
"radii": {
|
||||||
|
"btn": "1",
|
||||||
|
"input": "1",
|
||||||
|
"checkbox": "1",
|
||||||
|
"panel": "2",
|
||||||
|
"avatar": "2",
|
||||||
|
"avatarAlt": "10",
|
||||||
|
"tooltip": 2,
|
||||||
|
"attachment": "2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
threevis-fe-dev-old.zip
Normal file
BIN
threevis-fe-dev-old.zip
Normal file
Binary file not shown.
BIN
threevis-fe-dev.zip
Normal file
BIN
threevis-fe-dev.zip
Normal file
Binary file not shown.
Loading…
Reference in a new issue