Skip to content

Commit 181b7f3

Browse files
committed
Add userbars
1 parent 11aff71 commit 181b7f3

File tree

5 files changed

+61
-2
lines changed

5 files changed

+61
-2
lines changed

components.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ declare module 'vue' {
2828
RouterView: typeof import('vue-router')['RouterView']
2929
SignInGate: typeof import('./src/components/SignInGate.vue')['default']
3030
SpotifyPlayer: typeof import('./src/components/custom-elements/SpotifyPlayer.vue')['default']
31+
'Userbar.ce': typeof import('./src/components/custom-elements/Userbar.ce.vue')['default']
32+
'UserbarBadge.ce': typeof import('./src/components/custom-elements/UserbarBadge.ce.vue')['default']
3133
VaButton: typeof import('vuestic-ui')['VaButton']
3234
'WebampPlayer.ce': typeof import('./src/components/custom-elements/WebampPlayer.ce.vue')['default']
3335
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<script setup lang="ts">
2+
const props = defineProps<{
3+
width?: number;
4+
height?: number;
5+
text?: string;
6+
textColor?: string;
7+
8+
backgroundType?: "gradient" | "plain";
9+
backgroundPositionX?: number;
10+
backgroundPositionY?: number;
11+
backgroundEndPositionX?: number;
12+
backgroundEndPositionY?: number;
13+
backgroundColor?: string;
14+
backgroundColors?: string[];
15+
16+
textAlign?: "left" | "center" | "right";
17+
textBorder?: boolean;
18+
textBorderWidth?: number;
19+
textBorderColor?: string;
20+
pattern?: "none" | "dots" | "stripes";
21+
topShadow?: boolean;
22+
}>();
23+
24+
import userbarGenerator from '@/external/userbar-generator/src/index';
25+
import { useObjectUrl } from '@vueuse/core';
26+
27+
const blob = await userbarGenerator({
28+
width: props.width,
29+
height: props.height,
30+
text: props.text,
31+
textColor: props.textColor,
32+
33+
background: props.backgroundType !== undefined ? {
34+
type: props.backgroundType,
35+
positionX: props.backgroundPositionX,
36+
positionY: props.backgroundPositionY,
37+
endPositionX: props.backgroundEndPositionX,
38+
endPositionY: props.backgroundEndPositionY,
39+
colors: props.backgroundColors ?? (props.backgroundColor ? [props.backgroundColor] : undefined) ?? [],
40+
} : undefined,
41+
42+
textAlign: props.textAlign,
43+
textBorder: props.textBorder,
44+
textBorderWidth: props.textBorderWidth,
45+
textBorderColor: props.textBorderColor,
46+
pattern: props.pattern,
47+
topShadow: props.topShadow,
48+
});
49+
50+
const objectUrl = useObjectUrl(blob);
51+
</script>
52+
53+
<template>
54+
<img v-bind="$attrs" :src="objectUrl" >
55+
</template>

src/lib/markdown/components.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import OnekoKitty from '@/components/custom-elements/OnekoKitty.ce.vue';
2020
import NewBlink from '@/components/custom-elements/NewBlink.ce.vue';
2121
import LesbiBadge from '@/components/custom-elements/LesbiBadge.ce.vue';
2222
import EightyEightThirtyOneBadge from '@/components/custom-elements/EightyEightThirtyOneBadge.ce.vue';
23+
import UserbarBadge from '@/components/custom-elements/UserbarBadge.ce.vue';
2324

2425
type Props = Record<string, any>;
2526

@@ -73,5 +74,6 @@ export const components: MDXComponents = {
7374
blink: NewBlink,
7475
LesbiBadge: LesbiBadge,
7576
Badge: EightyEightThirtyOneBadge,
77+
Userbar: UserbarBadge,
7678
...(extraComponents as unknown as MDXComponents)
7779
};

tsconfig.app.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"extends": "@vue/tsconfig/tsconfig.dom.json",
33
"include": ["env.d.ts", "src/**/*", "src/**/*.vue", "cli/**/*.ts"],
4-
"exclude": ["src/**/__tests__/*", "node_modules", "src/external"],
4+
"exclude": ["src/**/__tests__/*", "node_modules", "src/external/webamp"],
55
"compilerOptions": {
66
"composite": true,
77
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",

0 commit comments

Comments
 (0)