chore: switch from vuepress to vitepress
deploy / deploy (push) Successful in 5m0s

This commit is contained in:
2026-07-11 11:41:14 +02:00
parent b2b706e357
commit 528f5a54f4
99 changed files with 525 additions and 2910 deletions
+10
View File
@@ -0,0 +1,10 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
[*.{js,ts,json,mts,css}]
indent_style = space
indent_size = 2
+1
View File
@@ -1,3 +1,4 @@
#!/usr/bin/env bash
eval "$(devenv direnvrc)"
dotenv
use devenv
+26
View File
@@ -0,0 +1,26 @@
name: deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v16
with:
name: phundrak
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: devenv
- name: Install devenv
run: nix profile add nixpkgs#devenv
- name: Deploy to Cloudflare Pages
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: devenv tasks run website:deploy
-29
View File
@@ -1,29 +0,0 @@
name: deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v4
with:
node-version: 20.x
- run: npm ci
- uses: purcell/setup-emacs@master
with:
version: 29.1
- name: "Export org to md"
run: emacs -Q --script export.el
- run: npm run build
- name: "Deploy to Cloudflare Pages"
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.ACCOUNT_ID }}
projectName: conlang-phundrak-com
directory: docs/.vuepress/dist/
githubToken: ${{ secrets.TOKEN }}
+9 -3
View File
@@ -1,9 +1,15 @@
node_modules
/docs/**/*.md
# Vitepress
/.vitepress/cache/
/.vitepress/dist/
/docs/.vitepress/
/docs/img
/docs/eittlandic/img
/docs/proto-nyqy/img
.temp
.cache
/docs/**/*.md
/docs/.vuepress/dist/
/.yarn/
# Devenv
.devenv*
+13
View File
@@ -0,0 +1,13 @@
{
"$schema": "https://json.schemastore.org/prettierrc",
"semi": true,
"tabWidth": 2,
"useTabs": false,
"singleQuote": true,
"quoteProps": "as-needed",
"printWidth": 100,
"trailingComma": "es5",
"bracketSpacing": true,
"bracketSameLine": true,
"arrowParens": "always"
}
+33
View File
@@ -0,0 +1,33 @@
// -*- mode: typescript; -*-
import { defineConfig, HeadConfig } from 'vitepress';
import appHead from './head';
import { sidebar } from './sidebar';
import { nav } from './nav';
export default defineConfig({
title: "Phundrak's Conlangs",
cleanUrls: true,
description: 'Documentation of the constructed languages made by Phundrak',
head: appHead as HeadConfig[],
srcDir: './docs',
themeConfig: {
sidebar,
nav,
outline: {
level: 'deep'
},
search: {
provider: 'local'
},
},
markdown: {
image: {
lazyLoading: true
},
linkify: true,
typographer: true,
headers: {
level: [1, 2, 3, 4, 5]
}
},
})
+79
View File
@@ -0,0 +1,79 @@
interface Head {
type?: 'image/png';
async?: boolean,
src?: string,
'data-website-id'?: string
}
interface Favicon extends Head {
rel: 'apple-touch-icon' | 'icon' | 'manifest';
href: string;
sizes?: string;
}
interface Meta extends Head {
property?: string,
name?: string,
content: string
}
const favicons: Favicon[] = [
{ rel: 'apple-touch-icon', sizes: '57x57', href: '/img/meta/apple-icon-57x57.png' },
{ rel: 'apple-touch-icon', sizes: '60x60', href: '/img/meta/apple-icon-60x60.png' },
{ rel: 'apple-touch-icon', sizes: '72x72', href: '/img/meta/apple-icon-72x72.png' },
{ rel: 'apple-touch-icon', sizes: '76x76', href: '/img/meta/apple-icon-76x76.png' },
{ rel: 'apple-touch-icon', sizes: '114x114', href: '/img/meta/apple-icon-114x114.png' },
{ rel: 'apple-touch-icon', sizes: '120x120', href: '/img/meta/apple-icon-120x120.png' },
{ rel: 'apple-touch-icon', sizes: '144x144', href: '/img/meta/apple-icon-144x144.png' },
{ rel: 'apple-touch-icon', sizes: '152x152', href: '/img/meta/apple-icon-152x152.png' },
{ rel: 'apple-touch-icon', sizes: '180x180', href: '/img/meta/apple-icon-180x180.png' },
{ rel: 'icon', type: 'image/png', sizes: '192x192', href: '/img/meta/android-icon-192x192.png' },
{ rel: 'icon', type: 'image/png', sizes: '32x32', href: '/img/meta/favicon-32x32.png' },
{ rel: 'icon', type: 'image/png', sizes: '96x96', href: '/img/meta/favicon-96x96.png' },
{ rel: 'icon', type: 'image/png', sizes: '16x16', href: '/img/meta/favicon-16x16.png' },
{ rel: 'manifest', href: '/img/meta/manifest.json' },
];
const meta: Meta[] = [
{
name: 'author',
content: 'Lucien Cartier-Tilet',
},
{
property: 'og:image',
content: 'https://cdn.phundrak.com/img/rich_preview.png',
},
{
property: 'og:title',
content: 'Pundraks Conlangs',
},
{
property: 'og:description',
content: 'Documentation of Pundraks constructed languages',
},
{
name: 'fediverse:creator',
content: '@phundrak@mastodon.phundrak.com',
},
{
name: 'twitter:card',
content: 'summary',
},
{
name: 'twitter:site',
content: '@phundrak',
},
{
name: 'twitter:creator',
content: '@phundrak',
},
{ name: 'msapplication-TileColor', content: '#3b4252' },
{ name: 'msapplication-TileImage', content: '/ms-icon-144x144.png' },
{ name: 'theme-color', content: '#3b4252' },
]
const appHead: (string | Head)[][] = favicons.map((head) => ['link', head])
meta.map((item) => appHead.push(['meta', item]))
export default appHead;
+8
View File
@@ -0,0 +1,8 @@
import { DefaultTheme } from "vitepress";
export const nav: DefaultTheme.NavItem[] = [
{ text: 'About', link: '/about' },
{ text: 'Eittlandic', link: '/eittlandic/', activeMatch: '/eittlandic/*' },
{ text: 'Proto-Ñyqy', link: '/proto-nyqy/', activeMatch: '/proto-nyqy/*' },
{ text: 'Zikãti', link: '/zikãti' },
]
+22
View File
@@ -0,0 +1,22 @@
import { DefaultTheme } from "vitepress";
export const sidebar: DefaultTheme.Sidebar = {
'/eittlandic/': [
{ text: 'Index', link: '/eittlandic/' },
{ text: 'The Country', link: '/eittlandic/country' },
{ text: 'Typological Outline', link: '/eittlandic/typology' },
{ text: 'Phonetics & Translitteration', link: '/eittlandic/phonology' },
{ text: 'Grammar', link: '/eittlandic/grammar' },
{ text: 'Dictionary', link: '/eittlandic/dictionary' },
{ text: 'Names & Places', link: '/eittlandic/names-and-places' },
],
'/proto-nyqy/': [
{ text: 'Index', link: '/proto-nyqy/' },
{ text: 'Introduction', link: '/proto-nyqy/introduction' },
{ text: 'Culture of the Proto-Ñyqy people', link: '/proto-nyqy/culture-and-people' },
{ text: 'Typological Outline', link: '/proto-nyqy/typology' },
{ text: 'Phonetics & Phonology', link: '/proto-nyqy/phonology' },
{ text: 'Syntax', link: '/proto-nyqy/syntax' },
{ text: 'Dictionary', link: '/proto-nyqy/dictionary' },
]
}
+10
View File
@@ -0,0 +1,10 @@
import { Theme } from "vitepress";
import DefaultTheme from "vitepress/theme";
import ImgFigure from "../components/ImgFigure.vue";
export default {
extends: DefaultTheme,
enhanceApp({ app }) {
app.component('ImgFigure', ImgFigure);
}
} satisfies Theme;
+24 -2
View File
@@ -4,15 +4,37 @@
npm.enable = false;
pnpm.enable = true;
};
dotenv.enable = true;
processes.dev.exec = "pnpm dev";
cachix = {
push = "phundrak";
pull = [
"phundrak"
"devenv"
];
};
tasks = {
"website:install-deps".exec = "pnpm ci";
"website:export-md" = {
exec = "${pkgs.emacs}/bin/emacs -Q --script export.el";
execIfModified = [ "docs/**/*.org" ];
};
"website:build" = {
exec = "pnpm run build";
after = [ "website:export-md@succeeded" ];
exec = "pnpm build";
after = [
"website:export-md@succeeded"
"website:install-deps@succeeded"
];
};
"website:deploy" = {
exec = ''
if [[ -z "''${CLOUDFLARE_API_TOKEN:-}" ]]; then
echo "Error: CLOUDFLARE_API_TOKEN is not set. Run this in CI only."
exit 1
fi
${pkgs.wrangler}/bin/wrangler pages deploy
'';
after = [ "website:build@succeeded" ];
};
};
}
-6
View File
@@ -1,6 +0,0 @@
;;; Directory Local Variables -*- no-byte-compile: t -*-
;;; For more information see (info "(emacs) Directory Variables")
((typescript-mode . ((prettier-js-args . ("--single-quote" "--jsx-single-quote"))
(typescript-indent-level . 2)))
(scss-mode . ((prettier-js-args . ("--single-quote" "--jsx-single-quote")))))
-11
View File
@@ -1,11 +0,0 @@
import { defineClientConfig } from '@vuepress/client';
import ImgFigure from './components/ImgFigure.vue';
export default defineClientConfig({
enhance({ app }) {
app.component('ImgFigure', ImgFigure);
},
setup() {},
layouts: {},
rootComponents: [],
});
-76
View File
@@ -1,76 +0,0 @@
import { defaultTheme } from '@vuepress/theme-default';
import { defineUserConfig } from 'vuepress';
import { viteBundler } from '@vuepress/bundler-vite';
import { umamiAnalyticsPlugin } from '@vuepress/plugin-umami-analytics';
import { slimsearchPlugin } from '@vuepress/plugin-slimsearch';
import head from './head';
const isProd = process.env.NODE_ENV === 'production';
export default defineUserConfig({
lang: 'en-GB',
title: "Phundrak's Conlangs",
head: head,
description: 'Documentation of the constructed languages made by Phundrak',
markdown: {
html: false,
linkify: true,
typographer: true,
headers: {
level: [1, 2, 3, 4, 5],
},
},
plugins: [
slimsearchPlugin({
indexContent: true,
}),
],
bundler: isProd
? viteBundler({})
: viteBundler({
viteOptions: {
server: {
allowedHosts: true,
},
},
}),
theme: defaultTheme({
sidebarDepth: 5,
repo: 'https://labs.phundrak.com/phundrak/conlang.phundrak.com',
sidebar: [
{
text: 'Index',
link: '/',
},
'/about',
{
text: 'Eittlandic',
link: '/eittlandic/',
collapsible: true,
children: [
'/eittlandic/country',
'/eittlandic/typology',
'/eittlandic/phonology',
'/eittlandic/grammar',
'/eittlandic/names-and-places',
'/eittlandic/dictionary',
],
},
{
text: 'Proto-Ñyqy',
link: '/proto-nyqy/',
collapsible: true,
children: [
'/proto-nyqy/introduction',
'/proto-nyqy/culture-and-people',
'/proto-nyqy/typology',
'/proto-nyqy/phonology',
'/proto-nyqy/syntax',
'/proto-nyqy/dictionary',
],
},
'/zikãti',
],
}),
});
-148
View File
@@ -1,148 +0,0 @@
interface SimplifiedHeader {
tag: string;
content: [any];
}
const simplifiedHead = [
{
tag: 'script',
content: [
{
async: true,
src: 'https://umami.phundrak.com/script.js',
'data-website-id': 'dda1ea7b-086e-49b0-9cab-517314212ac5',
'data-do-not-track': 'true',
},
],
},
{
tag: 'meta',
content: [
{
name: 'author',
content: 'Lucien Cartier-Tilet',
},
{
property: 'og:image',
content: 'https://cdn.phundrak.com/img/rich_preview.png',
},
{
property: 'og:title',
content: 'Pundraks Conlangs',
},
{
property: 'og:description',
content: 'Documentation of Pundraks constructed languages',
},
{
name: 'fediverse:creator',
content: '@phundrak@mastodon.phundrak.com',
},
{
name: 'twitter:card',
content: 'summary',
},
{
name: 'twitter:site',
content: '@phundrak',
},
{
name: 'twitter:creator',
content: '@phundrak',
},
{ name: 'msapplication-TileColor', content: '#3b4252' },
{ name: 'msapplication-TileImage', content: '/ms-icon-144x144.png' },
{ name: 'theme-color', content: '#3b4252' },
],
},
{
tag: 'link',
content: [
{
rel: 'apple-touch-icon',
sizes: '57x57',
href: '/apple-icon-57x57.png',
},
{
rel: 'apple-touch-icon',
sizes: '60x60',
href: '/apple-icon-60x60.png',
},
{
rel: 'apple-touch-icon',
sizes: '72x72',
href: '/apple-icon-72x72.png',
},
{
rel: 'apple-touch-icon',
sizes: '76x76',
href: '/apple-icon-76x76.png',
},
{
rel: 'apple-touch-icon',
sizes: '114x114',
href: '/apple-icon-114x114.png',
},
{
rel: 'apple-touch-icon',
sizes: '120x120',
href: '/apple-icon-120x120.png',
},
{
rel: 'apple-touch-icon',
sizes: '144x144',
href: '/apple-icon-144x144.png',
},
{
rel: 'apple-touch-icon',
sizes: '152x152',
href: '/apple-icon-152x152.png',
},
{
rel: 'apple-touch-icon',
sizes: '180x180',
href: '/apple-icon-180x180.png',
},
{
rel: 'icon',
type: 'image/png',
sizes: '192x192',
href: '/android-icon-192x192.png',
},
{
rel: 'icon',
type: 'image/png',
sizes: '32x32',
href: '/favicon-32x32.png',
},
{
rel: 'icon',
type: 'image/png',
sizes: '96x96',
href: '/favicon-96x96.png',
},
{
rel: 'icon',
type: 'image/png',
sizes: '16x16',
href: '/favicon-16x16.png',
},
{ rel: 'manifest', href: '/manifest.json' },
],
},
];
let head = [];
simplifiedHead.forEach((tag: SimplifiedHeader) => {
let tagName = tag.tag;
tag.content.forEach((element) => {
head.push([tagName, element]);
});
});
head.push([
'a',
{ rel: 'me', href: 'https://mastodon.phundrak.com/@phundrak' },
'Mastodon',
]);
export default head;
-198
View File
@@ -1,198 +0,0 @@
/*
* Nord Theme:
* - Copyright (c) 2016-present Arctic Ice Studio <development@arcticicestudio.com>
* - Copyright (c) 2016-present Sven Greb <development@svengreb.de>
*/
/* :root { */
/* --nord0: #2e3440; */
/* --nord1: #3b4252; */
/* --nord2: #434c5e; */
/* --nord3: #4c566a; */
/* --nord4: #d8dee9; */
/* --nord5: #e5e9f0; */
/* --nord6: #eceff4; */
/* --nord7: #8fbcbb; */
/* --nord8: #88c0d0; */
/* --nord9: #81a1c1; */
/* --nord10: #5e81ac; */
/* --nord11: #bf616a; */
/* --nord12: #d08770; */
/* --nord13: #ebcb8b; */
/* --nord14: #a3be8c; */
/* --nord15: #b48ead; */
/* scroll-behavior: smooth; */
/* // brand colors */
/* --c-brand: var(--nord9); */
/* --c-brand-light: var(--nord14); */
/* // background colors */
/* --c-bg: var(--nord6); */
/* --c-bg-light: var(--nord6); */
/* --c-bg-lighter: var(--nord5); */
/* --c-bg-dark: var(--nord5); */
/* --c-bg-darker: var(--nord4); */
/* --c-bg-navbar: var(--c-bg); */
/* --c-bg-sidebar: var(--c-bg); */
/* --c-bg-arrow: var(--nord4); */
/* // text colors */
/* --c-text: var(--nord1); */
/* --c-text-accent: var(--c-brand); */
/* --c-text-light: var(--nord2); */
/* --c-text-lighter: var(--nord3); */
/* --c-text-lightest: var(--nord4); */
/* --c-text-quote: var(--nord2); */
/* // border colors */
/* --c-border: var(--nord4); */
/* --c-border-dark: var(--nord4); */
/* // custom container colors */
/* --c-tip: var(--nord14); */
/* --c-tip-bg: rgba(163, 190, 140, 0.2); */
/* --c-tip-title: var(--c-text); */
/* --c-tip-text: var(--c-text); */
/* --c-tip-text-accent: var(--c-text-accent); */
/* --c-warning: var(--nord13); */
/* --c-warning-bg: rgba(235, 203, 139, 0.3); */
/* --c-warning-bg-light: rgba(235, 203, 139, 0.2); */
/* --c-warning-bg-lighter: rgba(235, 203, 139, 0.1); */
/* --c-warning-border-dark: var(--nord3); */
/* --c-warning-details-bg: var(--c-bg); */
/* --c-warning-title: var(--nord12); */
/* --c-warning-text: var(--nord12); */
/* --c-warning-text-accent: var(--nord12); */
/* --c-warning-text-light: var(--nord12); */
/* --c-warning-text-quote: var(--nord12); */
/* --c-danger: var(--nord11); */
/* --c-danger-bg: rgba(191, 97, 106, 0.2); */
/* --c-danger-bg-light: rgba(191, 97, 106, 0.2); */
/* --c-danger-bg-lighter: rgba(191, 97, 106, 0.1); */
/* --c-danger-border-dark: var(--nord11); */
/* --c-danger-details-bg: var(--nord2); */
/* --c-danger-title: var(--nord11); */
/* --c-danger-text: var(--nord11); */
/* --c-danger-text-accent: var(--nord11); */
/* --c-danger-text-light: var(--nord11); */
/* --c-danger-text-quote: var(--nord11); */
/* --c-details-bg: var(--c-bg-lighter); */
/* // badge component colors */
/* --c-badge-tip: var(--c-tip); */
/* --c-badge-warning: var(--c-warning); */
/* --c-badge-warning-text: var(--c-bg); */
/* --c-badge-danger: var(--c-danger); */
/* --c-badge-danger-text: var(--c-bg); */
/* // transition vars */
/* --t-color: 0.3s ease; */
/* --t-transform: 0.3s ease; */
/* // code blocks vars */
/* --code-bg-color: var(--nord0); */
/* --code-hl-bg-color: var(--nord1); */
/* --code-ln-color: #9e9e9e; */
/* --code-ln-wrapper-width: 3.5rem; */
/* // font vars */
/* --font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, */
/* Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; */
/* --font-family-code: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; */
/* // layout vars */
/* --navbar-height: 3.6rem; */
/* --navbar-padding-v: 0.7rem; */
/* --navbar-padding-h: 1.5rem; */
/* --sidebar-width: 20rem; */
/* --sidebar-width-mobile: calc(var(--sidebar-width) * 0.82); */
/* --content-width: 740px; */
/* --homepage-width: 960px; */
/* } */
/* html.dark { */
/* // brand colors */
/* --c-brand: var(--nord14); */
/* --c-brand-light: var(--nord14); */
/* // background colors */
/* --c-bg: var(--nord1); */
/* --c-bg-light: var(--nord2); */
/* --c-bg-lighter: var(--nord2); */
/* --c-bg-dark: var(--nord3); */
/* --c-bg-darker: var(--nord3); */
/* // text colors */
/* --c-text: var(--nord4); */
/* --c-text-light: var(--nord5); */
/* --c-text-lighter: var(--nord5); */
/* --c-text-lightest: var(--nord6); */
/* --c-text-quote: var(--c-text); */
/* // border colors */
/* --c-border: var(--nord3); */
/* --c-border-dark: var(--nord3); */
/* // custom container colors */
/* --c-tip: var(--nord14); */
/* --c-warning: var(--nord13); */
/* --c-warning-bg: rgba(235, 203, 139, 0.2); */
/* --c-warning-bg-light: rgba(235, 203, 139, 0.2); */
/* --c-warning-bg-lighter: rgba(235, 203, 139, 0.1); */
/* --c-warning-border-dark: var(--nord3); */
/* --c-warning-details-bg: var(--c-bg); */
/* --c-warning-title: var(--nord13); */
/* --c-warning-text: var(--nord13); */
/* --c-warning-text-accent: var(--nord13); */
/* --c-warning-text-light: var(--nord13); */
/* --c-warning-text-quote: var(--nord13); */
/* --c-danger: var(--nord11); */
/* --c-danger-bg: rgba(191, 97, 106, 0.2); */
/* --c-danger-bg-light: rgba(191, 97, 106, 0.2); */
/* --c-danger-bg-lighter: rgba(191, 97, 106, 0.1); */
/* --c-danger-border-dark: var(--nord11); */
/* --c-danger-details-bg: var(--nord2); */
/* --c-danger-title: hsl(354 43% 75.7%); */
/* --c-danger-text: hsl(354 43% 80.7%); */
/* --c-danger-text-accent: var(--nord11); */
/* --c-danger-text-light: var(--nord11); */
/* --c-danger-text-quote: var(--nord11); */
/* --c-details-bg: var(--c-bg-light); */
/* // badge component colors */
/* --c-badge-warning-text: var(--nord0); */
/* --c-badge-danger-text: var(--nord0); */
/* // code blocks vars */
/* --code-hl-bg-color: var(--nord2); */
/* } */
/* .page table { */
/* border-color: var(--nord3); */
/* border-top: none; */
/* display: inline-block; */
/* tbody { */
/* border-color: var(--c-bg-dark); */
/* border-width: 3px; */
/* } */
/* tr { */
/* background-color: var(--c-bg); */
/* transition: background-color var(--t-color); */
/* } */
/* } */
/* tr:nth-child(even) td.org-left { */
/* background-color: var(--nord5) !important; */
/* } */
/* .dark tr:nth-child(even) td.org-left { */
/* background-color: var(--nord1) !important; */
/* } */
+2 -5
View File
@@ -10,11 +10,8 @@ and open-source. You can find its source code on my Gitea instance
[[https://labs.phundrak.com/phundrak/conlang.phundrak.com][here]].
** Where is the website hosted?
This website is hosted on my private physical server, located in the
town of Bron in France, near Lyon. All of my websites are also hosted
on this server, except for [[https://labs.phundrak.com][=labs.phundrak.com=]] and =mail.phundrak.com=
which are hosted on servers rented to Scaleway and OVH France
respectively. These servers are also located in France.
This website is hosted on Cloudflare Pages on servers all over the
world.
** Cookies
*** What are cookies?
-1
View File
@@ -1 +0,0 @@
../.vuepress/public/img
-1
View File
@@ -1 +0,0 @@
.vuepress/public/img
-1
View File
@@ -1 +0,0 @@
../.vuepress/public/img

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 214 KiB

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Before

Width:  |  Height:  |  Size: 772 KiB

After

Width:  |  Height:  |  Size: 772 KiB

Before

Width:  |  Height:  |  Size: 739 KiB

After

Width:  |  Height:  |  Size: 739 KiB

Before

Width:  |  Height:  |  Size: 796 KiB

After

Width:  |  Height:  |  Size: 796 KiB

Before

Width:  |  Height:  |  Size: 748 KiB

After

Width:  |  Height:  |  Size: 748 KiB

Before

Width:  |  Height:  |  Size: 274 KiB

After

Width:  |  Height:  |  Size: 274 KiB

Before

Width:  |  Height:  |  Size: 864 KiB

After

Width:  |  Height:  |  Size: 864 KiB

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Before

Width:  |  Height:  |  Size: 755 KiB

After

Width:  |  Height:  |  Size: 755 KiB

Before

Width:  |  Height:  |  Size: 958 KiB

After

Width:  |  Height:  |  Size: 958 KiB

Before

Width:  |  Height:  |  Size: 389 KiB

After

Width:  |  Height:  |  Size: 389 KiB

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 240 KiB

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

+6 -6
View File
@@ -85,10 +85,10 @@ graph{graph[dpi=300,bgcolor="transparent"];node[shape=plaintext];"vowels-0ju8102
| V[+nasal] | ã ẽ õ |
Prefixes follow the (C_{2})V[-nasal] phonetic structure, with C_{2} being
optional. Suffixes follow the CV[+nasal](C_{2}) structure with C_{2} being
optional. Suffixes follow the CV[+nasal](C_{2}) structure with C_{2} being
optional.
Roots are a bit more complex, with a C(V[+nasal](C_{2})C)V[-nasal](C_{2})
Roots are a bit more complex, with a C(V[+nasal](C_{2})C)V[-nasal](C_{2})
structure.
The only consonants that can follow the vowels /õ/ and /ẽ/ are non-nasal
@@ -148,7 +148,7 @@ adverbs, e.g. *qigi* /before/ from *gi* /from/ (see [[file:./zikãti#gi-from][gi
- -rã :: TR
- -sõr :: NOMIN
- -zãr :: PASS
- -qã :: SUBJ, attaches to verbs only, see [[file:zikãti#subclauses][subclauses]]
- -qã :: SUBJ, attaches to verbs only, see [[file:./zikãti.md#subclauses][subclauses]]
*** Word order
Zikãti is a postpositional language following the SOV word order in
@@ -347,12 +347,12 @@ He thinks about it, maybe remembers it
- hiti (n.) :: fire, light
*** hitimbi - hearth, coocked food
See [[file:zikãti#hiti-fire-light][hiti]] and [[file:zikãti#mbi-meat-food][mbi]].
See [[file:./zikãti.md#hiti-fire-light][hiti]] and [[file:./zikãti.md#mbi-meat-food][mbi]].
- hitimbi (n.) :: hearth, coocked food
*** hitimiz - tea
See [[file:zikãti#hiti-fire-light][hiti]] and [[file:zikãti#miz-water-stream][miz]].
See [[file:./zikãti.md#hiti-fire-light][hiti]] and [[file:./zikãti.md#miz-water-stream][miz]].
- hitimiz (n.) :: tea
@@ -374,7 +374,7 @@ See [[file:zikãti#hiti-fire-light][hiti]] and [[file:zikãti#miz-water-stream][
- lud (n., con.) :: breath, life
*** ludmiz - blood
See [[file:zikãti#lud-breath-life][lud]] and [[file:zikãti#miz-water-stream][miz]].
See [[file:./zikãti.md#lud-breath-life][lud]] and [[file:./zikãti.md#miz-water-stream][miz]].
- ludmiz (n.) :: blood
+3 -12
View File
@@ -8,19 +8,10 @@
"license": "AGPL-3.0",
"private": true,
"devDependencies": {
"@vuepress/bundler-vite": "2.0.0-rc.30",
"@vuepress/plugin-slimsearch": "2.0.0-rc.131",
"@vuepress/plugin-umami-analytics": "2.0.0-rc.131",
"@vuepress/theme-default": "2.0.0-rc.132",
"sass-embedded": "^1.100.0",
"vuepress": "2.0.0-rc.30"
},
"dependencies": {
"less": "^4.6.7",
"nord": "^0.2.1"
"vitepress": "^2.0.0-alpha.18"
},
"scripts": {
"dev": "vuepress dev docs",
"build": "vuepress build docs"
"dev": "vitepress dev",
"build": "vitepress build"
}
}
+272 -2411
View File
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
// -*- mode: json-ts; -*-
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "conlang-phundrak-com",
"pages_build_output_dir": ".vitepress/dist/",
"compatibility_date": "2026-07-11"
}