@@ -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
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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*
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
},
|
||||
})
|
||||
@@ -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: 'P’undrak’s Conlangs',
|
||||
},
|
||||
{
|
||||
property: 'og:description',
|
||||
content: 'Documentation of P’undrak’s 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;
|
||||
@@ -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' },
|
||||
]
|
||||
@@ -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' },
|
||||
]
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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")))))
|
||||
@@ -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: [],
|
||||
});
|
||||
@@ -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',
|
||||
],
|
||||
}),
|
||||
});
|
||||
@@ -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: 'P’undrak’s Conlangs',
|
||||
},
|
||||
{
|
||||
property: 'og:description',
|
||||
content: 'Documentation of P’undrak’s 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;
|
||||
@@ -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; */
|
||||
/* } */
|
||||
@@ -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 +0,0 @@
|
||||
../.vuepress/public/img
|
||||
@@ -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 |
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||