@jant/core 0.3.39 → 0.3.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/{app-BfoG98VD.js → app-CAtsuLLh.js} +306 -72
- package/dist/client/_assets/client-auth.js +77 -68
- package/dist/client/_assets/client.css +1 -1
- package/dist/index.js +1 -1
- package/dist/node.js +2 -2
- package/package.json +1 -1
- package/src/app.tsx +5 -0
- package/src/client/components/__tests__/jant-collection-sidebar.test.ts +56 -0
- package/src/client/components/jant-collection-form.ts +2 -0
- package/src/client/components/jant-collection-sidebar.ts +19 -6
- package/src/i18n/locales/en.po +14 -0
- package/src/i18n/locales/en.ts +1 -1
- package/src/i18n/locales/zh-Hans.po +14 -0
- package/src/i18n/locales/zh-Hans.ts +1 -1
- package/src/i18n/locales/zh-Hant.po +14 -0
- package/src/i18n/locales/zh-Hant.ts +1 -1
- package/src/lib/__tests__/collection-groups.test.ts +63 -0
- package/src/lib/__tests__/constants.test.ts +23 -1
- package/src/lib/__tests__/schemas.test.ts +18 -0
- package/src/lib/__tests__/slug-format.test.ts +8 -0
- package/src/lib/__tests__/timeline.test.ts +84 -2
- package/src/lib/collection-groups.ts +69 -0
- package/src/lib/constants.ts +20 -0
- package/src/lib/schemas.ts +8 -1
- package/src/lib/slug-format.ts +8 -0
- package/src/lib/timeline.ts +30 -23
- package/src/routes/pages/collection.tsx +89 -37
- package/src/runtime/__tests__/readiness.test.ts +89 -0
- package/src/runtime/readiness.ts +129 -0
- package/src/services/__tests__/collection.test.ts +45 -0
- package/src/services/__tests__/post-timeline.test.ts +58 -0
- package/src/services/__tests__/post.test.ts +35 -1
- package/src/services/collection.ts +55 -0
- package/src/services/post.ts +121 -12
- package/src/styles/ui.css +17 -0
- package/src/types/props.ts +2 -1
- package/src/ui/pages/CollectionPage.tsx +84 -17
- package/src/ui/shared/CollectionDirectory.tsx +18 -4
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as toSearchResultView, B as MAX_PINNED_POSTS, C as toArchiveGroups, D as toNavItemViews, E as toNavItemView, G as TEXT_ATTACHMENT_CONTENT_FORMATS, H as NAV_ITEM_TYPES, J as url_exports, O as toPostView, R as FORMATS, S as createMediaContext, T as toMediaView, U as SORT_ORDERS, V as MEDIA_KINDS, W as STATUSES, b as defaultSitemapRenderer, j as time_exports, k as toPostViews, n as createApp, v as defaultAtomRenderer, w as toArchiveGroupsWithMedia, x as markdown_exports, y as defaultRssRenderer, z as MAX_MEDIA_ATTACHMENTS } from "./app-
|
|
1
|
+
import { A as toSearchResultView, B as MAX_PINNED_POSTS, C as toArchiveGroups, D as toNavItemViews, E as toNavItemView, G as TEXT_ATTACHMENT_CONTENT_FORMATS, H as NAV_ITEM_TYPES, J as url_exports, O as toPostView, R as FORMATS, S as createMediaContext, T as toMediaView, U as SORT_ORDERS, V as MEDIA_KINDS, W as STATUSES, b as defaultSitemapRenderer, j as time_exports, k as toPostViews, n as createApp, v as defaultAtomRenderer, w as toArchiveGroupsWithMedia, x as markdown_exports, y as defaultRssRenderer, z as MAX_MEDIA_ATTACHMENTS } from "./app-CAtsuLLh.js";
|
|
2
2
|
export { FORMATS, MAX_MEDIA_ATTACHMENTS, MAX_PINNED_POSTS, MEDIA_KINDS, NAV_ITEM_TYPES, SORT_ORDERS, STATUSES, TEXT_ATTACHMENT_CONTENT_FORMATS, createApp, createMediaContext, defaultAtomRenderer, defaultRssRenderer, defaultSitemapRenderer, markdown_exports as markdown, time_exports as time, toArchiveGroups, toArchiveGroupsWithMedia, toMediaView, toNavItemView, toNavItemViews, toPostView, toPostViews, toSearchResultView, url_exports as url };
|
package/dist/node.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as getPort, I as getSiteResolutionMode, K as getPublicAssetBasePath, L as shouldTrustProxy, M as getConfiguredSingleSiteOrigin, N as getConfiguredSingleSitePathPrefix, P as getEnvString, _ as BUILTIN_COLOR_THEMES, a as createSiteService, c as sqliteSchemaBundle, d as createExportService, f as resolveConfig, g as buildThemeStyle, h as getFontThemeCssVariables, i as createNodeRequestRuntime, l as schema_exports, m as getCjkSerifCssVariables, n as createApp, o as createNodeDatabase, p as BUILTIN_FONT_THEMES, q as isAssetPath, r as createNodeCliRuntime, s as pgSchemaBundle, u as getHostBasedStartupConfigurationIssues } from "./app-
|
|
1
|
+
import { F as getPort, I as getSiteResolutionMode, K as getPublicAssetBasePath, L as shouldTrustProxy, M as getConfiguredSingleSiteOrigin, N as getConfiguredSingleSitePathPrefix, P as getEnvString, _ as BUILTIN_COLOR_THEMES, a as createSiteService, c as sqliteSchemaBundle, d as createExportService, f as resolveConfig, g as buildThemeStyle, h as getFontThemeCssVariables, i as createNodeRequestRuntime, l as schema_exports, m as getCjkSerifCssVariables, n as createApp, o as createNodeDatabase, p as BUILTIN_FONT_THEMES, q as isAssetPath, r as createNodeCliRuntime, s as pgSchemaBundle, u as getHostBasedStartupConfigurationIssues } from "./app-CAtsuLLh.js";
|
|
2
2
|
import { drizzle } from "drizzle-orm/better-sqlite3";
|
|
3
3
|
import { serve } from "@hono/node-server";
|
|
4
4
|
import Database from "better-sqlite3";
|
|
@@ -432,7 +432,7 @@ async function createNodeRequestHandler(options) {
|
|
|
432
432
|
async function start(env = process.env, app) {
|
|
433
433
|
const handler = await createNodeRequestHandler({
|
|
434
434
|
env,
|
|
435
|
-
app: async () => app ?? (await import("./app-
|
|
435
|
+
app: async () => app ?? (await import("./app-CAtsuLLh.js").then((n) => n.t)).createApp()
|
|
436
436
|
});
|
|
437
437
|
const hostname = resolveHost(env);
|
|
438
438
|
const port = resolvePort(env);
|
package/package.json
CHANGED
package/src/app.tsx
CHANGED
|
@@ -73,6 +73,7 @@ import { isAssetPath } from "./lib/asset-path.js";
|
|
|
73
73
|
import { getHostedCanonicalRedirect } from "./lib/hosted-domain.js";
|
|
74
74
|
import { stripSitePathPrefix, toPublicHref } from "./lib/url.js";
|
|
75
75
|
import { createRequestRuntime } from "./runtime/index.js";
|
|
76
|
+
import { getInstanceReadiness } from "./runtime/readiness.js";
|
|
76
77
|
import { type AppVariables, type App } from "./types/app-context.js";
|
|
77
78
|
import { isPublicStorageKeyAllowed } from "./lib/public-storage.js";
|
|
78
79
|
|
|
@@ -260,6 +261,10 @@ export function createApp(): App {
|
|
|
260
261
|
// Instance health checks must bypass hosted site resolution so container
|
|
261
262
|
// health probes keep working in host-based mode before any site matches.
|
|
262
263
|
app.get("/health", (c) => c.json({ status: "ok" }));
|
|
264
|
+
app.get("/readyz", async (c) => {
|
|
265
|
+
const readiness = await getInstanceReadiness(c.env);
|
|
266
|
+
return c.json(readiness, readiness.status === "ok" ? 200 : 503);
|
|
267
|
+
});
|
|
263
268
|
|
|
264
269
|
// Lightweight init — no DB queries
|
|
265
270
|
app.use("*", async (c, next) => {
|
|
@@ -102,6 +102,37 @@ const items: CollectionManagerItem[] = [
|
|
|
102
102
|
},
|
|
103
103
|
];
|
|
104
104
|
|
|
105
|
+
const groupedItems: CollectionManagerItem[] = [
|
|
106
|
+
{
|
|
107
|
+
id: "divider-1",
|
|
108
|
+
type: "divider",
|
|
109
|
+
label: "Reading group",
|
|
110
|
+
position: "a0",
|
|
111
|
+
},
|
|
112
|
+
...items,
|
|
113
|
+
{
|
|
114
|
+
id: "divider-2",
|
|
115
|
+
type: "divider",
|
|
116
|
+
label: "Solo group",
|
|
117
|
+
position: "a9",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: "sidebar-3",
|
|
121
|
+
type: "collection",
|
|
122
|
+
collectionId: "collection-3",
|
|
123
|
+
position: "b0",
|
|
124
|
+
collection: {
|
|
125
|
+
id: "collection-3",
|
|
126
|
+
slug: "solo",
|
|
127
|
+
title: "Solo",
|
|
128
|
+
description: null,
|
|
129
|
+
sortOrder: "newest",
|
|
130
|
+
postCount: 1,
|
|
131
|
+
recentActivityAt: 1_763_619_300,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
];
|
|
135
|
+
|
|
105
136
|
async function createElement(): Promise<JantCollectionsManager> {
|
|
106
137
|
const el = document.createElement(
|
|
107
138
|
"jant-collections-manager",
|
|
@@ -113,6 +144,19 @@ async function createElement(): Promise<JantCollectionsManager> {
|
|
|
113
144
|
return el;
|
|
114
145
|
}
|
|
115
146
|
|
|
147
|
+
async function createElementWithItems(
|
|
148
|
+
customItems: CollectionManagerItem[],
|
|
149
|
+
): Promise<JantCollectionsManager> {
|
|
150
|
+
const el = document.createElement(
|
|
151
|
+
"jant-collections-manager",
|
|
152
|
+
) as JantCollectionsManager;
|
|
153
|
+
el.labels = labels;
|
|
154
|
+
el.items = customItems;
|
|
155
|
+
document.body.appendChild(el);
|
|
156
|
+
await el.updateComplete;
|
|
157
|
+
return el;
|
|
158
|
+
}
|
|
159
|
+
|
|
116
160
|
async function createElementWithManagerRoot(): Promise<JantCollectionsManager> {
|
|
117
161
|
const root = document.createElement("div");
|
|
118
162
|
root.setAttribute("data-collections-manager-root", "");
|
|
@@ -247,4 +291,16 @@ describe("JantCollectionsManager", () => {
|
|
|
247
291
|
expect(count?.hidden).toBe(false);
|
|
248
292
|
expect(count?.textContent).toBe("0 collections");
|
|
249
293
|
});
|
|
294
|
+
|
|
295
|
+
it("renders divider labels as aggregate links when followed by a grouped section", async () => {
|
|
296
|
+
const el = await createElementWithItems(groupedItems);
|
|
297
|
+
|
|
298
|
+
const links = el.querySelectorAll<HTMLAnchorElement>(
|
|
299
|
+
".collection-directory-divider-link",
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
expect(links).toHaveLength(1);
|
|
303
|
+
expect(links[0]?.textContent?.trim()).toBe("Reading group");
|
|
304
|
+
expect(links[0]?.getAttribute("href")).toBe("/c/reading+tools");
|
|
305
|
+
});
|
|
250
306
|
});
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
type CollectionSortOrder,
|
|
19
19
|
} from "../../types.js";
|
|
20
20
|
import { getSlugValidationIssue, truncateSlug } from "../../lib/slug-format.js";
|
|
21
|
+
import { RESERVED_COLLECTION_SLUGS } from "../../lib/constants.js";
|
|
21
22
|
import { slugify } from "../lazy-slugify.js";
|
|
22
23
|
import { publicPath } from "../runtime-paths.js";
|
|
23
24
|
import type {
|
|
@@ -151,6 +152,7 @@ export class JantCollectionForm extends LitElement {
|
|
|
151
152
|
#getSlugValidationMessage(): string | null {
|
|
152
153
|
const issue = getSlugValidationIssue(this._slug, {
|
|
153
154
|
maxLength: MAX_COLLECTION_SLUG_LENGTH,
|
|
155
|
+
additionalReservedValues: RESERVED_COLLECTION_SLUGS,
|
|
154
156
|
});
|
|
155
157
|
if (issue === "too_long") {
|
|
156
158
|
return (
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
import { showConfirmDialog } from "../confirm.js";
|
|
27
27
|
import { publicPath } from "../runtime-paths.js";
|
|
28
28
|
import { showToast } from "../toast.js";
|
|
29
|
+
import { getDividerCollectionGroup } from "../../lib/collection-groups.js";
|
|
29
30
|
import { formatRelativeAge, toISOString } from "../../lib/time.js";
|
|
30
31
|
import type {
|
|
31
32
|
CollectionManagerItem,
|
|
@@ -678,7 +679,7 @@ export class JantCollectionsManager extends LitElement {
|
|
|
678
679
|
`;
|
|
679
680
|
}
|
|
680
681
|
|
|
681
|
-
#renderDividerItem(item: CollectionManagerItem) {
|
|
682
|
+
#renderDividerItem(item: CollectionManagerItem, index: number) {
|
|
682
683
|
if (this._reorderMode) {
|
|
683
684
|
return html`
|
|
684
685
|
<div
|
|
@@ -759,6 +760,7 @@ export class JantCollectionsManager extends LitElement {
|
|
|
759
760
|
}
|
|
760
761
|
|
|
761
762
|
const hasLabel = !!item.label;
|
|
763
|
+
const group = getDividerCollectionGroup(this._items, index);
|
|
762
764
|
return html`
|
|
763
765
|
<div class="collection-directory-divider">
|
|
764
766
|
<div
|
|
@@ -767,9 +769,20 @@ export class JantCollectionsManager extends LitElement {
|
|
|
767
769
|
>
|
|
768
770
|
${hasLabel
|
|
769
771
|
? html`
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
772
|
+
${group
|
|
773
|
+
? html`
|
|
774
|
+
<a
|
|
775
|
+
href=${publicPath(`/c/${group.slugExpression}`)}
|
|
776
|
+
class="collection-directory-divider-link collection-directory-divider-text"
|
|
777
|
+
>
|
|
778
|
+
${item.label}
|
|
779
|
+
</a>
|
|
780
|
+
`
|
|
781
|
+
: html`
|
|
782
|
+
<span class="collection-directory-divider-text">
|
|
783
|
+
${item.label}
|
|
784
|
+
</span>
|
|
785
|
+
`}
|
|
773
786
|
<hr class="collection-directory-divider-line" />
|
|
774
787
|
`
|
|
775
788
|
: html`<hr class="collection-directory-divider-line" />`}
|
|
@@ -785,12 +798,12 @@ export class JantCollectionsManager extends LitElement {
|
|
|
785
798
|
<div id="collections-manager-list" class="collection-directory">
|
|
786
799
|
${(() => {
|
|
787
800
|
let collectionIndex = 0;
|
|
788
|
-
return this._items.map((item) => {
|
|
801
|
+
return this._items.map((item, index) => {
|
|
789
802
|
if (item.type === "collection") {
|
|
790
803
|
collectionIndex += 1;
|
|
791
804
|
return this.#renderCollectionItem(item, collectionIndex);
|
|
792
805
|
}
|
|
793
|
-
return this.#renderDividerItem(item);
|
|
806
|
+
return this.#renderDividerItem(item, index);
|
|
794
807
|
});
|
|
795
808
|
})()}
|
|
796
809
|
</div>
|
package/src/i18n/locales/en.po
CHANGED
|
@@ -517,6 +517,8 @@ msgstr "Clear filter"
|
|
|
517
517
|
#. @context: Singular collection count label
|
|
518
518
|
#. @context: Singular collection count label
|
|
519
519
|
#. @context: Singular collection count label
|
|
520
|
+
#. @context: Singular collection count label on an aggregate collection page
|
|
521
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
520
522
|
#: src/ui/pages/CollectionsPage.tsx
|
|
521
523
|
#: src/ui/shared/CollectionsManager.tsx
|
|
522
524
|
#: src/ui/shared/CollectionsManager.tsx
|
|
@@ -560,6 +562,8 @@ msgstr "Collection saved."
|
|
|
560
562
|
#. @context: Plural collection count label
|
|
561
563
|
#. @context: Plural collection count label
|
|
562
564
|
#. @context: Plural collection count label
|
|
565
|
+
#. @context: Plural collection count label on an aggregate collection page
|
|
566
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
563
567
|
#: src/ui/pages/CollectionsPage.tsx
|
|
564
568
|
#: src/ui/shared/CollectionsManager.tsx
|
|
565
569
|
#: src/ui/shared/CollectionsManager.tsx
|
|
@@ -1436,6 +1440,11 @@ msgstr "In thread →"
|
|
|
1436
1440
|
msgid "Included assets"
|
|
1437
1441
|
msgstr "Included assets"
|
|
1438
1442
|
|
|
1443
|
+
#. @context: Label above the included collections list on an aggregate collection page
|
|
1444
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
1445
|
+
msgid "Includes"
|
|
1446
|
+
msgstr "Includes"
|
|
1447
|
+
|
|
1439
1448
|
#. @context: Site accent sample badge
|
|
1440
1449
|
#: src/ui/pages/ThemeSamplePage.tsx
|
|
1441
1450
|
msgid "Inline emphasis"
|
|
@@ -1913,6 +1922,11 @@ msgstr "Notes"
|
|
|
1913
1922
|
msgid "Nothing here yet."
|
|
1914
1923
|
msgstr "Nothing here yet."
|
|
1915
1924
|
|
|
1925
|
+
#. @context: Empty state message on an aggregate collection page
|
|
1926
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
1927
|
+
msgid "Nothing here yet. Add posts to one of these collections to fill this view."
|
|
1928
|
+
msgstr "Nothing here yet. Add posts to one of these collections to fill this view."
|
|
1929
|
+
|
|
1916
1930
|
#. @context: Empty state message on featured page
|
|
1917
1931
|
#: src/ui/pages/FeaturedPage.tsx
|
|
1918
1932
|
msgid "Nothing in Featured yet. Mark a post as featured to show it here."
|
package/src/i18n/locales/en.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"+2aYLu\":[\"Header link limit updated.\"],\"+4u2g6\":[\"A ready-made 1:1 PNG for decks, mockups, directories, and other square placements.\"],\"+AXdXp\":[\"Label and URL are required\"],\"+DPYOZ\":[\"Add a link to your main RSS feed. Change what /feed returns in General.\"],\"+G8qqW\":[\"Collection saved.\"],\"+IJm1Z\":[\"Muted\"],\"+Irvp3\":[\"Everything on this page is ready to use for articles, launch posts, directories, and product coverage.\"],\"+Qaboy\":[\"Favicon\"],\"+fWu2O\":[\"A calmer, warmer accent makes the default theme feel quieter and more intentional.\"],\"+h8YKs\":[\"Low-distraction palettes for a cleaner, calmer reading rhythm.\"],\"+siMqD\":[\"Journal\"],\"+zy2Nq\":[\"Type\"],\"/3H2/s\":[\"This hosted site signs in through \",[\"providerLabel\"],\". Manage password and hosted access there.\"],\"/DFKdU\":[\"Type the quote...\"],\"/PfPLc\":[\"Label (optional)\"],\"/PoNoq\":[\"Edit link\"],\"/Ui2OV\":[\"Use the reverse logo on dark backgrounds.\"],\"/Ybds4\":[\"Primary Jant logo for websites, docs, press coverage, and editorial layouts.\"],\"/rTz0M\":[\"Audio\"],\"0+tKwI\":[\"Export and demo limits\"],\"0EcUWz\":[\"Discard changes?\"],\"0Lj7or\":[\"Save text attachment?\"],\"0OGSSc\":[\"Avatar display updated.\"],\"0UzCUX\":[\"Update the password you use to sign in\"],\"0XDp7X\":[\"Links should read clearly without glowing against the page.\"],\"0ieXE7\":[\"Highest rated\"],\"14BEca\":[\"Read why\"],\"15++NM\":[\"Inline emphasis\"],\"1DBGsz\":[\"Notes\"],\"1F6Mzc\":[\"No navigation items yet. Add links or enable system items below.\"],\"1NeeWI\":[\"Square assets for avatars, apps, browsers, and shared links\"],\"1THMr2\":[\"Brand pack\"],\"1njn7W\":[\"Light\"],\"2B7HLH\":[\"New post\"],\"2C7mSG\":[\"Collection link\"],\"2DoBvq\":[\"Feeds\"],\"2ETv7R\":[\"Tune color in a real reading context\"],\"2HbvFp\":[\"Real post components\"],\"2MXb5X\":[\"Field notes on quiet design\"],\"2PTjMB\":[\"I want to delete \",[\"siteName\"]],\"2cFU6q\":[\"Site Footer\"],\"2koDOQ\":[\"Thread accents\"],\"2q/Q7x\":[\"Visibility\"],\"2sCqzD\":[\"Use this for websites, docs, articles, and other light or neutral surfaces.\"],\"3Cw1AI\":[\"Add Collection\"],\"3VrybB\":[\"Redirect\"],\"3Yvsaz\":[\"302 (Temporary)\"],\"3lJk5u\":[\"Keep the artwork unchanged.\"],\"3mdteM\":[\"before deciding whether the accent is carrying too much product energy.\"],\"3n0zbB\":[\"Session management is off in demo mode. Use the shared demo session instead.\"],\"3neqtf\":[\"Thread accent\"],\"3qkggm\":[\"Fullscreen\"],\"3vMdv3\":[\"This link is reserved. Choose something else.\"],\"3wKq0C\":[\"Couldn't save. Try again in a moment.\"],\"3xi01/\":[\"Look at the footer metadata last, to make sure the accent is not fighting the typography.\"],\"47iMgt\":[\"Editorial interfaces worth borrowing from\"],\"49Bsal\":[\"Feed settings updated.\"],\"4D09NB\":[\"Link to your collections page\"],\"4J/OYU\":[\"Collection created.\"],\"4Jge8E\":[\"Active Sessions\"],\"4KIa+q\":[\"Export downloaded.\"],\"4cEClj\":[\"Sessions\"],\"4eiXo+\":[\"Leave blank to generate one automatically.\"],\"4pV0kE\":[\"Avatar-ready\"],\"4zGJ5E\":[\"Delete Account Permanently\"],\"5VQnR3\":[\"Use these when you want a feed URL that never changes.\"],\"5lWFkC\":[\"Sign in\"],\"5pAjd8\":[\"Accent should feel present, not loud.\"],\"5sEkBi\":[\"Open raw asset\"],\"69OXZB\":[\"Delete Hosted Site\"],\"6ArdBh\":[\"Uses featured posts for /feed.\"],\"6DjeBT\":[\"Demo sites always stay hidden from search engines.\"],\"6FFB7q\":[\"Uses the latest public posts for /feed.\"],\"6K1Vef\":[\"Delete this blog permanently? This cannot be undone.\"],\"6UTABI\":[\"Collection order updated.\"],\"6V3Ea3\":[\"Copied\"],\"6Y4BBO\":[\"An abstract editorial layout in warm paper colors\"],\"6cjUDB\":[\"Brand assets\"],\"6lGV3K\":[\"Show less\"],\"6p0JeQ\":[\"to make sure both still feel like they belong to the same product.\"],\"6rhkhp\":[\"Home feed updated.\"],\"6sVyMq\":[\"Add a URL before posting this link.\"],\"6wixKm\":[\"Download a Zola site ZIP for static publishing or import into another Jant.\"],\"6yCv8j\":[\"Save these changes to the text attachment, discard them, or keep editing.\"],\"72fkwh\":[\"Use Featured as the home feed\"],\"74kJNs\":[\"View earlier notes in this thread\"],\"7DvUqV\":[\"Read the page from top to bottom without looking at the swatches.\"],\"7FaY4u\":[\"Usage\"],\"7G9YLi\":[\"Allow search engines to index my site\"],\"7MZxzw\":[\"Password changed.\"],\"7aris6\":[\"March 15\"],\"7d1a0d\":[\"Public\"],\"7hYXO0\":[\"Use this on dark backgrounds, image-backed surfaces, and any placement where the green logo would lose contrast.\"],\"7kMW54\":[\"Open raw SVG\"],\"7nGhhM\":[\"What's on your mind?\"],\"7vhWI8\":[\"New Password\"],\"7z05Pf\":[\"Open the hosted site controls in \",[\"providerLabel\"],\" to cancel billing or permanently delete this site.\"],\"81nFIS\":[\"Passwords don't match. Make sure both fields are identical.\"],\"87a/t/\":[\"Label\"],\"89Upyo\":[\"That theme isn't available. Pick another one.\"],\"8BfEpW\":[\"Hosted account\"],\"8Btgys\":[\"Draft deleted.\"],\"8U2Z7f\":[\"New Custom URL\"],\"8WX0J+\":[\"Your thoughts (optional)\"],\"8ZsakT\":[\"Password\"],\"8bpHix\":[\"Couldn't create your account. Check the details and try again.\"],\"8eC78s\":[\"A calmer accent makes\"],\"8tM8+a\":[\"Save as draft\"],\"9+vGLh\":[\"Custom CSS\"],\"90IRF2\":[\"This article is here to answer a specific question: does the default accent still feel calm once it has to carry a full reading experience?\"],\"9SHZas\":[\"Shows 'Settings' when logged in, 'Sign in' when logged out\"],\"9T7Cwm\":[\"Redirects, vanity paths, and URL control\"],\"9aUyym\":[\"See where you're signed in and revoke old sessions\"],\"9aloPG\":[\"References\"],\"9dr9Nh\":[\"Open external link\"],\"A1D8Yt\":[\"What the accent should do\"],\"A1taO8\":[\"Search\"],\"A2Vg/u\":[\"Navigation and reading states\"],\"Ac5qDn\":[\"Drag collections and dividers into the order you want.\"],\"AeXO77\":[\"Account\"],\"AjHkcv\":[\"Default preview image for social shares and link unfurls.\"],\"AnY+O9\":[\"Show \\\"Build with Jant\\\" at the bottom of the home page\"],\"ApZDMk\":[\"This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels.\"],\"AyHO4m\":[\"What's this collection about?\"],\"B1FFMj\":[\"Download Brand Pack\"],\"B495Gs\":[\"Archive\"],\"B4ESok\":[\"API reference\"],\"BdjLtf\":[\"thread\"],\"Bmaby2\":[\"All formats\"],\"C+9df9\":[\"Quoted or highlighted passages should feel like annotations, not warnings.\"],\"C0/57J\":[\"This is the last part of the collection link.\"],\"CAh1km\":[\"collections\"],\"D4em/+\":[\"Logos\"],\"DCKkhU\":[\"Current Password\"],\"DHhJ7s\":[\"Previous\"],\"DKKKeF\":[\"Manage password and hosted access in \",[\"providerLabel\"]],\"DOx286\":[\"Draft restored.\"],\"DPfwMq\":[\"Done\"],\"DYlMYF\":[\"Built-in background\"],\"DoJzLz\":[\"Collections\"],\"Du2B9f\":[\"The default accent should support reading first. Start by comparing it against the\"],\"DxwUcG\":[\"Read the palette as content first\"],\"E3NcGH\":[\"Square logo PNG\"],\"ECrbov\":[\"More atmospheric palettes with a stronger sense of time, place, or tone.\"],\"EEYbdt\":[\"Publish\"],\"EGwzOK\":[\"Complete Setup\"],\"EHWwm1\":[\"The default accent should feel written, not branded.\"],\"EO3I6h\":[\"Upload didn't go through. Try again in a moment.\"],\"EQNPYo\":[\"Featured on \",[\"date\"],\" at \",[\"time\"]],\"EQtz4D\":[\"Open a few links and check whether they still feel native to the page.\"],\"EUPyPZ\":[\"and \",[\"count\"],\" more\"],\"EetoJL\":[\"Guide the eye without taking over the layout.\"],\"Eiv3bO\":[\"Buttons can stay steady, but links, thread markers, and subtle emphasis should feel closer to ink on paper than dashboard chrome.\"],\"EmQw8O\":[\"If this article still feels like a page you want to keep reading, the palette is probably close.\"],\"Enslfm\":[\"Destination\"],\"EsJdRp\":[\"Save theme\"],\"FESYvt\":[\"Describe this for people with visual impairments...\"],\"FEr96N\":[\"Theme\"],\"FGySZL\":[\"The default accent works best when it reads like a fountain-pen underline. Compare it against the\"],\"FM+KeU\":[\"No drafts yet. Save a draft to find it here.\"],\"FMgjDM\":[\"Toggle built-in navigation items. Enabled items appear in your navigation alongside links.\"],\"Fdv5k7\":[\"What to look for while tuning it\"],\"FkMol5\":[\"Featured\"],\"Fxf4jq\":[\"Description (optional)\"],\"G0qJsQ\":[\"Security token missing. Refresh the page and try again.\"],\"G2u/aQ\":[\"Download official Jant logos, icons, and preview assets.\"],\"GMMWcy\":[\"Name, metadata, language, and search defaults\"],\"GX2VMa\":[\"Create your admin account.\"],\"GXsAby\":[\"Revoke\"],\"GiRWtR\":[\"Why the default accent should feel written, not branded\"],\"GlEzsR\":[\"A short intro for search engines and feed readers. Plain text only.\"],\"GorKul\":[\"Welcome to Jant\"],\"GxkJXS\":[\"Uploading...\"],\"GzTVPx\":[\"Export Static Site\"],\"H29JXm\":[\"+ ALT\"],\"H4lgRd\":[\"Authentication isn't set up. Check your server config.\"],\"HFPGej\":[\"No threads match these filters. Try adjusting your selection or clear all filters.\"],\"HG79RB\":[\"Post as Private\"],\"HKH+W+\":[\"Data\"],\"HNEHJP\":[\"Demo credentials are pre-filled — hit Sign In to continue.\"],\"HbAIQc\":[\"A reference link for checking whether the accent feels editorial instead of promotional.\"],\"Hp1l6f\":[\"Current\"],\"Ht1V3q\":[\"For the same reason, inline code should stay neutral. Something like theme.siteAccent = soften(green, 12%) should not suddenly become the loudest thing on the page.\"],\"HxlY7t\":[\"Changing this updates what subscribers get from /feed.\"],\"I22eN0\":[\"Shared links\"],\"I6gXOa\":[\"Path\"],\"I6zLrz\":[\"Use these when you need a transparent square logo, a shaped tile with a built-in background, a browser icon, or a default preview image.\"],\"ICsA6P\":[\"You have unsaved changes\"],\"ID38tA\":[\"Account deletion is off in demo mode. The shared demo resets separately.\"],\"IF9tPu\":[\"When to use site export, database backups, and recovery drills.\"],\"IUX7p+\":[\"White logo on the Jant green rounded tile for app icon mockups, touch icons, directory listings, and other square placements that should feel softer.\"],\"IW5PBo\":[\"Copy Token\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"Reply\"],\"J4tAHl\":[\"Headings should keep their hierarchy even when the accent gets softer.\"],\"J6bLeg\":[\"Add a custom link to any URL\"],\"JL7LF5\":[\"available CSS variables, data attributes, and examples.\"],\"JTviaO\":[\"Manage sign-in security, exports, and irreversible actions.\"],\"JYj5R2\":[\"Browse files\"],\"JcD7qf\":[\"More actions\"],\"JjX0OO\":[\"Copy your token now — it won't be shown again.\"],\"JuN5GC\":[\"No file selected. Choose a file to upload.\"],\"KOqvXP\":[\"Do not recolor, stretch, rotate, outline, or add effects to the logo.\"],\"KbS2K9\":[\"Reset Password\"],\"KdSsVl\":[\"Author (optional)\"],\"Khu3PV\":[\"Publish settings\"],\"KiJn9B\":[\"Note\"],\"KlZ+t+\":[\"%name% + %count% more\"],\"KsvRin\":[\"Hide from Latest\"],\"KuCcWu\":[\"Displayed at the bottom of all posts and pages. Markdown supported.\"],\"KzmC5L\":[\"Controls\"],\"L0gres\":[\"The rest will be tucked into a ··· menu\"],\"L4t4/q\":[\"March 14\"],\"L7svJg\":[\"Reading\"],\"Lbkbwy\":[\"A quote card for judging accent color against softer, citation-heavy content.\"],\"LcvzvX\":[\"Tap to retry\"],\"LdyooL\":[\"link\"],\"LkA8jz\":[\"Add alt text\"],\"LxRg6f\":[\"live theme controls\"],\"M/haSd\":[\"Always show the light version of the theme.\"],\"M2kIWU\":[\"Font theme\"],\"M4tzVU\":[\"Latest posts\"],\"M6CbAU\":[\"Toggle edit panel\"],\"M8kJqa\":[\"Drafts\"],\"MHrjPM\":[\"Title\"],\"MILa7n\":[\"Square tile\"],\"MSc/Yq\":[\"Do you want to publish your changes or discard them?\"],\"MXSt4t\":[\"Created \",[\"0\"]],\"Mc7+6G\":[\"Enter a valid URL starting with http://, https://, or mailto:.\"],\"MdMyne\":[\"Source link (optional)\"],\"MiMY3Q\":[\"Apple touch icon\"],\"MiyoI7\":[\"default note sample\"],\"MqghUt\":[\"Search posts...\"],\"MrvdXK\":[\"Paper-first palettes with warmer surfaces and a softer, handwritten feel.\"],\"MtENL9\":[\"Tune how your site looks, reads, and runs.\"],\"Myqkib\":[\"Create a collection to get started.\"],\"N/8NPV\":[\"Before deleting, download a site export. You won't be able to recover this account after deletion.\"],\"N7UNHY\":[\"Featured feed\"],\"N8UzTV\":[\"Replies\"],\"NAFbuE\":[\"Search snippet\"],\"NH9Z1R\":[\"Start here\"],\"NHnUHF\":[\"Favicon and the profile mark in your header\"],\"NU2Fqi\":[\"Save CSS\"],\"NhHXCr\":[\"The custom URL path (without leading slash)\"],\"Nldjdr\":[\"No custom URLs yet. Create one to add redirects or custom paths for posts.\"],\"NqsRbb\":[\"Jant logo\"],\"O1367B\":[\"All collections\"],\"O3oNi5\":[\"Email\"],\"OEdMhi\":[\"The best default color is the one you notice only after reading for a while.\"],\"OEt/to\":[\"Guidelines\"],\"OJxdgi\":[\"Keep this link under 200 characters.\"],\"OSJXFg\":[\"Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed.\"],\"OaoJcz\":[\"Social preview\"],\"OmfDbR\":[\"Site accent\"],\"Ovks1h\":[\"A softer blue feels more like ink than product chrome.\"],\"P/sHNL\":[\"Use this page to judge buttons, links, cards, forms, thread accents, and quiet surfaces before changing a theme globally.\"],\"PKhdhq\":[\"Links shown in header\"],\"PZ7HJ8\":[\"Blog Avatar\"],\"PxJ9W6\":[\"Generate Token\"],\"PxSKQl\":[[\"0\"],\" hidden \",[\"1\"]],\"Q2mGA7\":[\"Clear filter\"],\"QBqVyM\":[\"Home screen icon for iPhone and iPad shortcuts.\"],\"Qgbxdw\":[\"Designing a calmer default accent for Jant\"],\"Qn9Ao8\":[\"Circle tile\"],\"Qnrzvb\":[\"Active Tokens\"],\"QyDt3L\":[\"File uploaded.\"],\"R5CMuK\":[\"Jant looks best when the accent feels editorial. Buttons can stay sturdy, but inline emphasis should feel like a pen mark, not a dashboard highlight.\"],\"R6Z4LE\":[\"Download failed. Please try again.\"],\"R8AthW\":[\"Divider\"],\"R9Khdg\":[\"Auto\"],\"RAv3u7\":[\"Compare it against the theme controls\"],\"ROa4Ti\":[\"Interfaces for reading should guide the eye, not keep asking for attention.\"],\"RdmNnl\":[\"Browser tab\"],\"RfGczC\":[\"Square logo\"],\"Rj01Fz\":[\"Links\"],\"RxsRD6\":[\"Time Zone\"],\"S37om9\":[\"Included assets\"],\"S8NCfs\":[\"Save to drafts to edit and post at a later time.\"],\"SJGVAw\":[\"Feel editorial and slightly quieter.\"],\"SJmfuf\":[\"Site Name\"],\"SKZhW9\":[\"Token name\"],\"SaNhJE\":[\"feel deliberate instead of washed out.\"],\"SpTWH3\":[\"Download SVG\"],\"SvRuJt\":[\"Field Notes on Interface Tone\"],\"T/R+Qz\":[\"Primary\"],\"TNZKpI\":[\"Danger\"],\"TWt5I9\":[[\"hiddenCount\"],\" more \",[\"0\"]],\"TvaTxw\":[\"Doesn't appear in Latest. Still appears in collections you add it to.\"],\"Tz0i8g\":[\"Settings\"],\"UIMXHD\":[\"Remove Divider\"],\"UaZwcz\":[\"More options are available after you create it.\"],\"Uc5y7o\":[\"Choose the standard logo for websites, docs, directories, and editorial layouts.\"],\"Uj/btJ\":[\"Display avatar in my site header\"],\"UxKoFf\":[\"Navigation\"],\"V18SVO\":[\"Use the logo on light backgrounds.\"],\"V4WsyL\":[\"Add Link\"],\"V5pZwT\":[\"Search settings updated.\"],\"VCA6B2\":[\"These are actual feed components with real footers, summaries, and inline links. Use this section to judge whether the theme still feels calm once it is applied to realistic content.\"],\"VhMDMg\":[\"Change Password\"],\"Vn3jYy\":[\"Navigation items\"],\"VoZYGU\":[\"This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone.\"],\"WCOanD\":[\"This reference is useful because it treats links and citations as part of the reading rhythm. Keep that in mind while tuning the\"],\"WbIbzR\":[\"Checking link...\"],\"WcWS//\":[\"Download file\"],\"Weq9zb\":[\"General\"],\"WhsN3P\":[\"A good default accent in Jant should feel like editorial structure, not product branding. That means links, emphasis, and thread cues can be visible without turning the page into UI chrome.\"],\"Wi9i06\":[\"Follow each visitor's system preference.\"],\"Wn+/rH\":[\"Transparent square\"],\"WpXcBJ\":[\"Nothing here yet.\"],\"X+8FMk\":[\"Current password doesn't match. Try again.\"],\"X1G9eY\":[\"Navigation Preview\"],\"XU7b+L\":[\"Primary logo files\"],\"XV1mAn\":[\"Only visible when signed in.\"],\"XrnWzN\":[\"Published!\"],\"Y/F35r\":[\"Create a post with curl:\"],\"Y6hOOP\":[\"Signed in \",[\"0\"]],\"YF6zHf\":[\"Site settings updated.\"],\"YIix5Y\":[\"Search...\"],\"YSCkGF\":[\"Header RSS points to your %feed% feed (/feed). Change what /feed returns in General.\"],\"YUglt2\":[\"Generating a link...\"],\"YXiA6e\":[\"Primary button\"],\"Ygx3Yl\":[\"Small browser icon used in tabs and bookmarks.\"],\"Z6NwTi\":[\"Save as Draft\"],\"ZGs2so\":[\"Delete this collection permanently? Posts inside won't be removed.\"],\"ZQKLI1\":[\"Danger Zone\"],\"ZV5ykW\":[\"Download PNG\"],\"ZhhOwV\":[\"Quote\"],\"ZiooJI\":[\"API Tokens\"],\"Zm7Qb0\":[\"Backup & Restore Guide\"],\"ZmSeP+\":[\"Save to drafts?\"],\"ZmUkwN\":[\"Add custom link to navigation\"],\"a14mj8\":[\"Unknown device\"],\"a3LDKx\":[\"Security\"],\"a5j82I\":[\"No collections match that search. Try a different name.\"],\"aAIQg2\":[\"Appearance\"],\"aFkzVF\":[\"The slug of the target post or collection\"],\"aHTB7P\":[\"Supplementary content attached to your post\"],\"aMEyv0\":[\"Stay sturdy and readable.\"],\"aN6wx0\":[\"Nothing in Featured yet. Mark a post as featured to show it here.\"],\"aYpXKS\":[\"and checking whether the accent is guiding attention or pulling too hard.\"],\"af+9p6\":[\"Quiet metadata\"],\"alKG0+\":[\"Font Theme\"],\"an5hVd\":[\"Images\"],\"anibOb\":[\"About this blog\"],\"any7NR\":[\"Theming guide\"],\"auFlOr\":[\"Icons and previews\"],\"avuFKG\":[\"threads\"],\"b+/jO6\":[\"301 (Permanent)\"],\"bFpC86\":[\"Everything in one download\"],\"bHOiy1\":[\"Password changes are off in demo mode. Sign in with the shared demo credentials.\"],\"bHYIks\":[\"Sign Out\"],\"bfCbdi\":[\"Current post\"],\"bkBJmZ\":[\"This is useful as a color check because it puts the accent next to quotation styling, metadata, and a quieter explanatory paragraph. Compare it back to the\"],\"bmrL08\":[\"Demo mode hides sessions, password changes, and account deletion. Export still works.\"],\"bzSI52\":[\"Discard\"],\"c2JRUS\":[\"Generate automatically\"],\"c3MN2z\":[\"all available endpoints and request formats.\"],\"cFpd0L\":[\"Quiet Neutral\"],\"cIoW7X\":[\"Inline link\"],\"cSDy01\":[\"Custom CSS updated.\"],\"cTUByn\":[\"Newest first\"],\"cb7FR8\":[\"White logo on the Jant green square tile for platforms and layouts that expect a true edge-to-edge square.\"],\"ccaIM9\":[\"More links\"],\"cgmi4V\":[\"Delete Draft\"],\"clzoNp\":[\"Always show the dark version of the theme.\"],\"cnGeoo\":[\"Delete\"],\"d+F4pf\":[\"The image should sit quietly inside the article instead of feeling like a card preview.\"],\"d/o/BH\":[\"Couldn't publish. Saved as draft.\"],\"d3FRkY\":[\"Could not copy. Try again.\"],\"dD7NPy\":[\"Outline\"],\"dEgA5A\":[\"Cancel\"],\"dTXUY+\":[\"Confirm account deletion\"],\"dUsGbd\":[\"The right accent should disappear into the writing until you need it.\"],\"dXoieq\":[\"Summary\"],\"dYKrp3\":[\"Hidden from Latest\"],\"dbUuAj\":[\"Appears in Latest.\"],\"dk7TCH\":[\"Permanently delete all data and reset the blog\"],\"e/tSI5\":[\"Navigation order updated.\"],\"ePK91l\":[\"Edit\"],\"eWLklq\":[\"Quotes\"],\"ebQKK7\":[\"Site\"],\"egK+Yy\":[\"Bearer tokens for scripts and automation\"],\"ehj/zN\":[\"Redirect Type\"],\"eneWvv\":[\"Draft\"],\"f+m8jj\":[\"Feed URL copied.\"],\"f4MAoA\":[\"Some uploads failed. Saved as draft.\"],\"f5s9EI\":[\"Press N to write\"],\"f6Hub0\":[\"Sort\"],\"f8fH8W\":[\"Design\"],\"fFDkGR\":[\"Sessions, password, export\"],\"fKrDxS\":[\"Brand tile\"],\"fMPkxb\":[\"Show more\"],\"fqDzSu\":[\"Rate\"],\"fttd2R\":[\"My Collection\"],\"gFdWl+\":[\"A long-form article sample for checking the default palette in a true reading context.\"],\"gNKz6Z\":[\"Collection deleted.\"],\"gXH9r/\":[\"Open raw PNG\"],\"gj52YE\":[\"This collection is empty. Add posts from the editor.\"],\"gpaPhA\":[\"Helps screen readers describe the image\"],\"gtQsRO\":[\"Create Custom URL\"],\"h5RcXU\":[\"Post hidden\"],\"hBO/y4\":[\"Security token expired. Refresh the page and try again.\"],\"hDRU5q\":[\"Found \",[\"0\"],\" results\"],\"hGmyDl\":[\"Tokens let you access the API from scripts, shortcuts, and other tools without signing in.\"],\"hLlWo5\":[\"A few simple rules.\"],\"hXzOVo\":[\"Next\"],\"he3ygx\":[\"Copy\"],\"heSQoS\":[\"Paste a URL...\"],\"i0qMbr\":[\"Home\"],\"i0vDGK\":[\"Sort Order\"],\"i5+Y7d\":[\"Download the official Jant logo, icons, and preview files.\"],\"i6nDCI\":[\"Choose a new password.\"],\"iEUzMn\":[\"system\"],\"iG7KNr\":[\"Logo\"],\"iH8pgl\":[\"Back\"],\"iVOMRi\":[\"Home settings updated.\"],\"icZdbX\":[\"Themes that have not been assigned to a named group yet.\"],\"ilSmIt\":[\"Hard edge\"],\"iu7tUI\":[\"Breadcrumb\"],\"j4VrG6\":[\"Download Export ZIP\"],\"j5nQL2\":[\"e.g. iOS Shortcuts\"],\"jAXE5p\":[\"Reverse logo\"],\"jAqB/k\":[\"Post privately\"],\"jO813m\":[\"More Palettes\"],\"jQflRT\":[\"This uses the real single-post detail rendering with a longer article, inline image, tables, lists, quotes, and code. The content column stays at the same width as the live site.\"],\"jUV7CU\":[\"Upload Avatar\"],\"jVUmOK\":[\"Markdown supported\"],\"jd+8Mm\":[\"Social preview image\"],\"jfaqmf\":[\"When off, the homepage opens with your latest posts.\"],\"jgBjXJ\":[\"Revoke this token? Any scripts using it will stop working.\"],\"ji7oVU\":[\"Edit post\"],\"jpctdh\":[\"View\"],\"jvtP25\":[\"In thread →\"],\"jvyYZG\":[\"What's on your mind...\"],\"k1ifdL\":[\"Processing...\"],\"k3Iw35\":[\"Switch to the white logo when the standard green version would lose contrast.\"],\"kMXclu\":[\"Download a site export\"],\"kNiQp6\":[\"Pinned\"],\"kPMIr+\":[\"Give it a title...\"],\"kVQs7s\":[\"Fine-grained styling overrides\"],\"ke1gWS\":[\"Custom URLs\"],\"kfcRb0\":[\"Avatar\"],\"kj6ppi\":[\"entry\"],\"kr39oD\":[\"No collections yet. Start one to organize posts by topic.\"],\"kzvWob\":[\"Link to the post archive\"],\"lLW3vJ\":[\"Target Slug\"],\"laT1IJ\":[\"iOS home screen\"],\"lb+Xwx\":[\"Custom link\"],\"m16xKo\":[\"Add\"],\"mDyWuM\":[\"Warm Editorial\"],\"mKT7g0\":[\"Text attachment\"],\"mSNmrX\":[\"List posts:\"],\"mc/vLq\":[\"This link is already in use. Choose something else.\"],\"n1ekoW\":[\"Sign In\"],\"n6QD94\":[\"Oldest first\"],\"nFukaP\":[\"Wrong email or password. Check your credentials and try again.\"],\"nK07ni\":[\"Choose a typographic direction for your site. Each theme changes both the font pairing and the reading rhythm.\"],\"nV6twc\":[\"Organize\"],\"nd8Puv\":[\"White logo on the Jant green circle for profile images, badges, and other round placements where you want a ready-made asset.\"],\"ndrEYW\":[\"When the accent is slightly warmer and less literal, the whole page feels more like a writing space and less like product UI.\"],\"o/vNDE\":[\"lets you override any theme variable.\"],\"o21Y+P\":[\"entries\"],\"oKOOsY\":[\"Color Theme\"],\"oSiRP0\":[\"System links\"],\"ode0+L\":[\"Theme sample\"],\"ovBPCi\":[\"Default\"],\"p1Z67P\":[\"When primary is too rigid, the whole page starts reading like product UI instead of writing space.\"],\"p2/GCq\":[\"Confirm Password\"],\"pB0OKE\":[\"New Divider\"],\"pBHx39\":[\"Dark backgrounds\"],\"pVrU5x\":[\"If this page feels too branded, the first place to soften is the default theme’s site accent, not the border or body text.\"],\"pZq3aX\":[\"Upload failed. Please try again.\"],\"psoxDF\":[\"That font theme isn't available. Pick another one.\"],\"pvnfJD\":[\"Dark\"],\"q+hNag\":[\"Collection\"],\"q5YRzz\":[\"Color check\"],\"q8RviX\":[\"Titled\"],\"qiN9NB\":[\"Surface\"],\"qt89I8\":[\"Draft saved.\"],\"quvfGs\":[\"instead of judging it as an isolated swatch.\"],\"rA2TFI\":[\"Switch the palette and mode without opening settings or changing the active site theme.\"],\"rFmBG3\":[\"Color theme\"],\"rdUucN\":[\"Preview\"],\"rlonmB\":[\"Couldn't delete. Try again in a moment.\"],\"s8G5Or\":[\"This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue.\"],\"s9gHf5\":[\"your-post-link\"],\"sER+bs\":[\"Files\"],\"satWc6\":[\"Main RSS feed\"],\"sgr2wQ\":[\"collection\"],\"slujBW\":[\"Use lowercase letters, numbers, and hyphens only.\"],\"sxkWRg\":[\"Advanced\"],\"syiAKf\":[\"note treatment\"],\"t/YqKh\":[\"Remove\"],\"t42hIC\":[\"Everything most people need is in one ZIP.\"],\"tCctex\":[\"The brand pack includes SVG logos, a transparent square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and the default social preview image.\"],\"tKlWWY\":[\"Emoji\"],\"tSWVu5\":[\"Published on \",[\"date\"],\" at \",[\"time\"]],\"tbSs3k\":[\"Distinctive Mood\"],\"tfDRzk\":[\"Save\"],\"u1VTd3\":[\"Palette, surface tone, and overall mood\"],\"u3wRF+\":[\"Published\"],\"u6KOjV\":[\"Want more control?\"],\"ui6aMF\":[\"These devices are currently signed in to your account. Revoke any session you don't recognize.\"],\"uowbPn\":[\"Remove attachment\"],\"v3E8iS\":[\"A practical checklist\"],\"vBEKwo\":[\"Manage this site's active sessions here. Password and hosted access are managed through \",[\"providerLabel\"],\".\"],\"vRldcl\":[\"Typography choices and reading texture\"],\"vSJd18\":[\"Video\"],\"vSYKYI\":[\"Main feed\"],\"vTuib7\":[\"This controls what /feed returns.\"],\"vXCC6J\":[\"Something doesn't look right. Check the form and try again.\"],\"vXIe7J\":[\"Language\"],\"vdFnYM\":[\"Reset link\"],\"vgpfCi\":[\"Save draft\"],\"vmQmHx\":[\"Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements.\"],\"vpSPA1\":[\"Auth secret is missing. Check your environment variables.\"],\"vzU4k9\":[\"New Collection\"],\"vzX5FB\":[\"Delete Account\"],\"w0Emel\":[\"Suggested link\"],\"w6mlns\":[\"Article detail page\"],\"w8Rv8T\":[\"Label is required\"],\"wJ+GRy\":[\"All visibility\"],\"wL3cK8\":[\"Latest\"],\"wPmHHc\":[\"Quiet surfaces let writing lead.\"],\"wc+17X\":[\"/* Your custom CSS here */\"],\"wja8aL\":[\"Untitled\"],\"wlnK1t\":[\"A single ZIP with the main logo, reverse logo, square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and social preview image.\"],\"wm3Zlr\":[\"All years\"],\"wuLtXn\":[\"No active sessions right now. Signed-in devices show up here.\"],\"xCWek4\":[\"File storage isn't set up. Check your server config.\"],\"xVrkxi\":[\"quiet design\"],\"xVvw1i\":[\"This reset link is no longer valid. Request a new one to continue.\"],\"xYilR2\":[\"Media\"],\"xbN8dp\":[\"Soft color should still carry a clear reading rhythm.\"],\"xeiujy\":[\"Text\"],\"xhTx3y\":[\"Choose the standard logo for most placements and the reverse logo when you need more contrast.\"],\"y28hnO\":[\"Post\"],\"y2o/Y0\":[\"This Link Has Expired\"],\"y8Md/V\":[\"Language and time updated.\"],\"yNCqOt\":[\"Latest feed\"],\"yQ2kGp\":[\"Load more\"],\"yQ3kNF\":[\"Type the following phrase to confirm:\"],\"ycM1Xg\":[\"No results. Try different keywords.\"],\"yjjCV8\":[\"Fixed feed URLs\"],\"yjkELF\":[\"Confirm New Password\"],\"ylo1I0\":[\"Last used \",[\"0\"]],\"ynMAhG\":[\"Default logo\"],\"yzF66j\":[\"Link\"],\"z8ajIE\":[\"Found 1 result\"],\"zBFr9G\":[\"Paste a long article, AI response, or any text...\\n\\nMarkdown formatting will be preserved.\"],\"zJDAbh\":[\"Don't save\"],\"zXH2jX\":[\"Language & Time\"],\"zcDmsG\":[\"Featured posts\"],\"zoK+eO\":[\"Add a title before posting this link.\"],\"zwBp5t\":[\"Private\"],\"zxRN6H\":[\"Header links, home feed, and overflow menu\"]}")as Messages;
|
|
1
|
+
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"+2aYLu\":[\"Header link limit updated.\"],\"+4u2g6\":[\"A ready-made 1:1 PNG for decks, mockups, directories, and other square placements.\"],\"+AXdXp\":[\"Label and URL are required\"],\"+DPYOZ\":[\"Add a link to your main RSS feed. Change what /feed returns in General.\"],\"+G8qqW\":[\"Collection saved.\"],\"+IJm1Z\":[\"Muted\"],\"+Irvp3\":[\"Everything on this page is ready to use for articles, launch posts, directories, and product coverage.\"],\"+Qaboy\":[\"Favicon\"],\"+fWu2O\":[\"A calmer, warmer accent makes the default theme feel quieter and more intentional.\"],\"+h8YKs\":[\"Low-distraction palettes for a cleaner, calmer reading rhythm.\"],\"+siMqD\":[\"Journal\"],\"+zy2Nq\":[\"Type\"],\"/3H2/s\":[\"This hosted site signs in through \",[\"providerLabel\"],\". Manage password and hosted access there.\"],\"/DFKdU\":[\"Type the quote...\"],\"/PfPLc\":[\"Label (optional)\"],\"/PoNoq\":[\"Edit link\"],\"/Ui2OV\":[\"Use the reverse logo on dark backgrounds.\"],\"/Ybds4\":[\"Primary Jant logo for websites, docs, press coverage, and editorial layouts.\"],\"/rTz0M\":[\"Audio\"],\"0+tKwI\":[\"Export and demo limits\"],\"0EcUWz\":[\"Discard changes?\"],\"0Lj7or\":[\"Save text attachment?\"],\"0OGSSc\":[\"Avatar display updated.\"],\"0UzCUX\":[\"Update the password you use to sign in\"],\"0XDp7X\":[\"Links should read clearly without glowing against the page.\"],\"0ieXE7\":[\"Highest rated\"],\"11h9eK\":[\"Includes\"],\"14BEca\":[\"Read why\"],\"15++NM\":[\"Inline emphasis\"],\"1DBGsz\":[\"Notes\"],\"1F6Mzc\":[\"No navigation items yet. Add links or enable system items below.\"],\"1NeeWI\":[\"Square assets for avatars, apps, browsers, and shared links\"],\"1THMr2\":[\"Brand pack\"],\"1njn7W\":[\"Light\"],\"2B7HLH\":[\"New post\"],\"2C7mSG\":[\"Collection link\"],\"2DoBvq\":[\"Feeds\"],\"2ETv7R\":[\"Tune color in a real reading context\"],\"2HbvFp\":[\"Real post components\"],\"2MXb5X\":[\"Field notes on quiet design\"],\"2PTjMB\":[\"I want to delete \",[\"siteName\"]],\"2cFU6q\":[\"Site Footer\"],\"2koDOQ\":[\"Thread accents\"],\"2q/Q7x\":[\"Visibility\"],\"2sCqzD\":[\"Use this for websites, docs, articles, and other light or neutral surfaces.\"],\"3Cw1AI\":[\"Add Collection\"],\"3VrybB\":[\"Redirect\"],\"3Yvsaz\":[\"302 (Temporary)\"],\"3lJk5u\":[\"Keep the artwork unchanged.\"],\"3mdteM\":[\"before deciding whether the accent is carrying too much product energy.\"],\"3n0zbB\":[\"Session management is off in demo mode. Use the shared demo session instead.\"],\"3neqtf\":[\"Thread accent\"],\"3qkggm\":[\"Fullscreen\"],\"3vMdv3\":[\"This link is reserved. Choose something else.\"],\"3wKq0C\":[\"Couldn't save. Try again in a moment.\"],\"3xi01/\":[\"Look at the footer metadata last, to make sure the accent is not fighting the typography.\"],\"47iMgt\":[\"Editorial interfaces worth borrowing from\"],\"49Bsal\":[\"Feed settings updated.\"],\"4D09NB\":[\"Link to your collections page\"],\"4J/OYU\":[\"Collection created.\"],\"4Jge8E\":[\"Active Sessions\"],\"4KIa+q\":[\"Export downloaded.\"],\"4cEClj\":[\"Sessions\"],\"4eiXo+\":[\"Leave blank to generate one automatically.\"],\"4pV0kE\":[\"Avatar-ready\"],\"4zGJ5E\":[\"Delete Account Permanently\"],\"5VQnR3\":[\"Use these when you want a feed URL that never changes.\"],\"5lWFkC\":[\"Sign in\"],\"5pAjd8\":[\"Accent should feel present, not loud.\"],\"5sEkBi\":[\"Open raw asset\"],\"69OXZB\":[\"Delete Hosted Site\"],\"6ArdBh\":[\"Uses featured posts for /feed.\"],\"6DjeBT\":[\"Demo sites always stay hidden from search engines.\"],\"6FFB7q\":[\"Uses the latest public posts for /feed.\"],\"6K1Vef\":[\"Delete this blog permanently? This cannot be undone.\"],\"6UTABI\":[\"Collection order updated.\"],\"6V3Ea3\":[\"Copied\"],\"6Y4BBO\":[\"An abstract editorial layout in warm paper colors\"],\"6cjUDB\":[\"Brand assets\"],\"6lGV3K\":[\"Show less\"],\"6p0JeQ\":[\"to make sure both still feel like they belong to the same product.\"],\"6rhkhp\":[\"Home feed updated.\"],\"6sVyMq\":[\"Add a URL before posting this link.\"],\"6wixKm\":[\"Download a Zola site ZIP for static publishing or import into another Jant.\"],\"6yCv8j\":[\"Save these changes to the text attachment, discard them, or keep editing.\"],\"72fkwh\":[\"Use Featured as the home feed\"],\"74kJNs\":[\"View earlier notes in this thread\"],\"7DvUqV\":[\"Read the page from top to bottom without looking at the swatches.\"],\"7FaY4u\":[\"Usage\"],\"7G9YLi\":[\"Allow search engines to index my site\"],\"7MZxzw\":[\"Password changed.\"],\"7aris6\":[\"March 15\"],\"7d1a0d\":[\"Public\"],\"7hYXO0\":[\"Use this on dark backgrounds, image-backed surfaces, and any placement where the green logo would lose contrast.\"],\"7kMW54\":[\"Open raw SVG\"],\"7nGhhM\":[\"What's on your mind?\"],\"7vhWI8\":[\"New Password\"],\"7z05Pf\":[\"Open the hosted site controls in \",[\"providerLabel\"],\" to cancel billing or permanently delete this site.\"],\"81nFIS\":[\"Passwords don't match. Make sure both fields are identical.\"],\"87a/t/\":[\"Label\"],\"89Upyo\":[\"That theme isn't available. Pick another one.\"],\"8BfEpW\":[\"Hosted account\"],\"8Btgys\":[\"Draft deleted.\"],\"8U2Z7f\":[\"New Custom URL\"],\"8WX0J+\":[\"Your thoughts (optional)\"],\"8ZsakT\":[\"Password\"],\"8bpHix\":[\"Couldn't create your account. Check the details and try again.\"],\"8eC78s\":[\"A calmer accent makes\"],\"8tM8+a\":[\"Save as draft\"],\"9+vGLh\":[\"Custom CSS\"],\"90IRF2\":[\"This article is here to answer a specific question: does the default accent still feel calm once it has to carry a full reading experience?\"],\"9SHZas\":[\"Shows 'Settings' when logged in, 'Sign in' when logged out\"],\"9T7Cwm\":[\"Redirects, vanity paths, and URL control\"],\"9aUyym\":[\"See where you're signed in and revoke old sessions\"],\"9aloPG\":[\"References\"],\"9dr9Nh\":[\"Open external link\"],\"A1D8Yt\":[\"What the accent should do\"],\"A1taO8\":[\"Search\"],\"A2Vg/u\":[\"Navigation and reading states\"],\"Ac5qDn\":[\"Drag collections and dividers into the order you want.\"],\"AeXO77\":[\"Account\"],\"AjHkcv\":[\"Default preview image for social shares and link unfurls.\"],\"AnY+O9\":[\"Show \\\"Build with Jant\\\" at the bottom of the home page\"],\"ApZDMk\":[\"This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels.\"],\"AyHO4m\":[\"What's this collection about?\"],\"B1FFMj\":[\"Download Brand Pack\"],\"B495Gs\":[\"Archive\"],\"B4ESok\":[\"API reference\"],\"BdjLtf\":[\"thread\"],\"Bmaby2\":[\"All formats\"],\"C+9df9\":[\"Quoted or highlighted passages should feel like annotations, not warnings.\"],\"C0/57J\":[\"This is the last part of the collection link.\"],\"CAh1km\":[\"collections\"],\"D4em/+\":[\"Logos\"],\"DCKkhU\":[\"Current Password\"],\"DHhJ7s\":[\"Previous\"],\"DKKKeF\":[\"Manage password and hosted access in \",[\"providerLabel\"]],\"DOx286\":[\"Draft restored.\"],\"DPfwMq\":[\"Done\"],\"DYlMYF\":[\"Built-in background\"],\"DoJzLz\":[\"Collections\"],\"Du2B9f\":[\"The default accent should support reading first. Start by comparing it against the\"],\"DxwUcG\":[\"Read the palette as content first\"],\"E3NcGH\":[\"Square logo PNG\"],\"ECrbov\":[\"More atmospheric palettes with a stronger sense of time, place, or tone.\"],\"EEYbdt\":[\"Publish\"],\"EGwzOK\":[\"Complete Setup\"],\"EHWwm1\":[\"The default accent should feel written, not branded.\"],\"EO3I6h\":[\"Upload didn't go through. Try again in a moment.\"],\"EQNPYo\":[\"Featured on \",[\"date\"],\" at \",[\"time\"]],\"EQtz4D\":[\"Open a few links and check whether they still feel native to the page.\"],\"EUPyPZ\":[\"and \",[\"count\"],\" more\"],\"EetoJL\":[\"Guide the eye without taking over the layout.\"],\"Eiv3bO\":[\"Buttons can stay steady, but links, thread markers, and subtle emphasis should feel closer to ink on paper than dashboard chrome.\"],\"EmQw8O\":[\"If this article still feels like a page you want to keep reading, the palette is probably close.\"],\"Enslfm\":[\"Destination\"],\"EsJdRp\":[\"Save theme\"],\"FESYvt\":[\"Describe this for people with visual impairments...\"],\"FEr96N\":[\"Theme\"],\"FGySZL\":[\"The default accent works best when it reads like a fountain-pen underline. Compare it against the\"],\"FM+KeU\":[\"No drafts yet. Save a draft to find it here.\"],\"FMgjDM\":[\"Toggle built-in navigation items. Enabled items appear in your navigation alongside links.\"],\"Fdv5k7\":[\"What to look for while tuning it\"],\"FkMol5\":[\"Featured\"],\"Fxf4jq\":[\"Description (optional)\"],\"G0qJsQ\":[\"Security token missing. Refresh the page and try again.\"],\"G2u/aQ\":[\"Download official Jant logos, icons, and preview assets.\"],\"GMMWcy\":[\"Name, metadata, language, and search defaults\"],\"GX2VMa\":[\"Create your admin account.\"],\"GXsAby\":[\"Revoke\"],\"GiRWtR\":[\"Why the default accent should feel written, not branded\"],\"GlEzsR\":[\"A short intro for search engines and feed readers. Plain text only.\"],\"GorKul\":[\"Welcome to Jant\"],\"GxkJXS\":[\"Uploading...\"],\"GzTVPx\":[\"Export Static Site\"],\"H29JXm\":[\"+ ALT\"],\"H4lgRd\":[\"Authentication isn't set up. Check your server config.\"],\"HFPGej\":[\"No threads match these filters. Try adjusting your selection or clear all filters.\"],\"HG79RB\":[\"Post as Private\"],\"HKH+W+\":[\"Data\"],\"HNEHJP\":[\"Demo credentials are pre-filled — hit Sign In to continue.\"],\"HbAIQc\":[\"A reference link for checking whether the accent feels editorial instead of promotional.\"],\"Hp1l6f\":[\"Current\"],\"Ht1V3q\":[\"For the same reason, inline code should stay neutral. Something like theme.siteAccent = soften(green, 12%) should not suddenly become the loudest thing on the page.\"],\"HxlY7t\":[\"Changing this updates what subscribers get from /feed.\"],\"I22eN0\":[\"Shared links\"],\"I6gXOa\":[\"Path\"],\"I6zLrz\":[\"Use these when you need a transparent square logo, a shaped tile with a built-in background, a browser icon, or a default preview image.\"],\"ICsA6P\":[\"You have unsaved changes\"],\"ID38tA\":[\"Account deletion is off in demo mode. The shared demo resets separately.\"],\"IF9tPu\":[\"When to use site export, database backups, and recovery drills.\"],\"IUX7p+\":[\"White logo on the Jant green rounded tile for app icon mockups, touch icons, directory listings, and other square placements that should feel softer.\"],\"IW5PBo\":[\"Copy Token\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"Reply\"],\"IsI3kE\":[\"Nothing here yet. Add posts to one of these collections to fill this view.\"],\"J4tAHl\":[\"Headings should keep their hierarchy even when the accent gets softer.\"],\"J6bLeg\":[\"Add a custom link to any URL\"],\"JL7LF5\":[\"available CSS variables, data attributes, and examples.\"],\"JTviaO\":[\"Manage sign-in security, exports, and irreversible actions.\"],\"JYj5R2\":[\"Browse files\"],\"JcD7qf\":[\"More actions\"],\"JjX0OO\":[\"Copy your token now — it won't be shown again.\"],\"JuN5GC\":[\"No file selected. Choose a file to upload.\"],\"KOqvXP\":[\"Do not recolor, stretch, rotate, outline, or add effects to the logo.\"],\"KbS2K9\":[\"Reset Password\"],\"KdSsVl\":[\"Author (optional)\"],\"Khu3PV\":[\"Publish settings\"],\"KiJn9B\":[\"Note\"],\"KlZ+t+\":[\"%name% + %count% more\"],\"KsvRin\":[\"Hide from Latest\"],\"KuCcWu\":[\"Displayed at the bottom of all posts and pages. Markdown supported.\"],\"KzmC5L\":[\"Controls\"],\"L0gres\":[\"The rest will be tucked into a ··· menu\"],\"L4t4/q\":[\"March 14\"],\"L7svJg\":[\"Reading\"],\"Lbkbwy\":[\"A quote card for judging accent color against softer, citation-heavy content.\"],\"LcvzvX\":[\"Tap to retry\"],\"LdyooL\":[\"link\"],\"LkA8jz\":[\"Add alt text\"],\"LxRg6f\":[\"live theme controls\"],\"M/haSd\":[\"Always show the light version of the theme.\"],\"M2kIWU\":[\"Font theme\"],\"M4tzVU\":[\"Latest posts\"],\"M6CbAU\":[\"Toggle edit panel\"],\"M8kJqa\":[\"Drafts\"],\"MHrjPM\":[\"Title\"],\"MILa7n\":[\"Square tile\"],\"MSc/Yq\":[\"Do you want to publish your changes or discard them?\"],\"MXSt4t\":[\"Created \",[\"0\"]],\"Mc7+6G\":[\"Enter a valid URL starting with http://, https://, or mailto:.\"],\"MdMyne\":[\"Source link (optional)\"],\"MiMY3Q\":[\"Apple touch icon\"],\"MiyoI7\":[\"default note sample\"],\"MqghUt\":[\"Search posts...\"],\"MrvdXK\":[\"Paper-first palettes with warmer surfaces and a softer, handwritten feel.\"],\"MtENL9\":[\"Tune how your site looks, reads, and runs.\"],\"Myqkib\":[\"Create a collection to get started.\"],\"N/8NPV\":[\"Before deleting, download a site export. You won't be able to recover this account after deletion.\"],\"N7UNHY\":[\"Featured feed\"],\"N8UzTV\":[\"Replies\"],\"NAFbuE\":[\"Search snippet\"],\"NH9Z1R\":[\"Start here\"],\"NHnUHF\":[\"Favicon and the profile mark in your header\"],\"NU2Fqi\":[\"Save CSS\"],\"NhHXCr\":[\"The custom URL path (without leading slash)\"],\"Nldjdr\":[\"No custom URLs yet. Create one to add redirects or custom paths for posts.\"],\"NqsRbb\":[\"Jant logo\"],\"O1367B\":[\"All collections\"],\"O3oNi5\":[\"Email\"],\"OEdMhi\":[\"The best default color is the one you notice only after reading for a while.\"],\"OEt/to\":[\"Guidelines\"],\"OJxdgi\":[\"Keep this link under 200 characters.\"],\"OSJXFg\":[\"Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed.\"],\"OaoJcz\":[\"Social preview\"],\"OmfDbR\":[\"Site accent\"],\"Ovks1h\":[\"A softer blue feels more like ink than product chrome.\"],\"P/sHNL\":[\"Use this page to judge buttons, links, cards, forms, thread accents, and quiet surfaces before changing a theme globally.\"],\"PKhdhq\":[\"Links shown in header\"],\"PZ7HJ8\":[\"Blog Avatar\"],\"PxJ9W6\":[\"Generate Token\"],\"PxSKQl\":[[\"0\"],\" hidden \",[\"1\"]],\"Q2mGA7\":[\"Clear filter\"],\"QBqVyM\":[\"Home screen icon for iPhone and iPad shortcuts.\"],\"Qgbxdw\":[\"Designing a calmer default accent for Jant\"],\"Qn9Ao8\":[\"Circle tile\"],\"Qnrzvb\":[\"Active Tokens\"],\"QyDt3L\":[\"File uploaded.\"],\"R5CMuK\":[\"Jant looks best when the accent feels editorial. Buttons can stay sturdy, but inline emphasis should feel like a pen mark, not a dashboard highlight.\"],\"R6Z4LE\":[\"Download failed. Please try again.\"],\"R8AthW\":[\"Divider\"],\"R9Khdg\":[\"Auto\"],\"RAv3u7\":[\"Compare it against the theme controls\"],\"ROa4Ti\":[\"Interfaces for reading should guide the eye, not keep asking for attention.\"],\"RdmNnl\":[\"Browser tab\"],\"RfGczC\":[\"Square logo\"],\"Rj01Fz\":[\"Links\"],\"RxsRD6\":[\"Time Zone\"],\"S37om9\":[\"Included assets\"],\"S8NCfs\":[\"Save to drafts to edit and post at a later time.\"],\"SJGVAw\":[\"Feel editorial and slightly quieter.\"],\"SJmfuf\":[\"Site Name\"],\"SKZhW9\":[\"Token name\"],\"SaNhJE\":[\"feel deliberate instead of washed out.\"],\"SpTWH3\":[\"Download SVG\"],\"SvRuJt\":[\"Field Notes on Interface Tone\"],\"T/R+Qz\":[\"Primary\"],\"TNZKpI\":[\"Danger\"],\"TWt5I9\":[[\"hiddenCount\"],\" more \",[\"0\"]],\"TvaTxw\":[\"Doesn't appear in Latest. Still appears in collections you add it to.\"],\"Tz0i8g\":[\"Settings\"],\"UIMXHD\":[\"Remove Divider\"],\"UaZwcz\":[\"More options are available after you create it.\"],\"Uc5y7o\":[\"Choose the standard logo for websites, docs, directories, and editorial layouts.\"],\"Uj/btJ\":[\"Display avatar in my site header\"],\"UxKoFf\":[\"Navigation\"],\"V18SVO\":[\"Use the logo on light backgrounds.\"],\"V4WsyL\":[\"Add Link\"],\"V5pZwT\":[\"Search settings updated.\"],\"VCA6B2\":[\"These are actual feed components with real footers, summaries, and inline links. Use this section to judge whether the theme still feels calm once it is applied to realistic content.\"],\"VhMDMg\":[\"Change Password\"],\"Vn3jYy\":[\"Navigation items\"],\"VoZYGU\":[\"This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone.\"],\"WCOanD\":[\"This reference is useful because it treats links and citations as part of the reading rhythm. Keep that in mind while tuning the\"],\"WbIbzR\":[\"Checking link...\"],\"WcWS//\":[\"Download file\"],\"Weq9zb\":[\"General\"],\"WhsN3P\":[\"A good default accent in Jant should feel like editorial structure, not product branding. That means links, emphasis, and thread cues can be visible without turning the page into UI chrome.\"],\"Wi9i06\":[\"Follow each visitor's system preference.\"],\"Wn+/rH\":[\"Transparent square\"],\"WpXcBJ\":[\"Nothing here yet.\"],\"X+8FMk\":[\"Current password doesn't match. Try again.\"],\"X1G9eY\":[\"Navigation Preview\"],\"XU7b+L\":[\"Primary logo files\"],\"XV1mAn\":[\"Only visible when signed in.\"],\"XrnWzN\":[\"Published!\"],\"Y/F35r\":[\"Create a post with curl:\"],\"Y6hOOP\":[\"Signed in \",[\"0\"]],\"YF6zHf\":[\"Site settings updated.\"],\"YIix5Y\":[\"Search...\"],\"YSCkGF\":[\"Header RSS points to your %feed% feed (/feed). Change what /feed returns in General.\"],\"YUglt2\":[\"Generating a link...\"],\"YXiA6e\":[\"Primary button\"],\"Ygx3Yl\":[\"Small browser icon used in tabs and bookmarks.\"],\"Z6NwTi\":[\"Save as Draft\"],\"ZGs2so\":[\"Delete this collection permanently? Posts inside won't be removed.\"],\"ZQKLI1\":[\"Danger Zone\"],\"ZV5ykW\":[\"Download PNG\"],\"ZhhOwV\":[\"Quote\"],\"ZiooJI\":[\"API Tokens\"],\"Zm7Qb0\":[\"Backup & Restore Guide\"],\"ZmSeP+\":[\"Save to drafts?\"],\"ZmUkwN\":[\"Add custom link to navigation\"],\"a14mj8\":[\"Unknown device\"],\"a3LDKx\":[\"Security\"],\"a5j82I\":[\"No collections match that search. Try a different name.\"],\"aAIQg2\":[\"Appearance\"],\"aFkzVF\":[\"The slug of the target post or collection\"],\"aHTB7P\":[\"Supplementary content attached to your post\"],\"aMEyv0\":[\"Stay sturdy and readable.\"],\"aN6wx0\":[\"Nothing in Featured yet. Mark a post as featured to show it here.\"],\"aYpXKS\":[\"and checking whether the accent is guiding attention or pulling too hard.\"],\"af+9p6\":[\"Quiet metadata\"],\"alKG0+\":[\"Font Theme\"],\"an5hVd\":[\"Images\"],\"anibOb\":[\"About this blog\"],\"any7NR\":[\"Theming guide\"],\"auFlOr\":[\"Icons and previews\"],\"avuFKG\":[\"threads\"],\"b+/jO6\":[\"301 (Permanent)\"],\"bFpC86\":[\"Everything in one download\"],\"bHOiy1\":[\"Password changes are off in demo mode. Sign in with the shared demo credentials.\"],\"bHYIks\":[\"Sign Out\"],\"bfCbdi\":[\"Current post\"],\"bkBJmZ\":[\"This is useful as a color check because it puts the accent next to quotation styling, metadata, and a quieter explanatory paragraph. Compare it back to the\"],\"bmrL08\":[\"Demo mode hides sessions, password changes, and account deletion. Export still works.\"],\"bzSI52\":[\"Discard\"],\"c2JRUS\":[\"Generate automatically\"],\"c3MN2z\":[\"all available endpoints and request formats.\"],\"cFpd0L\":[\"Quiet Neutral\"],\"cIoW7X\":[\"Inline link\"],\"cSDy01\":[\"Custom CSS updated.\"],\"cTUByn\":[\"Newest first\"],\"cb7FR8\":[\"White logo on the Jant green square tile for platforms and layouts that expect a true edge-to-edge square.\"],\"ccaIM9\":[\"More links\"],\"cgmi4V\":[\"Delete Draft\"],\"clzoNp\":[\"Always show the dark version of the theme.\"],\"cnGeoo\":[\"Delete\"],\"d+F4pf\":[\"The image should sit quietly inside the article instead of feeling like a card preview.\"],\"d/o/BH\":[\"Couldn't publish. Saved as draft.\"],\"d3FRkY\":[\"Could not copy. Try again.\"],\"dD7NPy\":[\"Outline\"],\"dEgA5A\":[\"Cancel\"],\"dTXUY+\":[\"Confirm account deletion\"],\"dUsGbd\":[\"The right accent should disappear into the writing until you need it.\"],\"dXoieq\":[\"Summary\"],\"dYKrp3\":[\"Hidden from Latest\"],\"dbUuAj\":[\"Appears in Latest.\"],\"dk7TCH\":[\"Permanently delete all data and reset the blog\"],\"e/tSI5\":[\"Navigation order updated.\"],\"ePK91l\":[\"Edit\"],\"eWLklq\":[\"Quotes\"],\"ebQKK7\":[\"Site\"],\"egK+Yy\":[\"Bearer tokens for scripts and automation\"],\"ehj/zN\":[\"Redirect Type\"],\"eneWvv\":[\"Draft\"],\"f+m8jj\":[\"Feed URL copied.\"],\"f4MAoA\":[\"Some uploads failed. Saved as draft.\"],\"f5s9EI\":[\"Press N to write\"],\"f6Hub0\":[\"Sort\"],\"f8fH8W\":[\"Design\"],\"fFDkGR\":[\"Sessions, password, export\"],\"fKrDxS\":[\"Brand tile\"],\"fMPkxb\":[\"Show more\"],\"fqDzSu\":[\"Rate\"],\"fttd2R\":[\"My Collection\"],\"gFdWl+\":[\"A long-form article sample for checking the default palette in a true reading context.\"],\"gNKz6Z\":[\"Collection deleted.\"],\"gXH9r/\":[\"Open raw PNG\"],\"gj52YE\":[\"This collection is empty. Add posts from the editor.\"],\"gpaPhA\":[\"Helps screen readers describe the image\"],\"gtQsRO\":[\"Create Custom URL\"],\"h5RcXU\":[\"Post hidden\"],\"hBO/y4\":[\"Security token expired. Refresh the page and try again.\"],\"hDRU5q\":[\"Found \",[\"0\"],\" results\"],\"hGmyDl\":[\"Tokens let you access the API from scripts, shortcuts, and other tools without signing in.\"],\"hLlWo5\":[\"A few simple rules.\"],\"hXzOVo\":[\"Next\"],\"he3ygx\":[\"Copy\"],\"heSQoS\":[\"Paste a URL...\"],\"i0qMbr\":[\"Home\"],\"i0vDGK\":[\"Sort Order\"],\"i5+Y7d\":[\"Download the official Jant logo, icons, and preview files.\"],\"i6nDCI\":[\"Choose a new password.\"],\"iEUzMn\":[\"system\"],\"iG7KNr\":[\"Logo\"],\"iH8pgl\":[\"Back\"],\"iVOMRi\":[\"Home settings updated.\"],\"icZdbX\":[\"Themes that have not been assigned to a named group yet.\"],\"ilSmIt\":[\"Hard edge\"],\"iu7tUI\":[\"Breadcrumb\"],\"j4VrG6\":[\"Download Export ZIP\"],\"j5nQL2\":[\"e.g. iOS Shortcuts\"],\"jAXE5p\":[\"Reverse logo\"],\"jAqB/k\":[\"Post privately\"],\"jO813m\":[\"More Palettes\"],\"jQflRT\":[\"This uses the real single-post detail rendering with a longer article, inline image, tables, lists, quotes, and code. The content column stays at the same width as the live site.\"],\"jUV7CU\":[\"Upload Avatar\"],\"jVUmOK\":[\"Markdown supported\"],\"jd+8Mm\":[\"Social preview image\"],\"jfaqmf\":[\"When off, the homepage opens with your latest posts.\"],\"jgBjXJ\":[\"Revoke this token? Any scripts using it will stop working.\"],\"ji7oVU\":[\"Edit post\"],\"jpctdh\":[\"View\"],\"jvtP25\":[\"In thread →\"],\"jvyYZG\":[\"What's on your mind...\"],\"k1ifdL\":[\"Processing...\"],\"k3Iw35\":[\"Switch to the white logo when the standard green version would lose contrast.\"],\"kMXclu\":[\"Download a site export\"],\"kNiQp6\":[\"Pinned\"],\"kPMIr+\":[\"Give it a title...\"],\"kVQs7s\":[\"Fine-grained styling overrides\"],\"ke1gWS\":[\"Custom URLs\"],\"kfcRb0\":[\"Avatar\"],\"kj6ppi\":[\"entry\"],\"kr39oD\":[\"No collections yet. Start one to organize posts by topic.\"],\"kzvWob\":[\"Link to the post archive\"],\"lLW3vJ\":[\"Target Slug\"],\"laT1IJ\":[\"iOS home screen\"],\"lb+Xwx\":[\"Custom link\"],\"m16xKo\":[\"Add\"],\"mDyWuM\":[\"Warm Editorial\"],\"mKT7g0\":[\"Text attachment\"],\"mSNmrX\":[\"List posts:\"],\"mc/vLq\":[\"This link is already in use. Choose something else.\"],\"n1ekoW\":[\"Sign In\"],\"n6QD94\":[\"Oldest first\"],\"nFukaP\":[\"Wrong email or password. Check your credentials and try again.\"],\"nK07ni\":[\"Choose a typographic direction for your site. Each theme changes both the font pairing and the reading rhythm.\"],\"nV6twc\":[\"Organize\"],\"nd8Puv\":[\"White logo on the Jant green circle for profile images, badges, and other round placements where you want a ready-made asset.\"],\"ndrEYW\":[\"When the accent is slightly warmer and less literal, the whole page feels more like a writing space and less like product UI.\"],\"o/vNDE\":[\"lets you override any theme variable.\"],\"o21Y+P\":[\"entries\"],\"oKOOsY\":[\"Color Theme\"],\"oSiRP0\":[\"System links\"],\"ode0+L\":[\"Theme sample\"],\"ovBPCi\":[\"Default\"],\"p1Z67P\":[\"When primary is too rigid, the whole page starts reading like product UI instead of writing space.\"],\"p2/GCq\":[\"Confirm Password\"],\"pB0OKE\":[\"New Divider\"],\"pBHx39\":[\"Dark backgrounds\"],\"pVrU5x\":[\"If this page feels too branded, the first place to soften is the default theme’s site accent, not the border or body text.\"],\"pZq3aX\":[\"Upload failed. Please try again.\"],\"psoxDF\":[\"That font theme isn't available. Pick another one.\"],\"pvnfJD\":[\"Dark\"],\"q+hNag\":[\"Collection\"],\"q5YRzz\":[\"Color check\"],\"q8RviX\":[\"Titled\"],\"qiN9NB\":[\"Surface\"],\"qt89I8\":[\"Draft saved.\"],\"quvfGs\":[\"instead of judging it as an isolated swatch.\"],\"rA2TFI\":[\"Switch the palette and mode without opening settings or changing the active site theme.\"],\"rFmBG3\":[\"Color theme\"],\"rdUucN\":[\"Preview\"],\"rlonmB\":[\"Couldn't delete. Try again in a moment.\"],\"s8G5Or\":[\"This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue.\"],\"s9gHf5\":[\"your-post-link\"],\"sER+bs\":[\"Files\"],\"satWc6\":[\"Main RSS feed\"],\"sgr2wQ\":[\"collection\"],\"slujBW\":[\"Use lowercase letters, numbers, and hyphens only.\"],\"sxkWRg\":[\"Advanced\"],\"syiAKf\":[\"note treatment\"],\"t/YqKh\":[\"Remove\"],\"t42hIC\":[\"Everything most people need is in one ZIP.\"],\"tCctex\":[\"The brand pack includes SVG logos, a transparent square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and the default social preview image.\"],\"tKlWWY\":[\"Emoji\"],\"tSWVu5\":[\"Published on \",[\"date\"],\" at \",[\"time\"]],\"tbSs3k\":[\"Distinctive Mood\"],\"tfDRzk\":[\"Save\"],\"u1VTd3\":[\"Palette, surface tone, and overall mood\"],\"u3wRF+\":[\"Published\"],\"u6KOjV\":[\"Want more control?\"],\"ui6aMF\":[\"These devices are currently signed in to your account. Revoke any session you don't recognize.\"],\"uowbPn\":[\"Remove attachment\"],\"v3E8iS\":[\"A practical checklist\"],\"vBEKwo\":[\"Manage this site's active sessions here. Password and hosted access are managed through \",[\"providerLabel\"],\".\"],\"vRldcl\":[\"Typography choices and reading texture\"],\"vSJd18\":[\"Video\"],\"vSYKYI\":[\"Main feed\"],\"vTuib7\":[\"This controls what /feed returns.\"],\"vXCC6J\":[\"Something doesn't look right. Check the form and try again.\"],\"vXIe7J\":[\"Language\"],\"vdFnYM\":[\"Reset link\"],\"vgpfCi\":[\"Save draft\"],\"vmQmHx\":[\"Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements.\"],\"vpSPA1\":[\"Auth secret is missing. Check your environment variables.\"],\"vzU4k9\":[\"New Collection\"],\"vzX5FB\":[\"Delete Account\"],\"w0Emel\":[\"Suggested link\"],\"w6mlns\":[\"Article detail page\"],\"w8Rv8T\":[\"Label is required\"],\"wJ+GRy\":[\"All visibility\"],\"wL3cK8\":[\"Latest\"],\"wPmHHc\":[\"Quiet surfaces let writing lead.\"],\"wc+17X\":[\"/* Your custom CSS here */\"],\"wja8aL\":[\"Untitled\"],\"wlnK1t\":[\"A single ZIP with the main logo, reverse logo, square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and social preview image.\"],\"wm3Zlr\":[\"All years\"],\"wuLtXn\":[\"No active sessions right now. Signed-in devices show up here.\"],\"xCWek4\":[\"File storage isn't set up. Check your server config.\"],\"xVrkxi\":[\"quiet design\"],\"xVvw1i\":[\"This reset link is no longer valid. Request a new one to continue.\"],\"xYilR2\":[\"Media\"],\"xbN8dp\":[\"Soft color should still carry a clear reading rhythm.\"],\"xeiujy\":[\"Text\"],\"xhTx3y\":[\"Choose the standard logo for most placements and the reverse logo when you need more contrast.\"],\"y28hnO\":[\"Post\"],\"y2o/Y0\":[\"This Link Has Expired\"],\"y8Md/V\":[\"Language and time updated.\"],\"yNCqOt\":[\"Latest feed\"],\"yQ2kGp\":[\"Load more\"],\"yQ3kNF\":[\"Type the following phrase to confirm:\"],\"ycM1Xg\":[\"No results. Try different keywords.\"],\"yjjCV8\":[\"Fixed feed URLs\"],\"yjkELF\":[\"Confirm New Password\"],\"ylo1I0\":[\"Last used \",[\"0\"]],\"ynMAhG\":[\"Default logo\"],\"yzF66j\":[\"Link\"],\"z8ajIE\":[\"Found 1 result\"],\"zBFr9G\":[\"Paste a long article, AI response, or any text...\\n\\nMarkdown formatting will be preserved.\"],\"zJDAbh\":[\"Don't save\"],\"zXH2jX\":[\"Language & Time\"],\"zcDmsG\":[\"Featured posts\"],\"zoK+eO\":[\"Add a title before posting this link.\"],\"zwBp5t\":[\"Private\"],\"zxRN6H\":[\"Header links, home feed, and overflow menu\"]}")as Messages;
|
|
@@ -517,6 +517,8 @@ msgstr "清除筛选"
|
|
|
517
517
|
#. @context: Singular collection count label
|
|
518
518
|
#. @context: Singular collection count label
|
|
519
519
|
#. @context: Singular collection count label
|
|
520
|
+
#. @context: Singular collection count label on an aggregate collection page
|
|
521
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
520
522
|
#: src/ui/pages/CollectionsPage.tsx
|
|
521
523
|
#: src/ui/shared/CollectionsManager.tsx
|
|
522
524
|
#: src/ui/shared/CollectionsManager.tsx
|
|
@@ -560,6 +562,8 @@ msgstr "合集已保存。"
|
|
|
560
562
|
#. @context: Plural collection count label
|
|
561
563
|
#. @context: Plural collection count label
|
|
562
564
|
#. @context: Plural collection count label
|
|
565
|
+
#. @context: Plural collection count label on an aggregate collection page
|
|
566
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
563
567
|
#: src/ui/pages/CollectionsPage.tsx
|
|
564
568
|
#: src/ui/shared/CollectionsManager.tsx
|
|
565
569
|
#: src/ui/shared/CollectionsManager.tsx
|
|
@@ -1436,6 +1440,11 @@ msgstr "在线程中 →"
|
|
|
1436
1440
|
msgid "Included assets"
|
|
1437
1441
|
msgstr "包含资源"
|
|
1438
1442
|
|
|
1443
|
+
#. @context: Label above the included collections list on an aggregate collection page
|
|
1444
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
1445
|
+
msgid "Includes"
|
|
1446
|
+
msgstr ""
|
|
1447
|
+
|
|
1439
1448
|
#. @context: Site accent sample badge
|
|
1440
1449
|
#: src/ui/pages/ThemeSamplePage.tsx
|
|
1441
1450
|
msgid "Inline emphasis"
|
|
@@ -1913,6 +1922,11 @@ msgstr "笔记"
|
|
|
1913
1922
|
msgid "Nothing here yet."
|
|
1914
1923
|
msgstr "这里还没有内容。"
|
|
1915
1924
|
|
|
1925
|
+
#. @context: Empty state message on an aggregate collection page
|
|
1926
|
+
#: src/ui/pages/CollectionPage.tsx
|
|
1927
|
+
msgid "Nothing here yet. Add posts to one of these collections to fill this view."
|
|
1928
|
+
msgstr ""
|
|
1929
|
+
|
|
1916
1930
|
#. @context: Empty state message on featured page
|
|
1917
1931
|
#: src/ui/pages/FeaturedPage.tsx
|
|
1918
1932
|
msgid "Nothing in Featured yet. Mark a post as featured to show it here."
|