Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f18c253
WIP refacto code
Nycolaide Jul 16, 2026
b3f8c45
WIP optimisation UI + bugfix to display and refacto code
Nycolaide Jul 17, 2026
55a5b3a
update documentation
Nycolaide Jul 17, 2026
e393184
udpate lapikit version insider
Nycolaide Jul 17, 2026
4adb3af
update lapikit insider
Nycolaide Jul 17, 2026
6d8c559
WIP layout documentation
Nycolaide Jul 17, 2026
632d94f
WIP refacto code for documentation
Nycolaide Jul 18, 2026
c033c91
refacto all structural seo code + WIP ui documentation
Nycolaide Jul 18, 2026
56c915c
refacto searchbar + WIP UI
Nycolaide Jul 19, 2026
5c58dfd
New UI + bugfix + add new interaction + evolution to call api npm and…
Nycolaide Jul 20, 2026
6cc748b
Bugfix breadcrumbs and table of content + update templates and new ui…
Nycolaide Jul 21, 2026
b137c07
update lapikit insiders
Nycolaide Jul 21, 2026
aca0d0a
fix position drawer and fix scroll on install modal
Nycolaide Jul 22, 2026
ea29e48
test fix UI drawer-release
Nycolaide Jul 22, 2026
eb42215
test UI for drawer release bug on tab
Nycolaide Jul 22, 2026
67b1a00
test UI for drawer release bug on tab
Nycolaide Jul 22, 2026
9b3a096
test UI for drawer release bug on tab
Nycolaide Jul 22, 2026
4758a88
fix position drawer
Nycolaide Jul 22, 2026
89059d6
update cover components for all components + update documentation cus…
Nycolaide Jul 23, 2026
06a8233
update lapikit repl insiders
Nycolaide Jul 23, 2026
651d8ee
update lapikit/repl
Nycolaide Jul 24, 2026
8444211
fix css md to pre > code
Nycolaide Jul 24, 2026
4365a37
WIP search idea to new homepage UI
Nycolaide Jul 24, 2026
47aad1a
WIP new component for homepage
Nycolaide Jul 25, 2026
31863e8
create new footer for webapp
Nycolaide Jul 26, 2026
d3bad82
WIP new section on homepage
Nycolaide Jul 26, 2026
4014295
add accordion for deprecated pages
Nycolaide Jul 26, 2026
99c9eec
WIP table for hompegae
Nycolaide Jul 27, 2026
dd9f743
WIP table homepage
Nycolaide Jul 28, 2026
810586f
WIP table content
Nycolaide Jul 28, 2026
6f41191
finish ui for table homepage
Nycolaide Jul 28, 2026
361627e
WIP new UI navbar
Nycolaide Jul 29, 2026
6da18fa
test new idea for homepage
Nycolaide Jul 31, 2026
f2c23d1
WIP counter + hero homepage
Nycolaide Jul 31, 2026
6aadac7
WIP hero and beto styles
Nycolaide Aug 3, 2026
99873e6
add chart.js
Nycolaide Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,4 @@ docker-compose.yml
Dockerfile

# Markdown
src/pages.docs.json
src/manifest.json
56 changes: 50 additions & 6 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions mdsvex.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ export const mdsvexOptions = {
highlight: { highlighter },
layout: {
_: dirname(fileURLToPath(import.meta.url)) + '/src/templates/page.svelte',
docs: dirname(fileURLToPath(import.meta.url)) + '/src/templates/doc.svelte',
section: dirname(fileURLToPath(import.meta.url)) + '/src/templates/section.svelte',
legacy: dirname(fileURLToPath(import.meta.url)) + '/src/templates/legacy.svelte'
doc_page: dirname(fileURLToPath(import.meta.url)) + '/src/templates/doc-page.svelte',
doc_section: dirname(fileURLToPath(import.meta.url)) + '/src/templates/doc-section.svelte'
}
};
16 changes: 9 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "bun run sync-docs && vite dev",
"build": "bun run sync-docs && vite build",
"build-srv": "bun run sync-docs && bun run sync-changelog && bun run sync-robots && vite build",
"dev": "bun run sync-content && vite dev",
"build": "bun run sync-content && vite build",
"build-srv": "bun run sync-content && bun run sync-changelog && bun run sync-robots && vite build",
"preview": "vite preview",
"prepare": "svelte-kit sync || echo ''",
"sync-docs": "node --experimental-strip-types scripts/sync-docs/index.ts",
"sync-content": "node --experimental-strip-types scripts/mdsvx/index.ts",
"sync-changelog": "node --experimental-strip-types scripts/sync-changelog/index.ts",
"sync-robots": "node --experimental-strip-types scripts/sync-robots/index.ts",
"check": "bun run sync-docs && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check": "bun run sync-content && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --check . && eslint .",
"format": "prettier --write .",
Expand All @@ -22,7 +22,7 @@
"devDependencies": {
"@eslint/compat": "^2.1.0",
"@eslint/js": "^9.39.4",
"@lapikit/repl": "^0.0.0-insiders.fbbe434",
"@lapikit/repl": "^0.0.0-insiders.417ad1f",
"@playwright/test": "^1.61.1",
"@sveltejs/adapter-node": "^5.5.7",
"@sveltejs/enhanced-img": "^0.10.4",
Expand All @@ -37,11 +37,12 @@
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-svelte": "^3.20.0",
"globals": "^17.7.0",
"lapikit": "^0.0.0-insiders.bd3f1f3",
"lapikit": "^0.0.0-insiders.b663ce9",
"mdsvex": "^0.12.7",
"prettier": "^3.9.3",
"prettier-plugin-svelte": "^3.5.2",
"prettier-plugin-tailwindcss": "^0.7.4",
"sass": "^1.102.0",
"svelte": "^5.56.4",
"svelte-check": "^4.7.1",
"tailwindcss": "^4.3.2",
Expand All @@ -53,6 +54,7 @@
"dependencies": {
"@fontsource-variable/jetbrains-mono": "^5.2.8",
"@fontsource-variable/outfit": "^5.2.8",
"chart.js": "^4.5.1",
"lucide-svelte": "^1.0.1"
}
}
127 changes: 127 additions & 0 deletions scripts/mdsvx/frontmatter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
import type { FrontmatterData, FrontmatterValue } from './types.ts';

const FRONTMATTER_BLOCK = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;

export function readFrontmatter(content: string): FrontmatterData {
const match = content.match(FRONTMATTER_BLOCK);

if (!match || !match[1].trim()) {
return {};
}

const lines = match[1].replace(/\r\n/g, '\n').split('\n');

return parseObject(lines, { line: 0 }, 0);
}

function parseObject(
lines: string[],
cursor: { line: number },
indent: number
): FrontmatterData {
const result: FrontmatterData = {};

while (cursor.line < lines.length) {
skipBlank(lines, cursor);

if (cursor.line >= lines.length || indentOf(lines[cursor.line]) < indent) {
break;
}

const trimmed = lines[cursor.line].trim();
const separator = trimmed.indexOf(':');

if (separator === -1) {
throw new Error(`Invalid frontmatter line: "${trimmed}"`);
}

const key = trimmed.slice(0, separator).trim();
const remainder = trimmed.slice(separator + 1).trim();
cursor.line += 1;

if (remainder) {
result[key] = parseScalar(remainder);
continue;
}

result[key] = parseNested(lines, cursor, indent);
}

return result;
}

function parseArray(
lines: string[],
cursor: { line: number },
indent: number
): FrontmatterValue[] {
const result: FrontmatterValue[] = [];

while (cursor.line < lines.length) {
skipBlank(lines, cursor);

if (cursor.line >= lines.length || indentOf(lines[cursor.line]) < indent) {
break;
}

const trimmed = lines[cursor.line].trim();

if (!trimmed.startsWith('-')) {
throw new Error(`Invalid array entry: "${trimmed}"`);
}

const remainder = trimmed.slice(1).trim();
cursor.line += 1;

result.push(remainder ? parseScalar(remainder) : parseNested(lines, cursor, indent));
}

return result;
}

function parseNested(
lines: string[],
cursor: { line: number },
parentIndent: number
): FrontmatterValue {
skipBlank(lines, cursor);

if (cursor.line >= lines.length || indentOf(lines[cursor.line]) <= parentIndent) {
return null;
}

const nestedIndent = indentOf(lines[cursor.line]);

return lines[cursor.line].trim().startsWith('-')
? parseArray(lines, cursor, nestedIndent)
: parseObject(lines, cursor, nestedIndent);
}

function parseScalar(value: string): FrontmatterValue {
if (value === 'null') return null;
if (value === 'true') return true;
if (value === 'false') return false;
if (value === '[]') return [];
if (value === '{}') return {};
if (/^-?\d+(?:\.\d+)?$/.test(value)) return Number(value);

if (value.startsWith('"') && value.endsWith('"')) {
return JSON.parse(value) as string;
}

if (value.startsWith("'") && value.endsWith("'")) {
return value.slice(1, -1).replace(/\\'/g, "'");
}

return value;
}

function skipBlank(lines: string[], cursor: { line: number }) {
while (cursor.line < lines.length && !lines[cursor.line].trim()) {
cursor.line += 1;
}
}

function indentOf(line: string): number {
return line.length - line.trimStart().length;
}
Loading