mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
101 lines
2.5 KiB
TypeScript
101 lines
2.5 KiB
TypeScript
import { remarkCodeHike } from '@code-hike/mdx';
|
|
import { defineDocumentType, makeSource } from 'contentlayer/source-files';
|
|
// import { type Node, toString } from 'hast-util-to-string';
|
|
// import { h } from 'hastscript';
|
|
// import { escape } from 'html-escaper';
|
|
// import rehypeAutolinkHeadings from 'rehype-autolink-headings';
|
|
import rehypeSlug from 'rehype-slug';
|
|
import remarkGfm from 'remark-gfm';
|
|
|
|
export const Content = defineDocumentType(() => ({
|
|
name: 'Content',
|
|
filePathPattern: `**/*.mdx`,
|
|
contentType: 'mdx',
|
|
fields: {
|
|
title: {
|
|
type: 'string',
|
|
required: true,
|
|
},
|
|
summary: {
|
|
type: 'string',
|
|
},
|
|
image: {
|
|
type: 'string',
|
|
},
|
|
},
|
|
computedFields: {
|
|
slug: {
|
|
type: 'string',
|
|
resolve: (doc) => doc._raw.flattenedPath,
|
|
},
|
|
url: {
|
|
type: 'string',
|
|
resolve: (post) => `/posts/${post._raw.flattenedPath}`,
|
|
},
|
|
},
|
|
}));
|
|
|
|
// const LinkIcon = h(
|
|
// 'svg',
|
|
// {
|
|
// width: '1rem',
|
|
// height: '1rem',
|
|
// viewBox: '0 0 24 24',
|
|
// fill: 'none',
|
|
// stroke: 'currentColor',
|
|
// strokeWidth: '2',
|
|
// strokeLinecap: 'round',
|
|
// strokeLinejoin: 'round',
|
|
// },
|
|
// h('path', {
|
|
// // eslint-disable-next-line id-length
|
|
// d: 'M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71',
|
|
// }),
|
|
// h('path', {
|
|
// // eslint-disable-next-line id-length
|
|
// d: 'M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71',
|
|
// }),
|
|
// );
|
|
|
|
// const createSROnlyLabel = (text: any) => {
|
|
// const node = h('span.sr-only', `Section titled ${escape(text)}`);
|
|
// node.properties!['is:raw'] = true;
|
|
// return node;
|
|
// };
|
|
|
|
export default makeSource({
|
|
contentDirPath: 'src/content',
|
|
documentTypes: [Content],
|
|
mdx: {
|
|
remarkPlugins: [remarkGfm, [remarkCodeHike, { theme: 'css-variables', lineNumbers: true }]],
|
|
rehypePlugins: [
|
|
rehypeSlug,
|
|
// [
|
|
// rehypeAutolinkHeadings,
|
|
// {
|
|
// properties: {
|
|
// class:
|
|
// 'relative inline-flex w-6 h-6 place-items-center place-content-center outline-0 text-black dark:text-white ml-2',
|
|
// },
|
|
// behavior: 'after',
|
|
// group: async ({ tagName }: { tagName: string }) =>
|
|
// h('div', {
|
|
// class: `[&>*]:inline-block [&>h1]:m-0 [&>h2]:m-0 [&>h3]:m-0 [&>h4]:m-0 level-${tagName}`,
|
|
// tabIndex: -1,
|
|
// }),
|
|
// content: (heading: Node) => [
|
|
// h(
|
|
// `span.anchor-icon`,
|
|
// {
|
|
// ariaHidden: 'true',
|
|
// },
|
|
// LinkIcon,
|
|
// ),
|
|
// createSROnlyLabel(toString(heading)),
|
|
// ],
|
|
// },
|
|
// ],
|
|
],
|
|
},
|
|
});
|