···11+import lumeCMS from "lume/cms/mod.ts";
22+33+const cms = lumeCMS();
44+55+cms.document(
66+ "home: The profile page",
77+ "src:index.yml",
88+ [
99+ {
1010+ type: "hidden",
1111+ name: "layout",
1212+ value: "layouts/home.vto",
1313+ },
1414+ {
1515+ type: "object",
1616+ name: "header",
1717+ description: "The header of the page",
1818+ fields: [
1919+ "title: text",
2020+ "description: markdown",
2121+ "avatar: file",
2222+ ],
2323+ },
2424+ {
2525+ type: "object",
2626+ name: "metas",
2727+ description: "Data for the meta tags",
2828+ fields: [
2929+ "title: text",
3030+ "description: text",
3131+ "image: text",
3232+ "twitter: text",
3333+ "generator: checkbox",
3434+ ],
3535+ },
3636+ {
3737+ name: "links",
3838+ type: "object-list",
3939+ description: "The list of links.",
4040+ fields: [
4141+ {
4242+ type: "text",
4343+ name: "type",
4444+ description:
4545+ "The type of link. It uses the icons and colors from https://simpleicons.org/. For example, 'github', 'instagram', etc.",
4646+ options: [
4747+ "github",
4848+ "instagram",
4949+ "linkedin",
5050+ "x",
5151+ "youtube",
5252+ "facebook",
5353+ "tiktok",
5454+ "patreon",
5555+ "paypal",
5656+ "mastodon",
5757+ "discord",
5858+ "spotify",
5959+ "opencollective",
6060+ "twitch",
6161+ ],
6262+ },
6363+ "text: text",
6464+ "href: text",
6565+ "only_icon: checkbox",
6666+ ],
6767+ },
6868+ {
6969+ name: "extra_head",
7070+ type: "code",
7171+ description: "Extra content to include in the <head> tag",
7272+ },
7373+ {
7474+ name: "footer",
7575+ type: "markdown",
7676+ description: "The footer of the page",
7777+ },
7878+ ],
7979+);
8080+8181+cms.upload("uploads: Uploaded files", "src:*{.jpg,.svg}");
8282+8383+export default cms;
+10
_config.ts
···11+import lume from "lume/mod.ts";
22+import plugins from "./plugins.ts";
33+44+const site = lume({
55+ src: "./src",
66+});
77+88+site.use(plugins());
99+1010+export default site;