move to indexedb and add about page
All checks were successful
Deploy Sokko G / deploy (push) Successful in 7s

This commit is contained in:
Shinuwa 2026-07-24 12:09:45 +02:00
parent a8809afdfd
commit 772b9951de
12 changed files with 855 additions and 249 deletions

View file

@ -31,6 +31,7 @@ export function validateSiteContent(site) {
"navigation.home",
"navigation.toolboxes",
"navigation.games",
"navigation.about",
"navigation.mobileGames",
"sidebar.badge",
"sidebar.note",
@ -56,8 +57,14 @@ export function validateSiteContent(site) {
"home.origin.visualAlt",
"home.origin.dialogueAriaLabel",
"home.origin.caption",
"home.aboutLink",
"home.legal.copyright",
"home.legal.disclaimer",
"about.eyebrow",
"about.title",
"about.description",
"about.toolsTitle",
"about.limitsTitle",
"toolboxes.eyebrow",
"toolboxes.title",
"toolboxes.newButton",
@ -139,6 +146,37 @@ export function validateSiteContent(site) {
assertStringArray(site, "toolboxes.storageHelp.items", 3);
const aboutLimits = valueAt(site, "about.limits");
assert.ok(Array.isArray(aboutLimits), "about.limits must be an array");
assert.ok(aboutLimits.length >= 3, "about.limits must contain at least 3 items");
aboutLimits.forEach((limit, index) => {
if (typeof limit === "string") {
assert.ok(limit.trim(), `about.limits[${index}] must not be empty`);
return;
}
assert.equal(typeof limit, "object", `about.limits[${index}] must be a string or object`);
assertNonEmptyString({ limit }, "limit.icon");
assertNonEmptyString({ limit }, "limit.title");
assertNonEmptyString({ limit }, "limit.text");
});
const aboutSections = valueAt(site, "about.sections");
assert.ok(Array.isArray(aboutSections), "about.sections must be an array");
assert.ok(aboutSections.length >= 2, "about.sections must contain at least 2 items");
aboutSections.forEach((section) => {
assertNonEmptyString({ section }, "section.title");
assertNonEmptyString({ section }, "section.text");
});
const aboutTools = valueAt(site, "about.tools");
assert.ok(Array.isArray(aboutTools), "about.tools must be an array");
assert.ok(aboutTools.length >= 1, "about.tools must contain at least 1 item");
aboutTools.forEach((tool) => {
assertNonEmptyString({ tool }, "tool.icon");
assertNonEmptyString({ tool }, "tool.name");
assertNonEmptyString({ tool }, "tool.description");
});
const lines = valueAt(site, "home.origin.lines");
assert.ok(Array.isArray(lines), "home.origin.lines must be an array");
assert.ok(lines.length >= 2, "home.origin.lines must contain at least 2 items");