feat: BRAND-NEW OSCAR Node #5

This commit is contained in:
무라쿠모 2024-09-13 02:21:06 +09:00
parent 7d195b4371
commit e26b55f8bb
No known key found for this signature in database
GPG key ID: 139D6573F92DA9F7
8 changed files with 44 additions and 12 deletions

View file

@ -0,0 +1,16 @@
LICENSE
-------
Copyright (c) by 도록 (@DK_DK42)
- entrance-1.png
- entrance-2.png
- entrance-3.png
위 3개의 파일은 도록 (@DK_DK42) 님의 창작물로, 저작권으로 보호됩니다.
OSCAR Node #4 및 oscar.surf, オスカー。의 자체 캐릭터 디자인이 포함되어 있으며, 사전 승인 없는 무단 재배포, 재사용, 변조, 수정 등은 엄격히 금지됩니다.
위 사항을 위반할 경우 저작권법에 의해 법적 처벌을 받을 수 있음을 유념해주시기 바랍니다.
본 코드를 이용하시는 경우, 해당 애셋을 제거하실 것을 권장드리는 바입니다.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 MiB

View file

@ -4,11 +4,19 @@ SPDX-License-Identifier: AGPL-3.0-only
--> -->
<template> <template>
<div v-if="instance" :class="$style.root" :style="{ backgroundImage: `url(${ instance.backgroundImageUrl })` }"></div> <div v-if="instance && !special" :class="$style.root" :style="{ backgroundImage: `url(${ instance.backgroundImageUrl })` }"></div>
<div v-else-if="instance && special" :class="$style.root" :style="{ backgroundImage: `url(${ entranceBackground })` }"></div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { instance } from '@/instance.js'; import { instance } from '@/instance.js';
import entranceBackground from '/client-assets/oscar/entrance-3.png';
const props = withDefaults(defineProps<{
special: boolean;
}>(), {
special: false,
});
</script> </script>
<style lang="scss" module> <style lang="scss" module>

View file

@ -41,7 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only
import { ref } from 'vue'; import { ref } from 'vue';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import XTimeline from './welcome.timeline.vue'; import XTimeline from './welcome.timeline.vue';
import MarqueeText from '@/components/MkMarquee.vue'; // import MarqueeText from '@/components/MkMarquee.vue';
import MkFeaturedPhotos from '@/components/MkFeaturedPhotos.vue'; import MkFeaturedPhotos from '@/components/MkFeaturedPhotos.vue';
import misskeysvg from '/client-assets/misskey.svg'; import misskeysvg from '/client-assets/misskey.svg';
import { misskeyApiGet } from '@/scripts/misskey-api.js'; import { misskeyApiGet } from '@/scripts/misskey-api.js';

View file

@ -5,14 +5,16 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<div v-if="meta" class="rsqzvsbo"> <div v-if="meta" class="rsqzvsbo">
<MkFeaturedPhotos class="bg"/> <MkFeaturedPhotos class="bg" special/>
<XTimeline class="tl"/> <XTimeline class="tl"/>
<img :src="entranceTide" class="extra-1"/>
<div class="shape1"></div> <div class="shape1"></div>
<div class="shape2"></div> <div class="shape2"></div>
<img class="extra-2" src="/client-assets/entrance-extra-2.png"/> <img :src="entranceBackground" class="extra-2"/>
<img class="extra-1" src="/client-assets/entrance-extra-1.png"/> <img :src="entranceCharacter" class="extra-1"/>
<div class="logo-wrapper"> <div class="logo-wrapper">
<img src="/client-assets/entrance-extra-3.png" class="misskey"/> <div class="powered-by">Powered by</div>
<img :src="misskeysvg" class="misskey"/>
</div> </div>
<div class="emojis"> <div class="emojis">
<MkEmoji :normal="true" :noStyle="true" emoji="👍"/> <MkEmoji :normal="true" :noStyle="true" emoji="👍"/>
@ -24,15 +26,17 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="contents"> <div class="contents">
<MkVisitorDashboard/> <MkVisitorDashboard/>
</div> </div>
<!--
<div v-if="instances && instances.length > 0" class="federation"> <div v-if="instances && instances.length > 0" class="federation">
<MarqueeText :duration="40"> <MarqueeText :duration="40">
<MkA v-for="instance in instances" :key="instance.id" :class="$style.federationInstance" :to="`/instance-info/${instance.host}`" behavior="window"> <MkA v-for="instance in instances" :key="instance.id" :class="$style.federationInstance" :to="`/instance-info/${instance.host}`" behavior="window">
<!--<MkInstanceCardMini :instance="instance"/>--> <MkInstanceCardMini :instance="instance"/>
<img v-if="instance.iconUrl" class="icon" :src="getInstanceIcon(instance)" alt=""/> <img v-if="instance.iconUrl" class="icon" :src="getInstanceIcon(instance)" alt=""/>
<span class="name _monospace">{{ instance.host }}</span> <span class="name _monospace">{{ instance.host }}</span>
</MkA> </MkA>
</MarqueeText> </MarqueeText>
</div> </div>
-->
</div> </div>
</template> </template>
@ -40,12 +44,16 @@ SPDX-License-Identifier: AGPL-3.0-only
import { ref } from 'vue'; import { ref } from 'vue';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import XTimeline from './welcome.timeline.vue'; import XTimeline from './welcome.timeline.vue';
import MarqueeText from '@/components/MkMarquee.vue'; // import MarqueeText from '@/components/MkMarquee.vue';
import MkFeaturedPhotos from '@/components/MkFeaturedPhotos.vue'; import MkFeaturedPhotos from '@/components/MkFeaturedPhotos.vue';
import { misskeyApiGet } from '@/scripts/misskey-api.js'; import { misskeyApiGet } from '@/scripts/misskey-api.js';
import MkVisitorDashboard from '@/components/MkVisitorDashboard.vue'; import MkVisitorDashboard from '@/components/MkVisitorDashboard.vue';
import { getProxiedImageUrl } from '@/scripts/media-proxy.js'; import { getProxiedImageUrl } from '@/scripts/media-proxy.js';
import { instance as meta } from '@/instance.js'; import { instance as meta } from '@/instance.js';
import misskeysvg from '/client-assets/misskey.svg';
import entranceCharacter from '/client-assets/oscar/entrance-1.png';
import entranceTide from '/client-assets/oscar/entrance-2.png';
import entranceBackground from '/client-assets/oscar/entrance-3.png';
const instances = ref<Misskey.entities.FederationInstance[]>(); const instances = ref<Misskey.entities.FederationInstance[]>();
@ -126,7 +134,7 @@ misskeyApiGet('federation/instances', {
} }
> .misskey { > .misskey {
width: 240px; width: 140px;
@media (max-width: 450px) { @media (max-width: 450px) {
width: 130px; width: 130px;
} }
@ -196,13 +204,13 @@ misskeyApiGet('federation/instances', {
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100vw; width: 100vw;
height: 90vh; height: 95vh;
object-fit: contain; object-fit: contain;
pointer-events: none; pointer-events: none;
@media (max-width: 1200px) { @media (max-width: 1200px) {
width: auto; width: auto;
height: 70vh; height: 80vh;
left: auto; left: auto;
right: 0; right: 0;
} }

View file

@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
import { computed, ref } from 'vue'; import { computed, ref } from 'vue';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import XSetup from './welcome.setup.vue'; import XSetup from './welcome.setup.vue';
import XEntrance from './welcome.entrance.a.vue'; import XEntrance from './welcome.entrance.special.vue';
import { instanceName } from '@/config.js'; import { instanceName } from '@/config.js';
import { definePageMetadata } from '@/scripts/page-metadata.js'; import { definePageMetadata } from '@/scripts/page-metadata.js';
import { fetchInstance } from '@/instance.js'; import { fetchInstance } from '@/instance.js';