Compare commits

...

63 Commits

Author SHA1 Message Date
qbism c675f62e3a user card tweak 2024-01-26 23:20:17 -05:00
qbism cf5d3819a8 What are you working on? 2023-08-06 21:41:26 -04:00
FloatingGhost 80840dfd05 don't die on my arm box please 2023-08-05 14:39:51 +00:00
FloatingGhost dcded3e946 version 2023-08-05 14:39:51 +00:00
qbism dbcdb0f633 remove zip 2023-08-05 10:39:14 -04:00
qbism 5eeb7066f2 Merge pull request 'develop' (#12) from AkkomaGang/akkoma-fe:develop into develop
Reviewed-on: qbism/3vis-fe#12
2023-08-05 03:02:36 +00:00
qbism 7ff452681b sync i18n 2023-08-04 23:01:56 -04:00
qbism ea661f6842 ignore zip 2023-08-01 02:57:18 -04:00
Norm f863aaaca5 update more images 2023-08-01 06:26:28 +00:00
Norm 2bf2b94f9a use better example emoji 2023-08-01 06:26:28 +00:00
Norm 7d49e1e94f docs: Update Pleroma references to Akkoma 2023-08-01 06:26:28 +00:00
SukinoVERSΞ 182d619ca3 fix: emoji picker not scrollable on ios 2023-08-01 06:26:28 +00:00
David 0343cd8bd3 Make emoji reactions use Still-Image functionality 2023-08-01 06:26:28 +00:00
David b1532b5f3c Simplified and fixed and/or oopsie 2023-08-01 06:26:28 +00:00
David 558410d1c9 Turn on by default 2023-08-01 06:26:28 +00:00
David ad02237b6e Add prefers-reduced-motion support 2023-08-01 06:26:28 +00:00
Weblate 2bd41dd19e Translated using Weblate (Polish)
Currently translated at 66.1% (689 of 1042 strings)

Co-authored-by: Jeder <jeder@jeder.pl>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/pl/
Translation: Pleroma fe/pleroma-fe
2023-08-01 06:26:28 +00:00
Weblate 40be0f7460 Translated using Weblate (Turkish)
Currently translated at 4.0% (42 of 1042 strings)

Added translation using Weblate (Turkish)

Co-authored-by: Hasan Yıldız <hasanyildiz0@yaani.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/tr/
Translation: Pleroma fe/pleroma-fe
2023-08-01 06:26:28 +00:00
FloatingGhost 7e5c21d6d1 Add DM settings 2023-08-01 06:26:28 +00:00
Denys Nykula 1272e6b7c0 paper theme: more contrast and fix setting tab hover 2023-08-01 06:26:28 +00:00
Denys Nykula d39e8e0607 fix unfinished post being sent when scrolling 2023-08-01 06:26:28 +00:00
Denys Nykula fad8648a06 fix apply theme button without page refresh 2023-08-01 06:26:28 +00:00
qbism cbf68611fb replace files with current akkoma-fe develop 2023-08-01 01:55:30 -04:00
qbism 2b73a81834 remerge these files 2023-08-01 01:43:08 -04:00
qbism 6a704a5167 resolve conflict, replace w akkoma fe develop 2023-08-01 01:38:44 -04:00
qbism 789bab93a6 update zip 2023-05-28 22:53:01 -04:00
Denys Nykula b396b529b3 fix dropdown-item-icon and form controls using missing variables 2023-05-23 03:44:15 +00:00
qbism e1be93f3fc update timeline.....vue to current Akkoma 2023-05-22 23:43:29 -04:00
qbism 923863e262 make search-result expandable 2023-05-22 23:35:55 -04:00
Weblate b37cbc498c Translated using Weblate (Portuguese)
Currently translated at 62.8% (655 of 1042 strings)

Co-authored-by: cel <8cbv6di5@duck.com>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/pt/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:57 +00:00
Weblate c4fe7f1a88 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1041 of 1041 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (1040 of 1041 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (1040 of 1041 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (1039 of 1040 strings)

Co-authored-by: Poesty Li <poesty7450@gmail.com>
Co-authored-by: SevicheCC <sevicheee@outlook.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/zh_Hans/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:57 +00:00
Weblate 27020a4358 Translated using Weblate (Ukrainian)
Currently translated at 87.2% (908 of 1041 strings)

Co-authored-by: Denys Nykula <vegan@libre.net.ua>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/uk/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:57 +00:00
Weblate 2939bb467b Translated using Weblate (French)
Currently translated at 98.5% (1027 of 1042 strings)

Translated using Weblate (French)

Currently translated at 98.3% (1024 of 1041 strings)

Translated using Weblate (French)

Currently translated at 96.9% (1002 of 1033 strings)

Co-authored-by: Thomate <thomas@burdick.fr>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/fr/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:57 +00:00
Weblate ab681b3fea Translated using Weblate (Japanese (ja_EASY))
Currently translated at 71.6% (747 of 1042 strings)

Translated using Weblate (Japanese (ja_EASY))

Currently translated at 71.6% (747 of 1042 strings)

Translated using Weblate (Japanese (ja_EASY))

Currently translated at 54.1% (564 of 1042 strings)

Co-authored-by: Hikaru Shinagawa <hikali.47041@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: kazari <6c577a54-aac9-482a-955e-745c858445e3@simplelogin.com>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/ja_EASY/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:57 +00:00
Weblate 393334b083 Translated using Weblate (Dutch)
Currently translated at 99.7% (1038 of 1041 strings)

Co-authored-by: Fristi <fristi@subcon.town>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/nl/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:56 +00:00
Weblate e335d48542 Translated using Weblate (Indonesian)
Currently translated at 65.4% (676 of 1033 strings)

Translated using Weblate (Indonesian)

Currently translated at 65.4% (676 of 1033 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: t1 <taaa@fedora.email>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/id/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:56 +00:00
Weblate 674e8c94e7 Translated using Weblate (Spanish)
Currently translated at 90.8% (938 of 1033 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: taretka <info@tarteka.net>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/es/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:56 +00:00
Weblate 5403cadde4 Translated using Weblate (German)
Currently translated at 99.5% (1036 of 1041 strings)

Co-authored-by: Johann <johann@qwertqwefsday.eu>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/de/
Translation: Pleroma fe/pleroma-fe
2023-04-29 03:01:56 +00:00
FloatingGhost 51f788e84f ensure we only fetch reports when we're an admin
Ref #288
2023-04-29 03:01:56 +00:00
solidsanek d5990f165b Drafts: Fix drafts erasing edits and redrafts 2023-04-29 03:01:56 +00:00
FloatingGhost 0a5c7bec1a don't crash if `class` isn't a list 2023-04-29 03:01:56 +00:00
Ngô Ngọc Đức Huy 657dacb38c Fix floating point error for poll expiry
Previous code multiply with 0.001 before multiplication which leads to a
floating point error.  By changing it to division by 1000 after
multiplication this is avoided.
2023-04-29 03:01:56 +00:00
FloatingGhost cc2585409c simplify timeline vibility checks 2023-04-29 03:01:56 +00:00
FloatingGhost f625d044e0 add timeline visibility setting parsing 2023-04-29 03:01:56 +00:00
qbism 6752f5d5d9 update package 2023-03-18 14:41:21 -04:00
qbism fa7f387b63 index 2023-03-18 12:05:00 -04:00
qbism 449544bf02 Merge pull request 'develop' (#5) from AkkomaGang/akkoma-fe:develop into develop
Reviewed-on: qbism/3vis-fe#5
2023-03-18 16:03:52 +00:00
qbism a86b700093 ...so silly 2023-03-18 12:00:47 -04:00
qbism ec433731a8 more pre-resolve attempt 2023-03-18 11:57:21 -04:00
qbism 215a1b9391 resolve conflicts prior to merge 2023-03-18 11:52:32 -04:00
qbism 97eb259cca resolve conflicts prior to merge 2023-03-18 11:52:12 -04:00
qbism 8fb5aa80c6 go light with default theme 2023-03-18 11:19:54 -04:00
a1batross 7746119bbe components: emoji_reactions: force custom emoji reaction height
Prevents the usage of too long emoji reactions
2023-03-01 05:59:41 +00:00
yanchan09 fabde82a64 Improve emoji picker performance (#275)
A simple virtual scroller is now used for the emoji grid. This avoids loading all emoji images at once, saving network bandwidth and reducing load on the server, while also putting less work on the browser's DOM and layout engine.

Co-authored-by: yan <yan@omg.lol>
Reviewed-on: #275
Co-authored-by: yanchan09 <yan@omg.lol>
Co-committed-by: yanchan09 <yan@omg.lol>
2023-03-01 05:59:41 +00:00
floatingghost 4a14fd5fc9 paginate-follow-requests (#277)
Co-authored-by: FloatingGhost <hannah@coffee-and-dreams.uk>
Reviewed-on: #277
2023-03-01 05:59:41 +00:00
eris 4ee683a4ee Disable follow button if blocked by user 2023-03-01 05:59:41 +00:00
eris f19dd6d8a4 Add indicator if user blocks you 2023-03-01 05:59:41 +00:00
qbism 9a76e6b00e font and flex tweaks 2023-02-20 01:41:00 -05:00
qbism c9cc2280c7 font size, "what are you working on"? 2023-02-19 15:02:03 -05:00
qbism 7bcee6e970 mess with TOS some more 2023-02-06 02:16:08 -05:00
qbism bb918fd05c aesthetics 2023-02-01 02:01:13 -05:00
qbism c4778bdf17 TOU 2023-01-29 00:47:58 -05:00
qbism 7f3dd9fa4a wider sidebars, logos, and Terms of Use 2023-01-29 00:06:22 -05:00
44 changed files with 511 additions and 140 deletions

3
.gitignore vendored
View File

@ -9,4 +9,5 @@ selenium-debug.log
config/local.json
config/local.*.json
docs/site/
.vscode/
.vscode/
./*.zip

View File

@ -1,3 +1,4 @@
platform: linux/amd64
pipeline:
lint:
when:

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<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/css/lato.css">
<link rel="stylesheet" href="/static/mfm.css">
@ -14,7 +14,7 @@
<link rel="manifest" href="/manifest.json">
</head>
<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="modal"></div>
<!-- built files will be auto injected -->

View File

@ -1,6 +1,6 @@
{
"name": "pleroma_fe",
"version": "3.5.0",
"version": "3.10.0",
"description": "A frontend for Akkoma instances",
"author": "Roger Braun <roger@rogerbraun.net>",
"private": true,

View File

@ -455,6 +455,7 @@ textarea,
background: none;
box-shadow: none;
height: unset;
font-size: 1.1em;
}
--_padding: 0.5em;
@ -583,6 +584,7 @@ textarea,
textarea {
padding: var(--_padding);
line-height: var(--post-line-height);
font-size: 1.1em;
}
option {

View File

@ -6,7 +6,7 @@
:bound-to="{ x: 'container' }"
remove-padding
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<template v-if="relationship.following">
<button
@ -71,7 +71,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled ellipsis-button">
<FAIcon
class="icon"
@ -93,7 +93,7 @@
keypath="user_card.block_confirm"
tag="span"
>
<template v-slot:user>
<template #user>
<span
v-text="user.screen_name_ui"
/>

View File

@ -270,7 +270,7 @@
&.-contain-fit {
img,
canvas {
object-fit: contain;
object-fit: cover;
}
}

View File

@ -9,7 +9,7 @@
class="btn button-default"
>
{{ $t('domain_mute_card.unmute') }}
<template v-slot:progress>
<template #progress>
{{ $t('domain_mute_card.unmute_progress') }}
</template>
</ProgressButton>
@ -19,7 +19,7 @@
class="btn button-default"
>
{{ $t('domain_mute_card.mute') }}
<template v-slot:progress>
<template #progress>
{{ $t('domain_mute_card.mute_progress') }}
</template>
</ProgressButton>

View File

@ -7,7 +7,7 @@
:bound-to="{ x: 'container' }"
remove-padding
>
<template v-slot:content="{close}">
<template #content="{close}">
<div class="dropdown-menu">
<button
v-if="canMute && !status.thread_muted"
@ -172,7 +172,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled popover-trigger">
<FAIcon
class="fa-scale-110 fa-old-padding"

View File

@ -134,7 +134,7 @@
:offset="{ y: 5 }"
remove-padding
>
<template v-slot:trigger>
<template #trigger>
<button
class="btn button-default"
:disabled="!tagPolicyEnabled"
@ -147,7 +147,7 @@
/>
</button>
</template>
<template v-slot:content="{close}">
<template #content="{close}">
<div
class="dropdown-menu"
:disabled="!tagPolicyEnabled"

View File

@ -8,7 +8,7 @@
@show="setToggled(true)"
@close="setToggled(false)"
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<span v-if="user.is_local">
<button
@ -122,7 +122,7 @@
</span>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button
class="btn button-default btn-block moderation-tools-button"
:class="{ toggled }"
@ -137,11 +137,11 @@
v-if="showDeleteUserDialog"
:on-cancel="deleteUserDialog.bind(this, false)"
>
<template v-slot:header>
<template #header>
{{ $t('user_card.admin_menu.delete_user') }}
</template>
<p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>
<template v-slot:footer>
<template #footer>
<button
class="btn button-default"
@click="deleteUserDialog(false)"

View File

@ -5,7 +5,7 @@
placement="bottom"
:bound-to="{ x: 'container' }"
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<button
class="button-default dropdown-item"
@ -72,7 +72,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="filter-trigger-button button-unstyled">
<FAIcon icon="filter" />
</button>

View File

@ -8,13 +8,13 @@
remove-padding
@show="focusInput"
>
<template v-slot:content="{close}">
<template #content="{close}">
<EmojiPicker
:enable-sticker-picker="false"
@emoji="addReaction($event, close)"
/>
</template>
<template v-slot:trigger>
<template #trigger>
<button
class="button-unstyled popover-trigger"
:title="$t('tool_tip.add_reaction')"

View File

@ -91,20 +91,6 @@
</ul>
</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
class="form-group"
:class="{ 'form-group--error': v$.user.password.$error }"
@ -162,18 +148,6 @@
</ul>
</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
v-if="accountApprovalRequired"
class="form-group"

View File

@ -18,29 +18,30 @@
p {
margin: 0 0 1em 0;
}
}
p:last-child {
margin: 0 0 0 0;
}
h1 {
font-size: 1.1em;
font-size: 1.2em;
line-height: 1.2em;
margin: 1.4em 0;
}
h2 {
font-size: 1.1em;
font-size: 1.2em;
margin: 1em 0;
}
h3 {
font-size: 1em;
font-size: 1.1em;
margin: 1.2em 0;
}
h4 {
font-size: 1.1em;
margin: 1.1em 0;
}

View File

@ -61,11 +61,12 @@
>
<h4>{{ $t('search.no_results') }}</h4>
</div>
<!-- qb: why can't search results be expandable? -->
<Status
v-for="status in visibleStatuses"
:key="status.id"
:collapsable="false"
:expandable="false"
:expandable="true"
:compact="false"
class="search-result"
:statusoid="status"

View File

@ -24,7 +24,7 @@
:items="items"
:get-key="getKey"
>
<template v-slot:item="{item}">
<template #item="{item}">
<div
class="selectable-list-item-inner"
:class="{ 'selectable-list-item-selected-inner': isSelected(item) }"
@ -41,7 +41,7 @@
/>
</div>
</template>
<template v-slot:empty>
<template #empty>
<slot name="empty" />
</template>
</List>

View File

@ -6,14 +6,14 @@
<Popover
trigger="hover"
>
<template v-slot:trigger>
<template #trigger>
&nbsp;
<FAIcon
icon="wrench"
:aria-label="$t('settings.setting_changed')"
/>
</template>
<template v-slot:content>
<template #content>
<div class="modified-tooltip">
{{ $t('settings.setting_changed') }}
</div>

View File

@ -6,14 +6,14 @@
<Popover
trigger="hover"
>
<template v-slot:trigger>
<template #trigger>
&nbsp;
<FAIcon
icon="server"
:aria-label="$t('settings.setting_server_side')"
/>
</template>
<template v-slot:content>
<template #content>
<div class="serverside-tooltip">
{{ $t('settings.setting_server_side') }}
</div>

View File

@ -21,7 +21,7 @@
:refresh="true"
:get-key="i => i"
>
<template v-slot:header="{selected}">
<template #header="{selected}">
<div class="bulk-actions">
<ProgressButton
v-if="selected.length > 0"
@ -29,7 +29,7 @@
:click="() => blockUsers(selected)"
>
{{ $t('user_card.block') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.block_progress') }}
</template>
</ProgressButton>
@ -39,16 +39,16 @@
:click="() => unblockUsers(selected)"
>
{{ $t('user_card.unblock') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.unblock_progress') }}
</template>
</ProgressButton>
</div>
</template>
<template v-slot:item="{item}">
<template #item="{item}">
<BlockCard :user-id="item" />
</template>
<template v-slot:empty>
<template #empty>
{{ $t('settings.no_blocks') }}
</template>
</BlockList>
@ -74,7 +74,7 @@
:refresh="true"
:get-key="i => i"
>
<template v-slot:header="{selected}">
<template #header="{selected}">
<div class="bulk-actions">
<ProgressButton
v-if="selected.length > 0"
@ -82,7 +82,7 @@
:click="() => muteUsers(selected)"
>
{{ $t('user_card.mute') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.mute_progress') }}
</template>
</ProgressButton>
@ -92,16 +92,16 @@
:click="() => unmuteUsers(selected)"
>
{{ $t('user_card.unmute') }}
<template v-slot:progress>
<template #progress>
{{ $t('user_card.unmute_progress') }}
</template>
</ProgressButton>
</div>
</template>
<template v-slot:item="{item}">
<template #item="{item}">
<MuteCard :user-id="item" />
</template>
<template v-slot:empty>
<template #empty>
{{ $t('settings.no_mutes') }}
</template>
</MuteList>
@ -125,7 +125,7 @@
:refresh="true"
:get-key="i => i"
>
<template v-slot:header="{selected}">
<template #header="{selected}">
<div class="bulk-actions">
<ProgressButton
v-if="selected.length > 0"
@ -133,16 +133,16 @@
:click="() => unmuteDomains(selected)"
>
{{ $t('domain_mute_card.unmute') }}
<template v-slot:progress>
<template #progress>
{{ $t('domain_mute_card.unmute_progress') }}
</template>
</ProgressButton>
</div>
</template>
<template v-slot:item="{item}">
<template #item="{item}">
<DomainMuteCard :domain="item" />
</template>
<template v-slot:empty>
<template #empty>
{{ $t('settings.no_mutes') }}
</template>
</DomainMuteList>

View File

@ -40,6 +40,7 @@
.status-container {
display: flex;
flex-direction: column;
padding: var(--status-margin, $status-margin);
.content {

View File

@ -5,10 +5,10 @@
:bound-to="{ x: 'container' }"
@show="enter"
>
<template v-slot:trigger>
<template #trigger>
<slot />
</template>
<template v-slot:content>
<template #content>
<Status
v-if="status"
:is-preview="true"

View File

@ -43,14 +43,14 @@
right: 0;
width: 100%;
height: 100%;
object-fit: contain;
object-fit: cover;
visibility: var(--_still-image-canvas-visibility, visible);
}
img {
width: 100%;
height: 100%;
object-fit: contain;
object-fit: cover;
&::before {
line-height: 20px;

View File

@ -4,7 +4,7 @@
class="TimelineQuickSettings"
:bound-to="{ x: 'container' }"
>
<template v-slot:content>
<template #content>
<div class="dropdown-menu">
<div v-if="loggedIn">
<button
@ -80,7 +80,7 @@
</button>
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled">
<FAIcon icon="filter" />
</button>

View File

@ -9,12 +9,12 @@
@show="openMenu"
@close="() => isOpen = false"
>
<template v-slot:content>
<template #content>
<div class="timeline-menu-popover popover-default">
<TimelineMenuContent />
</div>
</template>
<template v-slot:trigger>
<template #trigger>
<button class="button-unstyled title timeline-menu-title">
<span class="timeline-title">{{ timelineName() }}</span>
<span>

View File

@ -57,7 +57,6 @@ export default {
style () {
return {
backgroundImage: [
`linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,
`url(${this.user.cover_photo})`
].join(', ')
}

View File

@ -35,12 +35,14 @@
left: 0;
right: 0;
bottom: 0;
mask: linear-gradient(to top, white, transparent) bottom no-repeat,
linear-gradient(to top, white, white);
height: 200px;
overflow: clip;
background-position-y: center;
// Autoprefixer seem to ignore this one, and also syntax is different
-webkit-mask-composite: xor;
mask-composite: exclude;
background-size: cover;
background-repeat-y: no-repeat;
mask-size: 100% 60%;
border-top-left-radius: calc(var(--panelRadius) - 1px);
border-top-right-radius: calc(var(--panelRadius) - 1px);
@ -97,14 +99,14 @@
.user-info {
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
padding: 0 26px;
padding: 150px 26px 0; //qb: move below background
.container {
min-width: 0;
padding: 16px 0 6px;
padding: 16px 6px 6px;
display: flex;
align-items: flex-start;
max-height: 56px;
max-height: 92px; //qb: for bigger avatar
> * {
min-width: 0;
@ -116,8 +118,8 @@
--_avatarShadowInset: var(--avatarShadowInset);
flex: 1 0 100%;
width: 56px;
height: 56px;
width: 92px;
height: 92px;
object-fit: cover;
}
}
@ -167,6 +169,7 @@
.user-summary {
display: block;
margin-left: 0.6em;
margin-top: 1.5em;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;

View File

@ -4,10 +4,10 @@
placement="top"
:offset="{ y: 5 }"
>
<template v-slot:trigger>
<template #trigger>
<slot />
</template>
<template v-slot:content>
<template #content>
<div class="user-list-popover">
<template v-if="users.length">
<div

View File

@ -45,7 +45,7 @@
</div>
<div class="user-reporting-panel-right">
<List :items="statuses">
<template v-slot:item="{item}">
<template #item="{item}">
<div class="status-fadein user-reporting-panel-sitem">
<Status
:in-conversation="false"

View File

@ -384,7 +384,7 @@
"email": "Adreça de Correu",
"email_language": "En quina llengua vols rebre els correus del servidor?",
"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",
"password_confirm": "Confirma la contrasenya",
"reason": "Raó per a registrar-se",

View File

@ -413,7 +413,7 @@
"email": "Email",
"email_language": "In welcher Sprache möchtest du E-Mails vom Server erhalten?",
"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",
"password_confirm": "Passwort bestätigen",
"reason": "Grund zur Anmeldung",

View File

@ -380,7 +380,7 @@
"text/x.misskeymarkdown": "MFM"
},
"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_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!",
@ -418,7 +418,7 @@
"email": "Email",
"email_language": "In which language do you want to receive emails from the server?",
"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",
"password_confirm": "Password confirmation",
"reason": "Reason to register",

View File

@ -417,7 +417,7 @@
"email": "Correo electrónico",
"email_language": "¿En qué idioma desea recibir correos electrónicos del servidor?",
"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",
"password_confirm": "Confirmar contraseña",
"reason": "Razón para registrarse",

View File

@ -380,7 +380,7 @@
"text/x.misskeymarkdown": "MFM"
},
"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_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!",
@ -418,7 +418,7 @@
"email": "Surel",
"email_language": "Dalam bahasa apa kamu ingin menerima surel dari server ini?",
"fullname": "Tampilan Nama",
"fullname_placeholder": "cth. Atsuko Kagari",
"fullname_placeholder": "Nickname, or first and last name",
"new_captcha": "Klik gambarnya untuk mendapatkan captcha baru",
"password_confirm": "Konfirmasi kata sandi",
"reason": "Alasan mendaftar",

View File

@ -415,7 +415,7 @@
"email": "E-mail",
"email_language": "In welke taal wil je e-mails ontvangen van de server?",
"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",
"password_confirm": "Wachtwoord bevestiging",
"reason": "Reden voor registratie",
@ -828,7 +828,7 @@
"fine_print": "Lees onze {0} om niets nuttig te leren!",
"header": "Voorvertoning",
"header_faint": "Alles komt goed",
"input": "Zojuist aangekomen bij Luna Nova Academie",
"input": "What are you working on?",
"link": "een leuke kleine link",
"mono": "inhoud",
"text": "Nog een boel andere {0} en {1}"

View File

@ -186,7 +186,7 @@ const interfaceMod = {
if (thirdColumnMode === 'none' || !rootState.users.currentUser) {
commit('setLayoutType', normalOrMobile)
} else {
const wideLayout = width >= 1280
const wideLayout = width >= 1600
commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)
}
},

View File

@ -2,3 +2,18 @@
place a css file at $static_dir/static/custom.css
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

59
static/logo.svg Executable file → Normal file
View File

@ -1,34 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 362.83 362.83">
<defs>
<style>
.cls-1 {
fill: #462d7a;
}
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="256.000000pt" height="256.000000pt" viewBox="0 0 256.000000 256.000000"
preserveAspectRatio="xMidYMid meet">
.cls-2 {
stroke: #2c1e50;
}
.cls-2, .cls-3 {
stroke-miterlimit: 10;
}
.cls-3 {
stroke: #fff;
}
</style>
</defs>
<g id="Layer_9" data-name="Layer 9">
<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"/>
</g>
<g id="Layer_6" data-name="Layer 6">
<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"/>
</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>
</svg>
<g transform="translate(0.000000,256.000000) scale(0.100000,-0.100000)"
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"/>
<path d="M1280 2130 l0 -330 170 0 170 0 0 330 0 330 -170 0 -170 0 0 -330z"/>
<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
210 -180 0 -180 0 0 -110z"/>
<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"/>
<path d="M1280 970 l0 -190 170 0 170 0 0 100 0 100 420 0 420 0 0 90 0 90
-590 0 -590 0 0 -190z"/>
<path d="M1660 630 l0 -110 220 0 220 0 0 110 0 110 -220 0 -220 0 0 -110z"/>
<path d="M740 380 l0 -280 170 0 170 0 0 280 0 280 -170 0 -170 0 0 -280z"/>
<path d="M2140 380 l0 -100 -430 0 -430 0 0 -90 0 -90 590 0 590 0 0 190 0
190 -160 0 -160 0 0 -100z"/>
<path d="M160 270 l0 -170 170 0 170 0 0 170 0 170 -170 0 -170 0 0 -170z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,4 +1,5 @@
{
"threevis": "/static/themes/threevis-theme.json",
"pleroma-dark": "/static/themes/pleroma-dark.json",
"pleroma-light": "/static/themes/pleroma-light.json",
"pleroma-amoled": [ "Pleroma Dark AMOLED", "#000000", "#111111", "#b0b0b1", "#d8a070", "#aa0000", "#0fa00f", "#0095ff", "#d59500"],

View File

@ -1,5 +1,28 @@
<h4>Terms of Service</h4>
<p>This is a placeholder, overwrite this by putting a file at <pre>$STATIC_DIR/static/terms-of-service.html</pre><p>
<p>See the <a href="https://docs.akkoma.dev/main/backend/configuration/static_dir/">Static Directory</a> docs for more info.</p>
<h4>What is 3V.IS?</h4>
<p>"three-viz". WAYWO?: "What are you working on?" Hopefully a place for project pages, docs, game dev,
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
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>

View 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

Binary file not shown.

BIN
threevis-fe-dev.zip Normal file

Binary file not shown.