0144408500
* wip * Update maps.ts * wip * wip * wip * wip * Update base.vue * wip * wip * wip * wip * Update link.vue * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update privacy.vue * wip * wip * wip * wip * Update range.vue * wip * wip * wip * wip * Update profile.vue * wip * Update a.vue * Update index.vue * wip * Update sidebar.vue * wip * wip * Update account-info.vue * Update a.vue * wip * wip * Update sounds.vue * wip * wip * wip * wip * wip * wip * wip * wip * Update account-info.vue * Update account-info.vue * wip * wip * wip * Update d-persimmon.json5 * wip
80 lines
1.5 KiB
Vue
80 lines
1.5 KiB
Vue
<template>
|
|
<div class="rsqzvsbo _section" v-if="meta">
|
|
<div class="blocks">
|
|
<XBlock class="block" v-for="path in meta.pinnedPages" :initial-path="path" :key="path"/>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { defineComponent } from 'vue';
|
|
import { toUnicode } from 'punycode';
|
|
import XSigninDialog from '@/components/signin-dialog.vue';
|
|
import XSignupDialog from '@/components/signup-dialog.vue';
|
|
import MkButton from '@/components/ui/button.vue';
|
|
import XNotes from '@/components/notes.vue';
|
|
import XBlock from './welcome.entrance.block.vue';
|
|
import { host, instanceName } from '@/config';
|
|
import * as os from '@/os';
|
|
|
|
export default defineComponent({
|
|
components: {
|
|
MkButton,
|
|
XNotes,
|
|
XBlock,
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
host: toUnicode(host),
|
|
instanceName,
|
|
meta: null,
|
|
};
|
|
},
|
|
|
|
created() {
|
|
os.api('meta', { detail: true }).then(meta => {
|
|
this.meta = meta;
|
|
});
|
|
|
|
os.api('stats').then(stats => {
|
|
this.stats = stats;
|
|
});
|
|
},
|
|
|
|
methods: {
|
|
signin() {
|
|
os.popup(XSigninDialog, {
|
|
autoSet: true
|
|
}, {}, 'closed');
|
|
},
|
|
|
|
signup() {
|
|
os.popup(XSignupDialog, {
|
|
autoSet: true
|
|
}, {}, 'closed');
|
|
}
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.rsqzvsbo {
|
|
text-align: center;
|
|
|
|
> .blocks {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
|
|
grid-gap: var(--margin);
|
|
text-align: left;
|
|
|
|
> .block {
|
|
height: 600px;
|
|
}
|
|
|
|
@media (max-width: 800px) {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
}
|
|
</style>
|