mirror of
https://github.com/tachiyomiorg/website.git
synced 2024-12-21 07:31:58 +01:00
Lint project
This commit is contained in:
parent
4f2431c306
commit
d87ab7fc72
@ -11,7 +11,7 @@ import generateOgImages from "./config/hooks/generateOgImages";
|
|||||||
const title = "Tachiyomi";
|
const title = "Tachiyomi";
|
||||||
const description = "Read your favorite manga, webtoons, comics, and more – easier than ever on your Android.";
|
const description = "Read your favorite manga, webtoons, comics, and more – easier than ever on your Android.";
|
||||||
|
|
||||||
const env = loadEnv("", process.cwd())
|
const env = loadEnv("", process.cwd());
|
||||||
const hostname: string = env.VITE_HOSTNAME || "http://localhost:4173";
|
const hostname: string = env.VITE_HOSTNAME || "http://localhost:4173";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
@ -69,12 +69,8 @@ const generateMeta = (context: TransformContext, hostname: string) => {
|
|||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
const url = pageData.filePath
|
const url = pageData.filePath.replace("index.md", "").replace(".md", "");
|
||||||
.replace("index.md", "")
|
const imageUrl = `${url}/__og_image__/og.png`.replace(/\/\//g, "/").replace(/^\//, "");
|
||||||
.replace(".md", "");
|
|
||||||
const imageUrl = `${url}/__og_image__/og.png`
|
|
||||||
.replace(/\/\//g, "/")
|
|
||||||
.replace(/^\//, "");
|
|
||||||
|
|
||||||
head.push(["meta", { property: "og:image", content: `${hostname}/${imageUrl}` }]);
|
head.push(["meta", { property: "og:image", content: `${hostname}/${imageUrl}` }]);
|
||||||
head.push(["meta", { property: "og:image:width", content: "1200" }]);
|
head.push(["meta", { property: "og:image:width", content: "1200" }]);
|
||||||
|
@ -10,7 +10,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|||||||
const __fonts = resolve(__dirname, "../../fonts");
|
const __fonts = resolve(__dirname, "../../fonts");
|
||||||
|
|
||||||
async function generateOgImages(config: SiteConfig) {
|
async function generateOgImages(config: SiteConfig) {
|
||||||
const pages = await createContentLoader("**/*.md", { excerpt: true }).load()
|
const pages = await createContentLoader("**/*.md", { excerpt: true }).load();
|
||||||
const template = await readFile(resolve(__dirname, "../../theme/components/OgImageTemplate.vue"), "utf-8");
|
const template = await readFile(resolve(__dirname, "../../theme/components/OgImageTemplate.vue"), "utf-8");
|
||||||
|
|
||||||
const fonts: SatoriOptions["fonts"] = [
|
const fonts: SatoriOptions["fonts"] = [
|
||||||
@ -40,14 +40,14 @@ async function generateOgImages(config: SiteConfig) {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const filteredPages = pages.filter(p => p.frontmatter.image === undefined);
|
const filteredPages = pages.filter((p) => p.frontmatter.image === undefined);
|
||||||
|
|
||||||
for (const page of filteredPages) {
|
for (const page of filteredPages) {
|
||||||
await generateImage({
|
await generateImage({
|
||||||
page,
|
page,
|
||||||
template,
|
template,
|
||||||
outDir: config.outDir,
|
outDir: config.outDir,
|
||||||
fonts
|
fonts,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,19 +69,17 @@ async function generateImage({ page, template, outDir, fonts }: GenerateImagesOp
|
|||||||
height: 628,
|
height: 628,
|
||||||
fonts,
|
fonts,
|
||||||
props: {
|
props: {
|
||||||
title: frontmatter.layout === "home"
|
title:
|
||||||
? (frontmatter.hero.name ?? frontmatter.title.replace(/\s\-.*$/, ""))
|
frontmatter.layout === "home"
|
||||||
: (frontmatter.customMetaTitle ?? frontmatter.title.replace(/\s\-.*$/, "")),
|
? frontmatter.hero.name ?? frontmatter.title.replace(/\s\-.*$/, "")
|
||||||
description: frontmatter.layout === "home"
|
: frontmatter.customMetaTitle ?? frontmatter.title.replace(/\s\-.*$/, ""),
|
||||||
? (frontmatter.hero.tagline ?? frontmatter.description)
|
description:
|
||||||
: frontmatter.description,
|
frontmatter.layout === "home"
|
||||||
dir: (url.startsWith("/docs/faq/"))
|
? frontmatter.hero.tagline ?? frontmatter.description
|
||||||
? "FAQ"
|
: frontmatter.description,
|
||||||
: (url.startsWith("/docs/guides/"))
|
dir: url.startsWith("/docs/faq/") ? "FAQ" : url.startsWith("/docs/guides/") ? "Guide" : undefined,
|
||||||
? "Guide"
|
},
|
||||||
: undefined,
|
};
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const svg = await satoriVue(options, template);
|
const svg = await satoriVue(options, template);
|
||||||
|
|
||||||
|
@ -13,18 +13,17 @@ import shortcodes from "./shortcodes";
|
|||||||
const markdownConfig: MarkdownOptions = {
|
const markdownConfig: MarkdownOptions = {
|
||||||
config: (md) => {
|
config: (md) => {
|
||||||
md.use(attrs),
|
md.use(attrs),
|
||||||
md.use(figure),
|
md.use(figure),
|
||||||
md.use(imgLazyload),
|
md.use(imgLazyload),
|
||||||
md.use(imgMark),
|
md.use(imgMark),
|
||||||
md.use(imgSize),
|
md.use(imgSize),
|
||||||
md.use(include, {
|
md.use(include, {
|
||||||
currentPath: (env) => env.filePath,
|
currentPath: (env) => env.filePath,
|
||||||
}),
|
}),
|
||||||
md.use(tabsMarkdownPlugin);
|
md.use(tabsMarkdownPlugin);
|
||||||
|
|
||||||
md.use(shortcode_plugin, shortcodes);
|
md.use(shortcode_plugin, shortcodes);
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default markdownConfig;
|
export default markdownConfig;
|
||||||
|
@ -8,7 +8,7 @@ const nav = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: APP_VERSION,
|
text: APP_VERSION,
|
||||||
activeMatch: "^\/*?(download|changelogs)\/*?$",
|
activeMatch: "^/*?(download|changelogs)/*?$",
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
text: "Download",
|
text: "Download",
|
||||||
|
@ -1,54 +1,54 @@
|
|||||||
const navigationMappings = {
|
const navigationMappings = {
|
||||||
more: {
|
more: {
|
||||||
name: "More",
|
name: "More",
|
||||||
title: "More menu",
|
title: "More menu",
|
||||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>dots-horizontal</title><path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z" /></svg>`,
|
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>dots-horizontal</title><path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z" /></svg>`,
|
||||||
},
|
},
|
||||||
settings: {
|
settings: {
|
||||||
name: "Settings",
|
name: "Settings",
|
||||||
title: "Settings menu",
|
title: "Settings menu",
|
||||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>cog</title><path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" /></svg>`,
|
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>cog</title><path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" /></svg>`,
|
||||||
dependsOn: "more",
|
dependsOn: "more",
|
||||||
},
|
},
|
||||||
reader: {
|
reader: {
|
||||||
name: "Reader",
|
name: "Reader",
|
||||||
title: "Reader menu",
|
title: "Reader menu",
|
||||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>book-open-outline</title><path d="M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M3,19V6H11V19H3M21,19H13V6H21V19M14,9.5H20V11H14V9.5M14,12H20V13.5H14V12M14,14.5H20V16H14V14.5Z" /></svg>`,
|
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>book-open-outline</title><path d="M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M3,19V6H11V19H3M21,19H13V6H21V19M14,9.5H20V11H14V9.5M14,12H20V13.5H14V12M14,14.5H20V16H14V14.5Z" /></svg>`,
|
||||||
dependsOn: "settings",
|
dependsOn: "settings",
|
||||||
},
|
},
|
||||||
advanced: {
|
advanced: {
|
||||||
name: "Advanced",
|
name: "Advanced",
|
||||||
title: "Advanced menu",
|
title: "Advanced menu",
|
||||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>code-tags</title><path d="M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z" /></svg>`,
|
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>code-tags</title><path d="M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z" /></svg>`,
|
||||||
dependsOn: "settings",
|
dependsOn: "settings",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
function generateNavigationHtml(navKey) {
|
function generateNavigationHtml(navKey) {
|
||||||
const navData = navigationMappings[navKey];
|
const navData = navigationMappings[navKey];
|
||||||
|
|
||||||
if (!navData) {
|
if (!navData) {
|
||||||
return "<strong style='color:var(--vp-c-danger-1)'>Unsupported Navigation!</strong>";
|
return "<strong style='color:var(--vp-c-danger-1)'>Unsupported Navigation!</strong>";
|
||||||
}
|
}
|
||||||
|
|
||||||
const { name, title, icon, dependsOn } = navData;
|
const { name, title, icon, dependsOn } = navData;
|
||||||
|
|
||||||
let html = `<span class='shortcode navigation ${navKey}' title='${title}'>${icon}<span class="name">${name}</span></span>`;
|
let html = `<span class='shortcode navigation ${navKey}' title='${title}'>${icon}<span class="name">${name}</span></span>`;
|
||||||
|
|
||||||
if (dependsOn) {
|
if (dependsOn) {
|
||||||
html = generateNavigationHtml(dependsOn) + ` → ` + html;
|
html = generateNavigationHtml(dependsOn) + ` → ` + html;
|
||||||
}
|
}
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
const shortcodes = {
|
const shortcodes = {
|
||||||
nav: {
|
nav: {
|
||||||
render: function (attrs, env) {
|
render: function (attrs, env) {
|
||||||
const { method, to } = attrs;
|
const { method, to } = attrs;
|
||||||
return generateNavigationHtml(to);
|
return generateNavigationHtml(to);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default shortcodes;
|
export default shortcodes;
|
||||||
|
@ -38,7 +38,7 @@ const themeConfig: DefaultTheme.Config = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: {
|
icon: {
|
||||||
svg: '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z"/></svg>',
|
svg: '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z"/></svg>',
|
||||||
},
|
},
|
||||||
link: "https://reddit.com/r/Tachiyomi",
|
link: "https://reddit.com/r/Tachiyomi",
|
||||||
ariaLabel: "Support subreddit",
|
ariaLabel: "Support subreddit",
|
||||||
|
@ -56,14 +56,14 @@ const dateFormatter = new Intl.DateTimeFormat("en", {
|
|||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
h2 {
|
h2 {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0
|
||||||
display: flex;
|
display: flex
|
||||||
align-items: center;
|
align-items: center
|
||||||
gap: 0.5rem;
|
gap: 0.5rem
|
||||||
}
|
}
|
||||||
|
|
||||||
time {
|
time {
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem
|
||||||
color: var(--vp-c-text-2);
|
color: var(--vp-c-text-2)
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -81,29 +81,29 @@ function addToNonExistent(user: string) {
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.contributors {
|
.contributors {
|
||||||
ul {
|
ul {
|
||||||
display: flex;
|
display: flex
|
||||||
align-items: center;
|
align-items: center
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap
|
||||||
gap: 0.5rem;
|
gap: 0.5rem
|
||||||
list-style-type: none;
|
list-style-type: none
|
||||||
padding-left: 0;
|
padding-left: 0
|
||||||
|
|
||||||
li + li {
|
li + li {
|
||||||
margin-top: 0;
|
margin-top: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
width: 32px;
|
width: 32px
|
||||||
height: 32px;
|
height: 32px
|
||||||
border-radius: 50%;
|
border-radius: 50%
|
||||||
box-shadow: var(--vp-shadow-1);
|
box-shadow: var(--vp-shadow-1)
|
||||||
border: 1px solid var(--vp-c-divider);
|
border: 1px solid var(--vp-c-divider)
|
||||||
}
|
}
|
||||||
|
|
||||||
.names {
|
.names {
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem
|
||||||
color: var(--vp-c-text-2);
|
color: var(--vp-c-text-2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
<script>
|
|
||||||
import { langName, simpleLangName } from "../../../config/scripts/languages";
|
|
||||||
import ExtensionItem from "./ExtensionItem.vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: { ExtensionItem },
|
|
||||||
props: ["list", "totalCount"],
|
|
||||||
computed: {
|
|
||||||
groupName: function () {
|
|
||||||
const firstItem = this.list[0];
|
|
||||||
return firstItem.lang === "en" ? simpleLangName(firstItem.lang) : langName(firstItem.lang);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
simpleLangName,
|
|
||||||
langName,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="extension-group">
|
|
||||||
<h2>
|
|
||||||
{{ groupName }}
|
|
||||||
|
|
||||||
<span class="extensions-total">
|
|
||||||
Total:
|
|
||||||
<span class="extensions-total-sum">
|
|
||||||
{{ totalCount }}
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</h2>
|
|
||||||
<ExtensionItem
|
|
||||||
v-for="extension in list"
|
|
||||||
:id="extension.pkg.replace('eu.kanade.tachiyomi.extension.', '')"
|
|
||||||
:key="extension.apk"
|
|
||||||
:item="extension"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style lang="stylus">
|
|
||||||
.extensions-total {
|
|
||||||
float: right
|
|
||||||
|
|
||||||
&-sum {
|
|
||||||
color: var(--vp-c-brand)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -77,7 +77,7 @@ export default {
|
|||||||
|
|
||||||
.extension-icon {
|
.extension-icon {
|
||||||
flex-shrink: 0
|
flex-shrink: 0
|
||||||
margin-left: -4px;
|
margin-left: -4px
|
||||||
}
|
}
|
||||||
|
|
||||||
.extension-text {
|
.extension-text {
|
||||||
@ -129,7 +129,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width 767px) {
|
@media (max-width 767px) {
|
||||||
padding: 0.4em 0em
|
padding: 0.4em 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ export default {
|
|||||||
padding: 0.5em
|
padding: 0.5em
|
||||||
|
|
||||||
.extension-icon {
|
.extension-icon {
|
||||||
margin-left: 0;
|
margin-left: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
.extension-download {
|
.extension-download {
|
||||||
|
@ -33,14 +33,15 @@ const dateFormatter = new Intl.DateTimeFormat("en", { dateStyle: "medium" });
|
|||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.news {
|
.news {
|
||||||
display: flex;
|
display: flex
|
||||||
flex-direction: column;
|
flex-direction: column
|
||||||
gap: 0.5rem
|
gap: 0.5rem
|
||||||
position: relative
|
position: relative
|
||||||
|
|
||||||
&:first-of-type {
|
&:first-of-type {
|
||||||
margin-top: 3rem
|
margin-top: 3rem
|
||||||
}
|
}
|
||||||
|
|
||||||
& + .news {
|
& + .news {
|
||||||
margin-top: 3rem
|
margin-top: 3rem
|
||||||
}
|
}
|
||||||
@ -52,7 +53,8 @@ const dateFormatter = new Intl.DateTimeFormat("en", { dateStyle: "medium" });
|
|||||||
z-index: 10
|
z-index: 10
|
||||||
}
|
}
|
||||||
|
|
||||||
h3, p {
|
h3,
|
||||||
|
p {
|
||||||
margin: 0
|
margin: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +79,10 @@ const dateFormatter = new Intl.DateTimeFormat("en", { dateStyle: "medium" });
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.title, .readPrompt, p, time {
|
.title,
|
||||||
|
.readPrompt,
|
||||||
|
p,
|
||||||
|
time {
|
||||||
position: relative
|
position: relative
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +107,8 @@ const dateFormatter = new Intl.DateTimeFormat("en", { dateStyle: "medium" });
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover, .background {
|
.hover,
|
||||||
|
.background {
|
||||||
position: absolute
|
position: absolute
|
||||||
z-index: 20
|
z-index: 20
|
||||||
bottom: -1rem
|
bottom: -1rem
|
||||||
@ -117,18 +123,27 @@ const dateFormatter = new Intl.DateTimeFormat("en", { dateStyle: "medium" });
|
|||||||
transform: scale(0.95)
|
transform: scale(0.95)
|
||||||
opacity: 0
|
opacity: 0
|
||||||
z-index: 0
|
z-index: 0
|
||||||
transition: opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1),
|
transition: opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1), transform 0.15s cubic-bezier(0.4, 0, 0.2, 1)
|
||||||
transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover .background, &:focus-within .background {
|
&:hover .background,
|
||||||
|
&:focus-within .background {
|
||||||
opacity: 1
|
opacity: 1
|
||||||
transform: scale(1)
|
transform: scale(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 a:focus-visible + .background {
|
h3: a
|
||||||
|
|
||||||
|
:focus-visible + .background {
|
||||||
|
outline: 2px solid var(--vp-c-brand-2)
|
||||||
|
}
|
||||||
|
|
||||||
|
:focus-visible + .background {
|
||||||
|
outline: 2px solid var(--vp-c-brand-2)
|
||||||
|
}
|
||||||
|
|
||||||
|
:focus-visible + .background {
|
||||||
outline: 2px solid var(--vp-c-brand-2)
|
outline: 2px solid var(--vp-c-brand-2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -24,6 +24,6 @@
|
|||||||
<div v-if="description" tw="mt-2 text-4xl text-slate-600">{{ description }}</div>
|
<div v-if="description" tw="mt-2 text-4xl text-slate-600">{{ description }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div tw="shrink-0 h-2 w-full flex" style="background-color: #8995FF;" />
|
<div tw="shrink-0 h-2 w-full flex" style="background-color: #8995ff;" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -50,7 +50,7 @@ const whatsNew = computed(() => {
|
|||||||
transition: border-color 0.25s, background-color 0.25s
|
transition: border-color 0.25s, background-color 0.25s
|
||||||
padding: 24px
|
padding: 24px
|
||||||
height: 100%
|
height: 100%
|
||||||
margin: 1.5em auto 0.5em auto
|
margin: 1.5em auto 0.5em
|
||||||
|
|
||||||
header {
|
header {
|
||||||
display: flex
|
display: flex
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { defineLoader } from "vitepress"
|
import { defineLoader } from "vitepress";
|
||||||
import { Octokit } from "@octokit/rest";
|
import { Octokit } from "@octokit/rest";
|
||||||
import type { GetResponseDataTypeFromEndpointMethod } from "@octokit/types";
|
import type { GetResponseDataTypeFromEndpointMethod } from "@octokit/types";
|
||||||
|
|
||||||
@ -18,5 +18,5 @@ export default defineLoader({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return releases;
|
return releases;
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { defineLoader, createContentLoader } from "vitepress"
|
import { defineLoader, createContentLoader } from "vitepress";
|
||||||
|
|
||||||
export interface News {
|
export interface News {
|
||||||
title: string;
|
title: string;
|
||||||
@ -16,12 +16,15 @@ export default defineLoader({
|
|||||||
|
|
||||||
return articles
|
return articles
|
||||||
.filter(({ url }) => url !== "/news/")
|
.filter(({ url }) => url !== "/news/")
|
||||||
.map(({ frontmatter, url }) => <News>({
|
.map(
|
||||||
title: frontmatter.title,
|
({ frontmatter, url }) =>
|
||||||
description: frontmatter.description,
|
<News>{
|
||||||
date: frontmatter.date,
|
title: frontmatter.title,
|
||||||
url,
|
description: frontmatter.description,
|
||||||
}))
|
date: frontmatter.date,
|
||||||
|
url,
|
||||||
|
}
|
||||||
|
)
|
||||||
.sort((a, b) => b.date.localeCompare(a.date));
|
.sort((a, b) => b.date.localeCompare(a.date));
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { defineLoader } from "vitepress"
|
import { defineLoader } from "vitepress";
|
||||||
import { Octokit } from "@octokit/rest";
|
import { Octokit } from "@octokit/rest";
|
||||||
import type { GetResponseDataTypeFromEndpointMethod } from "@octokit/types";
|
import type { GetResponseDataTypeFromEndpointMethod } from "@octokit/types";
|
||||||
|
|
||||||
@ -27,5 +27,5 @@ export default defineLoader({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return { stable, preview };
|
return { stable, preview };
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
@ -117,13 +117,14 @@ html:not(.dark) {
|
|||||||
/**
|
/**
|
||||||
* Component: LocalSearch
|
* Component: LocalSearch
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.VPLocalSearchBox {
|
.VPLocalSearchBox {
|
||||||
--vp-local-search-highlight-bg: var(--vp-c-brand-soft);
|
--vp-local-search-highlight-bg: var(--vp-c-brand-soft)
|
||||||
--vp-local-search-highlight-text: var(--vp-c-brand-dark);
|
--vp-local-search-highlight-text: var(--vp-c-brand-dark)
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark .VPLocalSearchBox {
|
.dark .VPLocalSearchBox {
|
||||||
--vp-local-search-highlight-text: var(--vp-c-brand-lightest);
|
--vp-local-search-highlight-text: var(--vp-c-brand-lightest)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -191,6 +192,7 @@ main :where(h1, h2, h3, h4, h5, h6) + figure {
|
|||||||
/**
|
/**
|
||||||
* Component: Shortcodes
|
* Component: Shortcodes
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
.navigation {
|
.navigation {
|
||||||
color: var(--vp-c-text-2)
|
color: var(--vp-c-text-2)
|
||||||
font-weight: 600
|
font-weight: 600
|
||||||
@ -202,7 +204,7 @@ main :where(h1, h2, h3, h4, h5, h6) + figure {
|
|||||||
|
|
||||||
svg,
|
svg,
|
||||||
span.name {
|
span.name {
|
||||||
vertical-align: middle; /* Align both SVG and <span> vertically */
|
vertical-align: middle // Align both SVG and <span> vertically
|
||||||
}
|
}
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
|
9
website/src/.vitepress/theme/styles/forks/lint.styl
Normal file
9
website/src/.vitepress/theme/styles/forks/lint.styl
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.extension-list {
|
||||||
|
> div {
|
||||||
|
&:not(:first-of-type) {
|
||||||
|
.extensions-total {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user