@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.
Files changed (39) hide show
  1. package/README.md +1 -0
  2. package/dist/{app-BfoG98VD.js → app-CAtsuLLh.js} +306 -72
  3. package/dist/client/_assets/client-auth.js +77 -68
  4. package/dist/client/_assets/client.css +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/node.js +2 -2
  7. package/package.json +1 -1
  8. package/src/app.tsx +5 -0
  9. package/src/client/components/__tests__/jant-collection-sidebar.test.ts +56 -0
  10. package/src/client/components/jant-collection-form.ts +2 -0
  11. package/src/client/components/jant-collection-sidebar.ts +19 -6
  12. package/src/i18n/locales/en.po +14 -0
  13. package/src/i18n/locales/en.ts +1 -1
  14. package/src/i18n/locales/zh-Hans.po +14 -0
  15. package/src/i18n/locales/zh-Hans.ts +1 -1
  16. package/src/i18n/locales/zh-Hant.po +14 -0
  17. package/src/i18n/locales/zh-Hant.ts +1 -1
  18. package/src/lib/__tests__/collection-groups.test.ts +63 -0
  19. package/src/lib/__tests__/constants.test.ts +23 -1
  20. package/src/lib/__tests__/schemas.test.ts +18 -0
  21. package/src/lib/__tests__/slug-format.test.ts +8 -0
  22. package/src/lib/__tests__/timeline.test.ts +84 -2
  23. package/src/lib/collection-groups.ts +69 -0
  24. package/src/lib/constants.ts +20 -0
  25. package/src/lib/schemas.ts +8 -1
  26. package/src/lib/slug-format.ts +8 -0
  27. package/src/lib/timeline.ts +30 -23
  28. package/src/routes/pages/collection.tsx +89 -37
  29. package/src/runtime/__tests__/readiness.test.ts +89 -0
  30. package/src/runtime/readiness.ts +129 -0
  31. package/src/services/__tests__/collection.test.ts +45 -0
  32. package/src/services/__tests__/post-timeline.test.ts +58 -0
  33. package/src/services/__tests__/post.test.ts +35 -1
  34. package/src/services/collection.ts +55 -0
  35. package/src/services/post.ts +121 -12
  36. package/src/styles/ui.css +17 -0
  37. package/src/types/props.ts +2 -1
  38. package/src/ui/pages/CollectionPage.tsx +84 -17
  39. package/src/ui/shared/CollectionDirectory.tsx +18 -4
@@ -1858,13 +1858,13 @@ var Hono = class extends Hono$1 {
1858
1858
  }
1859
1859
  //#endregion
1860
1860
  //#region src/i18n/locales/en.ts
1861
- var messages$2 = 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\"]}");
1861
+ var messages$2 = 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\"]}");
1862
1862
  //#endregion
1863
1863
  //#region src/i18n/locales/zh-Hans.ts
1864
- var messages$1 = JSON.parse("{\"+2aYLu\":[\"页首链接数量限制已更新。\"],\"+4u2g6\":[\"现成的 1:1 PNG,适用于演示文稿、样机、名录及其他方形展示场景。\"],\"+AXdXp\":[\"标签和 URL 为必填项\"],\"+DPYOZ\":[\"添加指向主 RSS feed 的链接。可在通用设置中修改 /feed 的输出内容。\"],\"+G8qqW\":[\"合集已保存。\"],\"+IJm1Z\":[\"柔和\"],\"+Irvp3\":[\"本页的所有内容均可直接用于文章、发布帖、目录和产品报道。\"],\"+Qaboy\":[\"网站图标\"],\"+fWu2O\":[\"更平静、更温暖的强调色,让默认主题更安静,也更有分寸。\"],\"+h8YKs\":[\"低干扰配色,带来更干净、更平静的阅读节奏。\"],\"+siMqD\":[\"日志\"],\"+zy2Nq\":[\"类型\"],\"/3H2/s\":[\"这个托管站点通过 \",[\"providerLabel\"],\" 登录。在那里管理密码和托管站点访问权限。\"],\"/DFKdU\":[\"输入引用...\"],\"/PfPLc\":[\"标签(可选)\"],\"/PoNoq\":[\"编辑链接\"],\"/Ui2OV\":[\"在深色背景上使用反白徽标。\"],\"/Ybds4\":[\"用于网站、文档、媒体报道和编辑版式的主要 Jant 标志.\"],\"/rTz0M\":[\"音频\"],\"0+tKwI\":[\"导出与演示限制\"],\"0EcUWz\":[\"要放弃更改吗?\"],\"0Lj7or\":[\"保存文本附件?\"],\"0OGSSc\":[\"头像显示已更新。\"],\"0UzCUX\":[\"更新您用于登录的密码\"],\"0XDp7X\":[\"链接应清晰可读,不应在页面上发光。\"],\"0ieXE7\":[\"评分最高\"],\"14BEca\":[\"了解原因\"],\"15++NM\":[\"行内强调\"],\"1DBGsz\":[\"笔记\"],\"1F6Mzc\":[\"还没有导航项目。添加链接或在下方启用系统项目。\"],\"1NeeWI\":[\"用于头像、应用、浏览器和共享链接的方形资源\"],\"1THMr2\":[\"品牌包\"],\"1njn7W\":[\"浅色\"],\"2B7HLH\":[\"新建帖子\"],\"2C7mSG\":[\"合集链接\"],\"2DoBvq\":[\"订阅源\"],\"2ETv7R\":[\"在真实阅读场景中调整颜色\"],\"2HbvFp\":[\"真实文章组件\"],\"2MXb5X\":[\"克制设计手记\"],\"2PTjMB\":[\"我想删除 \",[\"siteName\"]],\"2cFU6q\":[\"网站页脚\"],\"2koDOQ\":[\"帖子串 强调色\"],\"2q/Q7x\":[\"可见性\"],\"2sCqzD\":[\"用于网站、文档、文章和其他浅色或中性色背景.\"],\"3Cw1AI\":[\"添加合集\"],\"3VrybB\":[\"重定向\"],\"3Yvsaz\":[\"302 (临时)\"],\"3lJk5u\":[\"保持图稿不变。\"],\"3mdteM\":[\"再判断这个强调色是否带上了过多产品化的气息。\"],\"3n0zbB\":[\"演示模式下不提供会话管理。请直接使用共享演示会话。\"],\"3neqtf\":[\"帖子串强调色\"],\"3qkggm\":[\"全屏\"],\"3vMdv3\":[\"这个链接是保留地址,请换一个。\"],\"3wKq0C\":[\"保存失败。请稍后再试。\"],\"3xi01/\":[\"最后查看页脚的元数据,确保强调色不会与排版产生冲突.\"],\"47iMgt\":[\"值得借鉴的编辑界面\"],\"49Bsal\":[\"订阅源设置已更新。\"],\"4D09NB\":[\"链接到你的合集页\"],\"4J/OYU\":[\"合集已创建。\"],\"4Jge8E\":[\"活动会话\"],\"4KIa+q\":[\"导出已下载。\"],\"4cEClj\":[\"会话\"],\"4eiXo+\":[\"留空则自动生成。\"],\"4pV0kE\":[\"头像可用\"],\"4zGJ5E\":[\"永久删除账号\"],\"5VQnR3\":[\"当你需要一个不会变化的 feed 链接时,使用这些地址。\"],\"5lWFkC\":[\"登录\"],\"5pAjd8\":[\"强调色应当有存在感,但不要太刺眼。\"],\"5sEkBi\":[\"打开原始资源\"],\"69OXZB\":[\"删除托管站点\"],\"6ArdBh\":[\"将精选帖子用作 /feed 的内容。\"],\"6DjeBT\":[\"演示站点会始终对搜索引擎隐藏。\"],\"6FFB7q\":[\"将最新公开帖子用作 /feed 的内容。\"],\"6K1Vef\":[\"永久删除此博客?此操作不可恢复。\"],\"6UTABI\":[\"合集排序已更新。\"],\"6V3Ea3\":[\"已复制\"],\"6Y4BBO\":[\"以温暖纸色调呈现的抽象社论布局\"],\"6cjUDB\":[\"品牌素材\"],\"6lGV3K\":[\"收起\"],\"6p0JeQ\":[\"以确保两者仍然感觉属于同一产品。\"],\"6rhkhp\":[\"首页视图已更新。\"],\"6sVyMq\":[\"先补上 URL,再发布这条链接。\"],\"6wixKm\":[\"下载一个 Zola 站点 ZIP,可用于静态发布或导入另一套 Jant。\"],\"6yCv8j\":[\"保存对文本附件的更改、不保存,或继续编辑。\"],\"72fkwh\":[\"将精选设为首页视图\"],\"74kJNs\":[\"查看这个帖子串里更早的笔记\"],\"7DvUqV\":[\"从上到下阅读页面,不要查看色板。\"],\"7FaY4u\":[\"用法\"],\"7G9YLi\":[\"允许搜索引擎收录我的网站\"],\"7MZxzw\":[\"密码已更改.\"],\"7aris6\":[\"3月15日\"],\"7d1a0d\":[\"公开\"],\"7hYXO0\":[\"在深色背景、有图像背景的表面,以及任何会让绿色标志失去对比度的位置使用此标志。\"],\"7kMW54\":[\"打开原始 SVG\"],\"7nGhhM\":[\"在想什么?\"],\"7vhWI8\":[\"新密码\"],\"7z05Pf\":[\"Open the hosted site controls in \",[\"providerLabel\"],\" to cancel billing or permanently delete this site.\"],\"81nFIS\":[\"密码不匹配。请确保两次输入相同。\"],\"87a/t/\":[\"标签\"],\"89Upyo\":[\"该主题不可用。请选择另一个。\"],\"8BfEpW\":[\"托管账号\"],\"8Btgys\":[\"草稿已删除.\"],\"8U2Z7f\":[\"新建自定义 URL\"],\"8WX0J+\":[\"你的想法 (可选)\"],\"8ZsakT\":[\"密码\"],\"8bpHix\":[\"无法创建您的账户. 请检查详细信息并重试.\"],\"8eC78s\":[\"更柔和的强调色会让\"],\"8tM8+a\":[\"保存为草稿\"],\"9+vGLh\":[\"自定义 CSS\"],\"90IRF2\":[\"这篇文章想回答一个具体问题:当默认强调色要撑起一整段阅读体验时,它是否依然足够平静?\"],\"9SHZas\":[\"登录时显示“设置”,未登录时显示“登录”\"],\"9T7Cwm\":[\"重定向、自定义路径与 URL 控制\"],\"9aUyym\":[\"查看您在哪些设备登录并撤销旧会话\"],\"9aloPG\":[\"参考\"],\"9dr9Nh\":[\"打开外部链接\"],\"A1D8Yt\":[\"强调色该承担什么\"],\"A1taO8\":[\"搜索\"],\"A2Vg/u\":[\"导航和阅读状态\"],\"Ac5qDn\":[\"拖动合集和分隔线,调整为你想要的顺序。\"],\"AeXO77\":[\"账户\"],\"AjHkcv\":[\"用于社交分享和链接展开的默认预览图片。\"],\"AnY+O9\":[\"在首页底部显示 \\\"Build with Jant\\\"\"],\"ApZDMk\":[\"此图用于您的 favicon 和 apple-touch-icon。为获得最佳效果,请上传至少 512×512 像素、带纯色背景的方形 PNG 图像。\"],\"AyHO4m\":[\"这个合集是关于什么的?\"],\"B1FFMj\":[\"下载品牌包\"],\"B495Gs\":[\"归档\"],\"B4ESok\":[\"API 文档\"],\"BdjLtf\":[\"个帖子串\"],\"Bmaby2\":[\"所有格式\"],\"C+9df9\":[\"引用或突出显示的段落应该像注释,而不是警告.\"],\"C0/57J\":[\"这是合集链接的最后一段。\"],\"CAh1km\":[\"个合集\"],\"D4em/+\":[\"品牌标志\"],\"DCKkhU\":[\"当前密码\"],\"DHhJ7s\":[\"上一页\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 中管理密码和托管站点访问权限\"],\"DOx286\":[\"草稿已恢复.\"],\"DPfwMq\":[\"完成\"],\"DYlMYF\":[\"内置背景\"],\"DoJzLz\":[\"合集\"],\"Du2B9f\":[\"默认强调色应以可读性为先。先将其与\"],\"DxwUcG\":[\"先将调色板作为内容读取\"],\"E3NcGH\":[\"方形徽标 PNG\"],\"ECrbov\":[\"氛围感更强的配色,时间、地点和情绪感更鲜明。\"],\"EEYbdt\":[\"发布\"],\"EGwzOK\":[\"完成设置\"],\"EHWwm1\":[\"默认的强调应给人手写感,而非品牌化。\"],\"EO3I6h\":[\"上传失败。请稍后再试。\"],\"EQNPYo\":[\"精选于 \",[\"date\"],\" \",[\"time\"]],\"EQtz4D\":[\"打开几个链接,检查它们是否仍然像页面原生的一部分\"],\"EUPyPZ\":[\"以及另外 \",[\"count\"],\" 个\"],\"EetoJL\":[\"引导视线而不主导布局.\"],\"Eiv3bO\":[\"按钮可以保持稳重,但链接、帖子串标记和细微的强调应该更像纸上的墨迹,而不是仪表盘的装饰\"],\"EmQw8O\":[\"如果这篇文章仍然让你想继续阅读,那么配色可能已经很接近了。\"],\"Enslfm\":[\"目标地址\"],\"EsJdRp\":[\"保存主题\"],\"FESYvt\":[\"为视力受限的人描述此图像...\"],\"FEr96N\":[\"主题\"],\"FGySZL\":[\"默认强调色在像钢笔下划线那样呈现时效果最佳。将其与\"],\"FM+KeU\":[\"还没有草稿。保存草稿后会在此找到它。\"],\"FMgjDM\":[\"切换内置导航项。启用的项会与链接一起显示在您的导航中。\"],\"Fdv5k7\":[\"调整时要注意什么\"],\"FkMol5\":[\"精选\"],\"Fxf4jq\":[\"描述(可选)\"],\"G0qJsQ\":[\"安全令牌缺失。请刷新页面后重试。\"],\"G2u/aQ\":[\"下载官方 Jant 徽标、图标和预览素材。\"],\"GMMWcy\":[\"名称、元数据、语言和搜索默认设置\"],\"GX2VMa\":[\"创建您的管理员账户。\"],\"GXsAby\":[\"撤销\"],\"GiRWtR\":[\"为什么默认强调色应该像书写,而不是品牌标识\"],\"GlEzsR\":[\"供搜索引擎和订阅源阅读器使用的简短简介。仅限纯文本。\"],\"GorKul\":[\"欢迎使用 Jant\"],\"GxkJXS\":[\"上传中...\"],\"GzTVPx\":[\"导出静态站点\"],\"H29JXm\":[\"+ 替代文本\"],\"H4lgRd\":[\"未设置身份验证。请检查您的服务器配置。\"],\"HFPGej\":[\"没有符合这些筛选条件的帖子串。调整筛选条件,或清除所有筛选。\"],\"HG79RB\":[\"以私密方式发布\"],\"HKH+W+\":[\"数据\"],\"HNEHJP\":[\"演示凭证已预填 — 点击 登录 继续.\"],\"HbAIQc\":[\"用于检查语气是否偏向编辑性而非宣传性的参考链接\"],\"Hp1l6f\":[\"当前\"],\"Ht1V3q\":[\"也因为这个原因,行内代码应该保持中性。像 theme.siteAccent = soften(green, 12%) 这样的内容,不该突然变成页面里最吵的一部分。\"],\"HxlY7t\":[\"修改后,订阅 /feed 的用户会收到不同内容。\"],\"I22eN0\":[\"共享链接\"],\"I6gXOa\":[\"路径\"],\"I6zLrz\":[\"当您需要透明的方形徽标、有内置背景的带形状图块、浏览器图标或默认预览图像时,请使用这些。\"],\"ICsA6P\":[\"你有未保存的更改\"],\"ID38tA\":[\"演示模式下不提供删除账户。共享演示会单独重置。\"],\"IF9tPu\":[\"何时该用站点导出、数据库备份和恢复演练。\"],\"IUX7p+\":[\"白色徽标置于 Jant 绿色圆角方块上,适用于应用图标原型、触控图标、目录列表以及其他需呈现更柔和感觉的方形位置。\"],\"IW5PBo\":[\"复制令牌\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"回复\"],\"J4tAHl\":[\"即使强调变弱,标题也应保持其层次结构。\"],\"J6bLeg\":[\"添加指向任意 URL 的自定义链接\"],\"JL7LF5\":[\"可用的 CSS 变量、数据属性和示例.\"],\"JTviaO\":[\"管理登录安全、导出和不可逆操作.\"],\"JYj5R2\":[\"浏览文件\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"现在复制你的令牌 — 它将不再显示。\"],\"JuN5GC\":[\"未选择文件。请选择要上传的文件。\"],\"KOqvXP\":[\"请勿为标志重新着色、拉伸、旋转、描边或添加效果.\"],\"KbS2K9\":[\"重置密码\"],\"KdSsVl\":[\"作者(可选)\"],\"Khu3PV\":[\"发布设置\"],\"KiJn9B\":[\"笔记\"],\"KlZ+t+\":[\"%name% + 另有 %count% 个\"],\"KsvRin\":[\"从 Latest 隐藏\"],\"KuCcWu\":[\"显示在所有文章和页面的底部。支持 Markdown。\"],\"KzmC5L\":[\"控件\"],\"L0gres\":[\"其余项目将被收进 ··· 菜单\"],\"L4t4/q\":[\"3 月 14 日\"],\"L7svJg\":[\"阅读\"],\"Lbkbwy\":[\"用于在更柔和、引用密集的内容上评估强调色的引用卡片。\"],\"LcvzvX\":[\"点击重试\"],\"LdyooL\":[\"链接\"],\"LkA8jz\":[\"添加替代文本\"],\"LxRg6f\":[\"实时主题控制\"],\"M/haSd\":[\"始终显示主题的浅色版本。\"],\"M2kIWU\":[\"字体主题\"],\"M4tzVU\":[\"最新帖子\"],\"M6CbAU\":[\"展开/收起编辑面板\"],\"M8kJqa\":[\"草稿\"],\"MHrjPM\":[\"标题\"],\"MILa7n\":[\"方形图块\"],\"MSc/Yq\":[\"要发布您的更改,还是放弃它们?\"],\"MXSt4t\":[\"创建于 \",[\"0\"]],\"Mc7+6G\":[\"请输入以 http://、https:// 或 mailto: 开头的有效 URL。\"],\"MdMyne\":[\"来源链接 (可选)\"],\"MiMY3Q\":[\"Apple Touch 图标\"],\"MiyoI7\":[\"默认笔记示例\"],\"MqghUt\":[\"搜索帖子...\"],\"MrvdXK\":[\"以纸感为先的配色,界面更温暖,也更有手写感。\"],\"MtENL9\":[\"调整网站的外观、可读性和运行方式。\"],\"Myqkib\":[\"创建一个合集即可开始。\"],\"N/8NPV\":[\"删除之前先下载站点导出。删除后将无法恢复这个账户。\"],\"N7UNHY\":[\"Featured feed\"],\"N8UzTV\":[\"条回复\"],\"NAFbuE\":[\"搜索片段\"],\"NH9Z1R\":[\"从这里开始\"],\"NHnUHF\":[\"网站图标及页眉中的个人头像\"],\"NU2Fqi\":[\"保存 CSS\"],\"NhHXCr\":[\"自定义 URL 路径(不含前导斜杠)\"],\"Nldjdr\":[\"还没有自定义 URL。创建一个以便为文章添加重定向或自定义路径。\"],\"NqsRbb\":[\"Jant 徽标\"],\"O1367B\":[\"所有合集\"],\"O3oNi5\":[\"电子邮箱\"],\"OEdMhi\":[\"最合适的默认颜色,是那种只有在阅读一段时间后才会注意到的颜色。\"],\"OEt/to\":[\"使用指南\"],\"OJxdgi\":[\"把这个链接控制在 200 个字符以内。\"],\"OSJXFg\":[\"应用到整个站点,包括管理页面。先选择配色,再决定是跟随系统还是固定模式。\"],\"OaoJcz\":[\"社交预览\"],\"OmfDbR\":[\"网站强调色\"],\"Ovks1h\":[\"较柔和的蓝色感觉更像墨水,而不是产品镀铬的光泽。\"],\"P/sHNL\":[\"在全局更改主题之前,使用此页面来评估按钮、链接、卡片、表单、帖子串强调和低调表面。\"],\"PKhdhq\":[\"页眉显示的链接数\"],\"PZ7HJ8\":[\"博客头像\"],\"PxJ9W6\":[\"生成 API 令牌\"],\"PxSKQl\":[\"隐藏了 \",[\"0\"],\" 条\"],\"Q2mGA7\":[\"清除筛选\"],\"QBqVyM\":[\"用于 iPhone 和 iPad 快捷方式的主屏幕图标。\"],\"Qgbxdw\":[\"为 Jant 设计更平静的默认强调色\"],\"Qn9Ao8\":[\"圆形图块\"],\"Qnrzvb\":[\"有效 API 令牌\"],\"QyDt3L\":[\"文件已上传.\"],\"R5CMuK\":[\"Jant 在强调采用编辑式风格时效果最好。按钮可以保持稳重,但行内强调应该像笔迹,而不是仪表盘式的高亮。\"],\"R6Z4LE\":[\"下载失败。请重试。\"],\"R8AthW\":[\"分隔线\"],\"R9Khdg\":[\"自动\"],\"RAv3u7\":[\"与主题控件比较\"],\"ROa4Ti\":[\"供阅读的界面应该引导视线,而不是不断争取注意力。\"],\"RdmNnl\":[\"浏览器标签页\"],\"RfGczC\":[\"方形徽标\"],\"Rj01Fz\":[\"链接\"],\"RxsRD6\":[\"时区\"],\"S37om9\":[\"包含资源\"],\"S8NCfs\":[\"保存到草稿,以便稍后编辑并发布。\"],\"SJGVAw\":[\"具有编辑风格,略显低调。\"],\"SJmfuf\":[\"站点名称\"],\"SKZhW9\":[\"令牌名称\"],\"SaNhJE\":[\"显得更有目的性,而不是暗淡无光。\"],\"SpTWH3\":[\"下载 SVG\"],\"SvRuJt\":[\"关于界面语气的现场笔记\"],\"T/R+Qz\":[\"主色\"],\"TNZKpI\":[\"危险\"],\"TWt5I9\":[[\"hiddenCount\"],\" 条隐藏的 \",[\"0\"]],\"TvaTxw\":[\"不会出现在 Latest 中,但仍会出现在你添加到的 Collection 里。\"],\"Tz0i8g\":[\"设置\"],\"UIMXHD\":[\"删除分隔线\"],\"UaZwcz\":[\"创建后还可设置更多选项。\"],\"Uc5y7o\":[\"为网站、文档、名录和编辑版面选择标准徽标.\"],\"Uj/btJ\":[\"在我的站点页眉显示头像\"],\"UxKoFf\":[\"导航\"],\"V18SVO\":[\"在浅色背景上使用徽标。\"],\"V4WsyL\":[\"添加链接\"],\"V5pZwT\":[\"搜索设置已更新。\"],\"VCA6B2\":[\"这些是真实的信息流组件,带有真实的页脚、摘要和内联链接。使用此部分来判断当主题应用到真实内容后是否仍然显得平静。\"],\"VhMDMg\":[\"修改密码\"],\"Vn3jYy\":[\"导航项\"],\"VoZYGU\":[\"这将永久删除您所有的数据 — 文章、媒体、合集、设置和您的账户。您的博客将被重置为初始设置状态。此操作不可撤销。\"],\"WCOanD\":[\"此参考资料很有用,因为它将链接和引文视为阅读节奏的一部分。在调整时请记住这一点 the\"],\"WbIbzR\":[\"正在检查链接...\"],\"WcWS//\":[\"下载文件\"],\"Weq9zb\":[\"通用\"],\"WhsN3P\":[\"Jant 中合适的默认强调应该更像编辑结构,而不是产品品牌化。这意味着链接、强调和帖子串提示可以可见,同时不会把页面变成界面装饰\"],\"Wi9i06\":[\"跟随每位访问者的系统偏好。\"],\"Wn+/rH\":[\"透明正方形\"],\"WpXcBJ\":[\"这里还没有内容。\"],\"X+8FMk\":[\"当前密码不匹配。请重试。\"],\"X1G9eY\":[\"导航预览\"],\"XU7b+L\":[\"主要徽标文件\"],\"XV1mAn\":[\"仅登录后可见。\"],\"XrnWzN\":[\"已发布!\"],\"Y/F35r\":[\"使用 curl 创建帖子:\"],\"Y6hOOP\":[\"已于 \",[\"0\"],\" 登录\"],\"YF6zHf\":[\"站点设置已更新。\"],\"YIix5Y\":[\"搜索...\"],\"YSCkGF\":[\"页首 RSS 指向你的 %feed% feed(/feed)。可在通用设置中修改 /feed 的输出内容。\"],\"YUglt2\":[\"正在生成链接...\"],\"YXiA6e\":[\"主按钮\"],\"Ygx3Yl\":[\"用于标签页和书签的小型浏览器图标。\"],\"Z6NwTi\":[\"保存为草稿\"],\"ZGs2so\":[\"永久删除这个合集?里面的帖子不会被删除。\"],\"ZQKLI1\":[\"危险区\"],\"ZV5ykW\":[\"下载 PNG\"],\"ZhhOwV\":[\"引用\"],\"ZiooJI\":[\"API 令牌\"],\"Zm7Qb0\":[\"备份与恢复指南\"],\"ZmSeP+\":[\"保存为草稿?\"],\"ZmUkwN\":[\"向导航添加自定义链接\"],\"a14mj8\":[\"未知设备\"],\"a3LDKx\":[\"安全\"],\"a5j82I\":[\"没有合集匹配这次搜索。试试别的名称。\"],\"aAIQg2\":[\"外观\"],\"aFkzVF\":[\"目标文章或合集的 slug\"],\"aHTB7P\":[\"附加到您的帖子的补充内容\"],\"aMEyv0\":[\"保持稳重且易读。\"],\"aN6wx0\":[\"精选里还没有内容。把一篇文章标记为精选后,它就会显示在这里。\"],\"aYpXKS\":[\"并检查强调色是在引导注意力还是过于抢眼。\"],\"af+9p6\":[\"低调元数据\"],\"alKG0+\":[\"字体主题\"],\"an5hVd\":[\"图片\"],\"anibOb\":[\"关于此博客\"],\"any7NR\":[\"主题指南\"],\"auFlOr\":[\"图标与预览\"],\"avuFKG\":[\"个帖子串\"],\"b+/jO6\":[\"301 (永久)\"],\"bFpC86\":[\"一次性全部下载\"],\"bHOiy1\":[\"演示模式下不提供密码修改。请使用共享的演示凭据登录。\"],\"bHYIks\":[\"退出登录\"],\"bfCbdi\":[\"当前帖子\"],\"bkBJmZ\":[\"这对于颜色检查很有用,因为它将强调色放在引用样式、元数据和较为低调的说明段落旁。 将其与\"],\"bmrL08\":[\"演示模式下会隐藏会话、密码修改和删除账户。导出仍可使用。\"],\"bzSI52\":[\"放弃\"],\"c2JRUS\":[\"自动生成\"],\"c3MN2z\":[\"所有可用的端点和请求格式。\"],\"cFpd0L\":[\"克制中性色\"],\"cIoW7X\":[\"内联链接\"],\"cSDy01\":[\"自定义 CSS 已更新。\"],\"cTUByn\":[\"最新在前\"],\"cb7FR8\":[\"白色标志位于 Jant 绿色方形图块上,适用于需要真正边到边正方形的平台和布局。\"],\"ccaIM9\":[\"更多链接\"],\"cgmi4V\":[\"删除草稿\"],\"clzoNp\":[\"始终显示主题的深色版本。\"],\"cnGeoo\":[\"删除\"],\"d+F4pf\":[\"图片应安静地置于文章中,而不是像卡片预览那样突出。\"],\"d/o/BH\":[\"无法发布. 已保存为草稿.\"],\"d3FRkY\":[\"无法复制,请重试。\"],\"dD7NPy\":[\"线框\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"确认删除账号\"],\"dUsGbd\":[\"恰到好处的点缀应该融入文字,直到你需要它时才显现\"],\"dXoieq\":[\"摘要\"],\"dYKrp3\":[\"从 Latest 隐藏\"],\"dbUuAj\":[\"会出现在 Latest 中。\"],\"dk7TCH\":[\"永久删除所有数据并重置博客\"],\"e/tSI5\":[\"导航排序已更新。\"],\"ePK91l\":[\"编辑\"],\"eWLklq\":[\"引用\"],\"ebQKK7\":[\"站点\"],\"egK+Yy\":[\"用于脚本和自动化的 Bearer 令牌\"],\"ehj/zN\":[\"重定向类型\"],\"eneWvv\":[\"草稿\"],\"f+m8jj\":[\"订阅源 URL 已复制。\"],\"f4MAoA\":[\"部分上传失败。已保存为草稿。\"],\"f5s9EI\":[\"按 N 开始写作\"],\"f6Hub0\":[\"排序\"],\"f8fH8W\":[\"设计\"],\"fFDkGR\":[\"会话、密码、导出\"],\"fKrDxS\":[\"品牌卡片\"],\"fMPkxb\":[\"展开更多\"],\"fqDzSu\":[\"评分\"],\"fttd2R\":[\"我的合集\"],\"gFdWl+\":[\"用于在真实阅读环境中检查默认调色板的长篇文章示例。\"],\"gNKz6Z\":[\"合集已删除。\"],\"gXH9r/\":[\"打开原始 PNG\"],\"gj52YE\":[\"该合集为空。从编辑器添加文章。\"],\"gpaPhA\":[\"帮助屏幕阅读器描述图片\"],\"gtQsRO\":[\"创建自定义 URL\"],\"h5RcXU\":[\"Post hidden\"],\"hBO/y4\":[\"安全令牌已过期。请刷新页面后重试。\"],\"hDRU5q\":[\"找到 \",[\"0\"],\" 条结果\"],\"hGmyDl\":[\"令牌可让您在不登录的情况下从脚本、快捷方式和其他工具访问 API。\"],\"hLlWo5\":[\"几条简单规则.\"],\"hXzOVo\":[\"下一页\"],\"he3ygx\":[\"复制\"],\"heSQoS\":[\"粘贴链接...\"],\"i0qMbr\":[\"首页\"],\"i0vDGK\":[\"排序方式\"],\"i5+Y7d\":[\"下载官方 Jant 徽标、图标和预览文件。\"],\"i6nDCI\":[\"设置新密码.\"],\"iEUzMn\":[\"系统\"],\"iG7KNr\":[\"徽标\"],\"iH8pgl\":[\"返回\"],\"iVOMRi\":[\"首页设置已更新。\"],\"icZdbX\":[\"尚未归入已命名分组的主题。\"],\"ilSmIt\":[\"硬边\"],\"iu7tUI\":[\"面包屑导航\"],\"j4VrG6\":[\"下载导出 ZIP\"],\"j5nQL2\":[\"例如 iOS Shortcuts\"],\"jAXE5p\":[\"反白标志\"],\"jAqB/k\":[\"私密发布\"],\"jO813m\":[\"更多配色\"],\"jQflRT\":[\"此处使用真实的单篇文章详情渲染,示例包含较长文章、内嵌图片、表格、列表、引用和代码。内容栏的宽度与线上站点保持一致。\"],\"jUV7CU\":[\"上传头像\"],\"jVUmOK\":[\"支持 Markdown\"],\"jd+8Mm\":[\"社交预览图\"],\"jfaqmf\":[\"关闭后,首页会先显示你的最新文章。\"],\"jgBjXJ\":[\"撤销此令牌吗?任何使用它的脚本都将停止工作。\"],\"ji7oVU\":[\"编辑帖子\"],\"jpctdh\":[\"查看\"],\"jvtP25\":[\"在线程中 →\"],\"jvyYZG\":[\"在想些什么...\"],\"k1ifdL\":[\"处理中...\"],\"k3Iw35\":[\"当标准绿色徽标对比度不足时,切换至白色徽标。\"],\"kMXclu\":[\"下载站点导出\"],\"kNiQp6\":[\"已置顶\"],\"kPMIr+\":[\"给它起个标题...\"],\"kVQs7s\":[\"细粒度样式覆盖\"],\"ke1gWS\":[\"自定义 URL\"],\"kfcRb0\":[\"头像\"],\"kj6ppi\":[\"条目\"],\"kr39oD\":[\"还没有合集。创建一个合集,按主题整理帖子。\"],\"kzvWob\":[\"链接到文章归档页\"],\"lLW3vJ\":[\"目标别名\"],\"laT1IJ\":[\"iOS 主屏幕\"],\"lb+Xwx\":[\"自定义链接\"],\"m16xKo\":[\"添加\"],\"mDyWuM\":[\"暖调编辑风\"],\"mKT7g0\":[\"文本附件\"],\"mSNmrX\":[\"列出帖子:\"],\"mc/vLq\":[\"这个链接已被占用。换一个试试。\"],\"n1ekoW\":[\"登录\"],\"n6QD94\":[\"最旧优先\"],\"nFukaP\":[\"邮箱或密码错误。请检查您的凭证并重试。\"],\"nK07ni\":[\"为你的站点选择一种排版方向。每个主题都会同时改变字体搭配和阅读节奏。\"],\"nV6twc\":[\"整理\"],\"nd8Puv\":[\"白色标志置于 Jant 绿色圆形中,用于个人资料图片、徽章及其他需要现成素材的圆形场景。\"],\"ndrEYW\":[\"当强调色更温暖一点、也没那么直白时,整页会更像写作空间,而不是产品界面。\"],\"o/vNDE\":[\"可让你覆盖任意主题变量。\"],\"o21Y+P\":[\"条目\"],\"oKOOsY\":[\"颜色主题\"],\"oSiRP0\":[\"系统链接\"],\"ode0+L\":[\"主题示例\"],\"ovBPCi\":[\"默认\"],\"p1Z67P\":[\"当 primary 过于僵硬时,整个页面开始像产品界面,而不是写作空间。\"],\"p2/GCq\":[\"确认密码\"],\"pB0OKE\":[\"新建分隔线\"],\"pBHx39\":[\"深色背景\"],\"pVrU5x\":[\"如果这一页显得太有品牌姿态,最先该收一收的是默认主题的站点强调色,而不是边框或正文颜色。\"],\"pZq3aX\":[\"上传失败。请重试。\"],\"psoxDF\":[\"该字体主题不可用。请选择另一个。\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"合集\"],\"q5YRzz\":[\"颜色检查\"],\"q8RviX\":[\"有标题\"],\"qiN9NB\":[\"表面\"],\"qt89I8\":[\"草稿已保存.\"],\"quvfGs\":[\"而不是把它当作孤立的色样来判断。\"],\"rA2TFI\":[\"在不打开设置或更改当前站点主题的情况下切换调色板和模式。\"],\"rFmBG3\":[\"颜色主题\"],\"rdUucN\":[\"预览\"],\"rlonmB\":[\"无法删除. 请稍后再试.\"],\"s8G5Or\":[\"This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue.\"],\"s9gHf5\":[\"my-post-link\"],\"sER+bs\":[\"文件\"],\"satWc6\":[\"主 RSS feed\"],\"sgr2wQ\":[\"个合集\"],\"slujBW\":[\"只能使用小写字母、数字和连字符。\"],\"sxkWRg\":[\"高级\"],\"syiAKf\":[\"笔记样式\"],\"t/YqKh\":[\"移除\"],\"t42hIC\":[\"大多数人需要的所有内容都在一个 ZIP 文件中。\"],\"tCctex\":[\"品牌包包含 SVG 徽标、透明方形 PNG、圆角、方形和圆形图块,以及网站图标(favicon)、Apple Touch 图标和默认社交预览图片。\"],\"tKlWWY\":[\"表情\"],\"tSWVu5\":[\"发布于 \",[\"date\"],\" \",[\"time\"]],\"tbSs3k\":[\"鲜明氛围\"],\"tfDRzk\":[\"保存\"],\"u1VTd3\":[\"调色板、表面色调与整体氛围\"],\"u3wRF+\":[\"已发布\"],\"u6KOjV\":[\"想调得更细?\"],\"ui6aMF\":[\"这些设备当前已登录到您的账户。撤销任何您不认识的会话。\"],\"uowbPn\":[\"Remove attachment\"],\"v3E8iS\":[\"实用清单\"],\"vBEKwo\":[\"在这里管理这个站点的当前会话。密码和托管站点访问权限通过 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"排版选项与阅读体验\"],\"vSJd18\":[\"视频\"],\"vSYKYI\":[\"主 feed\"],\"vTuib7\":[\"这会控制 /feed 返回哪一种 feed。\"],\"vXCC6J\":[\"有些内容看起来不对。请检查表单并重试。\"],\"vXIe7J\":[\"语言\"],\"vdFnYM\":[\"重置链接\"],\"vgpfCi\":[\"保存草稿\"],\"vmQmHx\":[\"添加自定义 CSS 来覆盖任何样式。使用诸如 [data-page], [data-post], [data-format] 的数据属性来定位特定元素。\"],\"vpSPA1\":[\"身份验证密钥缺失. 检查你的环境变量.\"],\"vzU4k9\":[\"新建合集\"],\"vzX5FB\":[\"删除账户\"],\"w0Emel\":[\"建议链接\"],\"w6mlns\":[\"文章详情页\"],\"w8Rv8T\":[\"标签为必填项\"],\"wJ+GRy\":[\"所有可见性\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"安静的界面应让文字先说话。\"],\"wc+17X\":[\"/* 在此添加自定义 CSS */\"],\"wja8aL\":[\"无标题\"],\"wlnK1t\":[\"一个 ZIP 文件,包含主标志、反向标志、方形 PNG、圆角方形和圆形图块,以及 favicon、Apple Touch 图标和社交预览图片。\"],\"wm3Zlr\":[\"所有年份\"],\"wuLtXn\":[\"目前没有活动会话。已登录的设备会显示在这里。\"],\"xCWek4\":[\"未设置文件存储。请检查服务器配置。\"],\"xVrkxi\":[\"低调设计\"],\"xVvw1i\":[\"该重置链接已失效。请求一个新的以继续。\"],\"xYilR2\":[\"媒体\"],\"xbN8dp\":[\"柔和的颜色也该保有清晰的阅读节奏。\"],\"xeiujy\":[\"仅文本\"],\"xhTx3y\":[\"在大多数场景选择标准徽标,需要更高对比度时选择反色徽标。\"],\"y28hnO\":[\"发布\"],\"y2o/Y0\":[\"此链接已过期\"],\"y8Md/V\":[\"语言和时间已更新。\"],\"yNCqOt\":[\"Latest feed\"],\"yQ2kGp\":[\"加载更多\"],\"yQ3kNF\":[\"请输入以下短语以确认:\"],\"ycM1Xg\":[\"没有结果。尝试不同的关键词。\"],\"yjjCV8\":[\"固定 feed 链接\"],\"yjkELF\":[\"确认新密码\"],\"ylo1I0\":[\"上次使用 \",[\"0\"]],\"ynMAhG\":[\"默认徽标\"],\"yzF66j\":[\"链接\"],\"z8ajIE\":[\"找到 1 条结果\"],\"zBFr9G\":[\"粘贴一篇长文章、AI 回复或任何文本...\\n\\nMarkdown 格式将被保留.\"],\"zJDAbh\":[\"不保存\"],\"zXH2jX\":[\"语言与时间\"],\"zcDmsG\":[\"精选帖子\"],\"zoK+eO\":[\"先补上标题,再发布这条链接。\"],\"zwBp5t\":[\"私密\"],\"zxRN6H\":[\"页首链接、首页视图和溢出菜单\"]}");
1864
+ var messages$1 = JSON.parse("{\"+2aYLu\":[\"页首链接数量限制已更新。\"],\"+4u2g6\":[\"现成的 1:1 PNG,适用于演示文稿、样机、名录及其他方形展示场景。\"],\"+AXdXp\":[\"标签和 URL 为必填项\"],\"+DPYOZ\":[\"添加指向主 RSS feed 的链接。可在通用设置中修改 /feed 的输出内容。\"],\"+G8qqW\":[\"合集已保存。\"],\"+IJm1Z\":[\"柔和\"],\"+Irvp3\":[\"本页的所有内容均可直接用于文章、发布帖、目录和产品报道。\"],\"+Qaboy\":[\"网站图标\"],\"+fWu2O\":[\"更平静、更温暖的强调色,让默认主题更安静,也更有分寸。\"],\"+h8YKs\":[\"低干扰配色,带来更干净、更平静的阅读节奏。\"],\"+siMqD\":[\"日志\"],\"+zy2Nq\":[\"类型\"],\"/3H2/s\":[\"这个托管站点通过 \",[\"providerLabel\"],\" 登录。在那里管理密码和托管站点访问权限。\"],\"/DFKdU\":[\"输入引用...\"],\"/PfPLc\":[\"标签(可选)\"],\"/PoNoq\":[\"编辑链接\"],\"/Ui2OV\":[\"在深色背景上使用反白徽标。\"],\"/Ybds4\":[\"用于网站、文档、媒体报道和编辑版式的主要 Jant 标志.\"],\"/rTz0M\":[\"音频\"],\"0+tKwI\":[\"导出与演示限制\"],\"0EcUWz\":[\"要放弃更改吗?\"],\"0Lj7or\":[\"保存文本附件?\"],\"0OGSSc\":[\"头像显示已更新。\"],\"0UzCUX\":[\"更新您用于登录的密码\"],\"0XDp7X\":[\"链接应清晰可读,不应在页面上发光。\"],\"0ieXE7\":[\"评分最高\"],\"11h9eK\":[\"Includes\"],\"14BEca\":[\"了解原因\"],\"15++NM\":[\"行内强调\"],\"1DBGsz\":[\"笔记\"],\"1F6Mzc\":[\"还没有导航项目。添加链接或在下方启用系统项目。\"],\"1NeeWI\":[\"用于头像、应用、浏览器和共享链接的方形资源\"],\"1THMr2\":[\"品牌包\"],\"1njn7W\":[\"浅色\"],\"2B7HLH\":[\"新建帖子\"],\"2C7mSG\":[\"合集链接\"],\"2DoBvq\":[\"订阅源\"],\"2ETv7R\":[\"在真实阅读场景中调整颜色\"],\"2HbvFp\":[\"真实文章组件\"],\"2MXb5X\":[\"克制设计手记\"],\"2PTjMB\":[\"我想删除 \",[\"siteName\"]],\"2cFU6q\":[\"网站页脚\"],\"2koDOQ\":[\"帖子串 强调色\"],\"2q/Q7x\":[\"可见性\"],\"2sCqzD\":[\"用于网站、文档、文章和其他浅色或中性色背景.\"],\"3Cw1AI\":[\"添加合集\"],\"3VrybB\":[\"重定向\"],\"3Yvsaz\":[\"302 (临时)\"],\"3lJk5u\":[\"保持图稿不变。\"],\"3mdteM\":[\"再判断这个强调色是否带上了过多产品化的气息。\"],\"3n0zbB\":[\"演示模式下不提供会话管理。请直接使用共享演示会话。\"],\"3neqtf\":[\"帖子串强调色\"],\"3qkggm\":[\"全屏\"],\"3vMdv3\":[\"这个链接是保留地址,请换一个。\"],\"3wKq0C\":[\"保存失败。请稍后再试。\"],\"3xi01/\":[\"最后查看页脚的元数据,确保强调色不会与排版产生冲突.\"],\"47iMgt\":[\"值得借鉴的编辑界面\"],\"49Bsal\":[\"订阅源设置已更新。\"],\"4D09NB\":[\"链接到你的合集页\"],\"4J/OYU\":[\"合集已创建。\"],\"4Jge8E\":[\"活动会话\"],\"4KIa+q\":[\"导出已下载。\"],\"4cEClj\":[\"会话\"],\"4eiXo+\":[\"留空则自动生成。\"],\"4pV0kE\":[\"头像可用\"],\"4zGJ5E\":[\"永久删除账号\"],\"5VQnR3\":[\"当你需要一个不会变化的 feed 链接时,使用这些地址。\"],\"5lWFkC\":[\"登录\"],\"5pAjd8\":[\"强调色应当有存在感,但不要太刺眼。\"],\"5sEkBi\":[\"打开原始资源\"],\"69OXZB\":[\"删除托管站点\"],\"6ArdBh\":[\"将精选帖子用作 /feed 的内容。\"],\"6DjeBT\":[\"演示站点会始终对搜索引擎隐藏。\"],\"6FFB7q\":[\"将最新公开帖子用作 /feed 的内容。\"],\"6K1Vef\":[\"永久删除此博客?此操作不可恢复。\"],\"6UTABI\":[\"合集排序已更新。\"],\"6V3Ea3\":[\"已复制\"],\"6Y4BBO\":[\"以温暖纸色调呈现的抽象社论布局\"],\"6cjUDB\":[\"品牌素材\"],\"6lGV3K\":[\"收起\"],\"6p0JeQ\":[\"以确保两者仍然感觉属于同一产品。\"],\"6rhkhp\":[\"首页视图已更新。\"],\"6sVyMq\":[\"先补上 URL,再发布这条链接。\"],\"6wixKm\":[\"下载一个 Zola 站点 ZIP,可用于静态发布或导入另一套 Jant。\"],\"6yCv8j\":[\"保存对文本附件的更改、不保存,或继续编辑。\"],\"72fkwh\":[\"将精选设为首页视图\"],\"74kJNs\":[\"查看这个帖子串里更早的笔记\"],\"7DvUqV\":[\"从上到下阅读页面,不要查看色板。\"],\"7FaY4u\":[\"用法\"],\"7G9YLi\":[\"允许搜索引擎收录我的网站\"],\"7MZxzw\":[\"密码已更改.\"],\"7aris6\":[\"3月15日\"],\"7d1a0d\":[\"公开\"],\"7hYXO0\":[\"在深色背景、有图像背景的表面,以及任何会让绿色标志失去对比度的位置使用此标志。\"],\"7kMW54\":[\"打开原始 SVG\"],\"7nGhhM\":[\"在想什么?\"],\"7vhWI8\":[\"新密码\"],\"7z05Pf\":[\"Open the hosted site controls in \",[\"providerLabel\"],\" to cancel billing or permanently delete this site.\"],\"81nFIS\":[\"密码不匹配。请确保两次输入相同。\"],\"87a/t/\":[\"标签\"],\"89Upyo\":[\"该主题不可用。请选择另一个。\"],\"8BfEpW\":[\"托管账号\"],\"8Btgys\":[\"草稿已删除.\"],\"8U2Z7f\":[\"新建自定义 URL\"],\"8WX0J+\":[\"你的想法 (可选)\"],\"8ZsakT\":[\"密码\"],\"8bpHix\":[\"无法创建您的账户. 请检查详细信息并重试.\"],\"8eC78s\":[\"更柔和的强调色会让\"],\"8tM8+a\":[\"保存为草稿\"],\"9+vGLh\":[\"自定义 CSS\"],\"90IRF2\":[\"这篇文章想回答一个具体问题:当默认强调色要撑起一整段阅读体验时,它是否依然足够平静?\"],\"9SHZas\":[\"登录时显示“设置”,未登录时显示“登录”\"],\"9T7Cwm\":[\"重定向、自定义路径与 URL 控制\"],\"9aUyym\":[\"查看您在哪些设备登录并撤销旧会话\"],\"9aloPG\":[\"参考\"],\"9dr9Nh\":[\"打开外部链接\"],\"A1D8Yt\":[\"强调色该承担什么\"],\"A1taO8\":[\"搜索\"],\"A2Vg/u\":[\"导航和阅读状态\"],\"Ac5qDn\":[\"拖动合集和分隔线,调整为你想要的顺序。\"],\"AeXO77\":[\"账户\"],\"AjHkcv\":[\"用于社交分享和链接展开的默认预览图片。\"],\"AnY+O9\":[\"在首页底部显示 \\\"Build with Jant\\\"\"],\"ApZDMk\":[\"此图用于您的 favicon 和 apple-touch-icon。为获得最佳效果,请上传至少 512×512 像素、带纯色背景的方形 PNG 图像。\"],\"AyHO4m\":[\"这个合集是关于什么的?\"],\"B1FFMj\":[\"下载品牌包\"],\"B495Gs\":[\"归档\"],\"B4ESok\":[\"API 文档\"],\"BdjLtf\":[\"个帖子串\"],\"Bmaby2\":[\"所有格式\"],\"C+9df9\":[\"引用或突出显示的段落应该像注释,而不是警告.\"],\"C0/57J\":[\"这是合集链接的最后一段。\"],\"CAh1km\":[\"个合集\"],\"D4em/+\":[\"品牌标志\"],\"DCKkhU\":[\"当前密码\"],\"DHhJ7s\":[\"上一页\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 中管理密码和托管站点访问权限\"],\"DOx286\":[\"草稿已恢复.\"],\"DPfwMq\":[\"完成\"],\"DYlMYF\":[\"内置背景\"],\"DoJzLz\":[\"合集\"],\"Du2B9f\":[\"默认强调色应以可读性为先。先将其与\"],\"DxwUcG\":[\"先将调色板作为内容读取\"],\"E3NcGH\":[\"方形徽标 PNG\"],\"ECrbov\":[\"氛围感更强的配色,时间、地点和情绪感更鲜明。\"],\"EEYbdt\":[\"发布\"],\"EGwzOK\":[\"完成设置\"],\"EHWwm1\":[\"默认的强调应给人手写感,而非品牌化。\"],\"EO3I6h\":[\"上传失败。请稍后再试。\"],\"EQNPYo\":[\"精选于 \",[\"date\"],\" \",[\"time\"]],\"EQtz4D\":[\"打开几个链接,检查它们是否仍然像页面原生的一部分\"],\"EUPyPZ\":[\"以及另外 \",[\"count\"],\" 个\"],\"EetoJL\":[\"引导视线而不主导布局.\"],\"Eiv3bO\":[\"按钮可以保持稳重,但链接、帖子串标记和细微的强调应该更像纸上的墨迹,而不是仪表盘的装饰\"],\"EmQw8O\":[\"如果这篇文章仍然让你想继续阅读,那么配色可能已经很接近了。\"],\"Enslfm\":[\"目标地址\"],\"EsJdRp\":[\"保存主题\"],\"FESYvt\":[\"为视力受限的人描述此图像...\"],\"FEr96N\":[\"主题\"],\"FGySZL\":[\"默认强调色在像钢笔下划线那样呈现时效果最佳。将其与\"],\"FM+KeU\":[\"还没有草稿。保存草稿后会在此找到它。\"],\"FMgjDM\":[\"切换内置导航项。启用的项会与链接一起显示在您的导航中。\"],\"Fdv5k7\":[\"调整时要注意什么\"],\"FkMol5\":[\"精选\"],\"Fxf4jq\":[\"描述(可选)\"],\"G0qJsQ\":[\"安全令牌缺失。请刷新页面后重试。\"],\"G2u/aQ\":[\"下载官方 Jant 徽标、图标和预览素材。\"],\"GMMWcy\":[\"名称、元数据、语言和搜索默认设置\"],\"GX2VMa\":[\"创建您的管理员账户。\"],\"GXsAby\":[\"撤销\"],\"GiRWtR\":[\"为什么默认强调色应该像书写,而不是品牌标识\"],\"GlEzsR\":[\"供搜索引擎和订阅源阅读器使用的简短简介。仅限纯文本。\"],\"GorKul\":[\"欢迎使用 Jant\"],\"GxkJXS\":[\"上传中...\"],\"GzTVPx\":[\"导出静态站点\"],\"H29JXm\":[\"+ 替代文本\"],\"H4lgRd\":[\"未设置身份验证。请检查您的服务器配置。\"],\"HFPGej\":[\"没有符合这些筛选条件的帖子串。调整筛选条件,或清除所有筛选。\"],\"HG79RB\":[\"以私密方式发布\"],\"HKH+W+\":[\"数据\"],\"HNEHJP\":[\"演示凭证已预填 — 点击 登录 继续.\"],\"HbAIQc\":[\"用于检查语气是否偏向编辑性而非宣传性的参考链接\"],\"Hp1l6f\":[\"当前\"],\"Ht1V3q\":[\"也因为这个原因,行内代码应该保持中性。像 theme.siteAccent = soften(green, 12%) 这样的内容,不该突然变成页面里最吵的一部分。\"],\"HxlY7t\":[\"修改后,订阅 /feed 的用户会收到不同内容。\"],\"I22eN0\":[\"共享链接\"],\"I6gXOa\":[\"路径\"],\"I6zLrz\":[\"当您需要透明的方形徽标、有内置背景的带形状图块、浏览器图标或默认预览图像时,请使用这些。\"],\"ICsA6P\":[\"你有未保存的更改\"],\"ID38tA\":[\"演示模式下不提供删除账户。共享演示会单独重置。\"],\"IF9tPu\":[\"何时该用站点导出、数据库备份和恢复演练。\"],\"IUX7p+\":[\"白色徽标置于 Jant 绿色圆角方块上,适用于应用图标原型、触控图标、目录列表以及其他需呈现更柔和感觉的方形位置。\"],\"IW5PBo\":[\"复制令牌\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"回复\"],\"IsI3kE\":[\"Nothing here yet. Add posts to one of these collections to fill this view.\"],\"J4tAHl\":[\"即使强调变弱,标题也应保持其层次结构。\"],\"J6bLeg\":[\"添加指向任意 URL 的自定义链接\"],\"JL7LF5\":[\"可用的 CSS 变量、数据属性和示例.\"],\"JTviaO\":[\"管理登录安全、导出和不可逆操作.\"],\"JYj5R2\":[\"浏览文件\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"现在复制你的令牌 — 它将不再显示。\"],\"JuN5GC\":[\"未选择文件。请选择要上传的文件。\"],\"KOqvXP\":[\"请勿为标志重新着色、拉伸、旋转、描边或添加效果.\"],\"KbS2K9\":[\"重置密码\"],\"KdSsVl\":[\"作者(可选)\"],\"Khu3PV\":[\"发布设置\"],\"KiJn9B\":[\"笔记\"],\"KlZ+t+\":[\"%name% + 另有 %count% 个\"],\"KsvRin\":[\"从 Latest 隐藏\"],\"KuCcWu\":[\"显示在所有文章和页面的底部。支持 Markdown。\"],\"KzmC5L\":[\"控件\"],\"L0gres\":[\"其余项目将被收进 ··· 菜单\"],\"L4t4/q\":[\"3 月 14 日\"],\"L7svJg\":[\"阅读\"],\"Lbkbwy\":[\"用于在更柔和、引用密集的内容上评估强调色的引用卡片。\"],\"LcvzvX\":[\"点击重试\"],\"LdyooL\":[\"链接\"],\"LkA8jz\":[\"添加替代文本\"],\"LxRg6f\":[\"实时主题控制\"],\"M/haSd\":[\"始终显示主题的浅色版本。\"],\"M2kIWU\":[\"字体主题\"],\"M4tzVU\":[\"最新帖子\"],\"M6CbAU\":[\"展开/收起编辑面板\"],\"M8kJqa\":[\"草稿\"],\"MHrjPM\":[\"标题\"],\"MILa7n\":[\"方形图块\"],\"MSc/Yq\":[\"要发布您的更改,还是放弃它们?\"],\"MXSt4t\":[\"创建于 \",[\"0\"]],\"Mc7+6G\":[\"请输入以 http://、https:// 或 mailto: 开头的有效 URL。\"],\"MdMyne\":[\"来源链接 (可选)\"],\"MiMY3Q\":[\"Apple Touch 图标\"],\"MiyoI7\":[\"默认笔记示例\"],\"MqghUt\":[\"搜索帖子...\"],\"MrvdXK\":[\"以纸感为先的配色,界面更温暖,也更有手写感。\"],\"MtENL9\":[\"调整网站的外观、可读性和运行方式。\"],\"Myqkib\":[\"创建一个合集即可开始。\"],\"N/8NPV\":[\"删除之前先下载站点导出。删除后将无法恢复这个账户。\"],\"N7UNHY\":[\"Featured feed\"],\"N8UzTV\":[\"条回复\"],\"NAFbuE\":[\"搜索片段\"],\"NH9Z1R\":[\"从这里开始\"],\"NHnUHF\":[\"网站图标及页眉中的个人头像\"],\"NU2Fqi\":[\"保存 CSS\"],\"NhHXCr\":[\"自定义 URL 路径(不含前导斜杠)\"],\"Nldjdr\":[\"还没有自定义 URL。创建一个以便为文章添加重定向或自定义路径。\"],\"NqsRbb\":[\"Jant 徽标\"],\"O1367B\":[\"所有合集\"],\"O3oNi5\":[\"电子邮箱\"],\"OEdMhi\":[\"最合适的默认颜色,是那种只有在阅读一段时间后才会注意到的颜色。\"],\"OEt/to\":[\"使用指南\"],\"OJxdgi\":[\"把这个链接控制在 200 个字符以内。\"],\"OSJXFg\":[\"应用到整个站点,包括管理页面。先选择配色,再决定是跟随系统还是固定模式。\"],\"OaoJcz\":[\"社交预览\"],\"OmfDbR\":[\"网站强调色\"],\"Ovks1h\":[\"较柔和的蓝色感觉更像墨水,而不是产品镀铬的光泽。\"],\"P/sHNL\":[\"在全局更改主题之前,使用此页面来评估按钮、链接、卡片、表单、帖子串强调和低调表面。\"],\"PKhdhq\":[\"页眉显示的链接数\"],\"PZ7HJ8\":[\"博客头像\"],\"PxJ9W6\":[\"生成 API 令牌\"],\"PxSKQl\":[\"隐藏了 \",[\"0\"],\" 条\"],\"Q2mGA7\":[\"清除筛选\"],\"QBqVyM\":[\"用于 iPhone 和 iPad 快捷方式的主屏幕图标。\"],\"Qgbxdw\":[\"为 Jant 设计更平静的默认强调色\"],\"Qn9Ao8\":[\"圆形图块\"],\"Qnrzvb\":[\"有效 API 令牌\"],\"QyDt3L\":[\"文件已上传.\"],\"R5CMuK\":[\"Jant 在强调采用编辑式风格时效果最好。按钮可以保持稳重,但行内强调应该像笔迹,而不是仪表盘式的高亮。\"],\"R6Z4LE\":[\"下载失败。请重试。\"],\"R8AthW\":[\"分隔线\"],\"R9Khdg\":[\"自动\"],\"RAv3u7\":[\"与主题控件比较\"],\"ROa4Ti\":[\"供阅读的界面应该引导视线,而不是不断争取注意力。\"],\"RdmNnl\":[\"浏览器标签页\"],\"RfGczC\":[\"方形徽标\"],\"Rj01Fz\":[\"链接\"],\"RxsRD6\":[\"时区\"],\"S37om9\":[\"包含资源\"],\"S8NCfs\":[\"保存到草稿,以便稍后编辑并发布。\"],\"SJGVAw\":[\"具有编辑风格,略显低调。\"],\"SJmfuf\":[\"站点名称\"],\"SKZhW9\":[\"令牌名称\"],\"SaNhJE\":[\"显得更有目的性,而不是暗淡无光。\"],\"SpTWH3\":[\"下载 SVG\"],\"SvRuJt\":[\"关于界面语气的现场笔记\"],\"T/R+Qz\":[\"主色\"],\"TNZKpI\":[\"危险\"],\"TWt5I9\":[[\"hiddenCount\"],\" 条隐藏的 \",[\"0\"]],\"TvaTxw\":[\"不会出现在 Latest 中,但仍会出现在你添加到的 Collection 里。\"],\"Tz0i8g\":[\"设置\"],\"UIMXHD\":[\"删除分隔线\"],\"UaZwcz\":[\"创建后还可设置更多选项。\"],\"Uc5y7o\":[\"为网站、文档、名录和编辑版面选择标准徽标.\"],\"Uj/btJ\":[\"在我的站点页眉显示头像\"],\"UxKoFf\":[\"导航\"],\"V18SVO\":[\"在浅色背景上使用徽标。\"],\"V4WsyL\":[\"添加链接\"],\"V5pZwT\":[\"搜索设置已更新。\"],\"VCA6B2\":[\"这些是真实的信息流组件,带有真实的页脚、摘要和内联链接。使用此部分来判断当主题应用到真实内容后是否仍然显得平静。\"],\"VhMDMg\":[\"修改密码\"],\"Vn3jYy\":[\"导航项\"],\"VoZYGU\":[\"这将永久删除您所有的数据 — 文章、媒体、合集、设置和您的账户。您的博客将被重置为初始设置状态。此操作不可撤销。\"],\"WCOanD\":[\"此参考资料很有用,因为它将链接和引文视为阅读节奏的一部分。在调整时请记住这一点 the\"],\"WbIbzR\":[\"正在检查链接...\"],\"WcWS//\":[\"下载文件\"],\"Weq9zb\":[\"通用\"],\"WhsN3P\":[\"Jant 中合适的默认强调应该更像编辑结构,而不是产品品牌化。这意味着链接、强调和帖子串提示可以可见,同时不会把页面变成界面装饰\"],\"Wi9i06\":[\"跟随每位访问者的系统偏好。\"],\"Wn+/rH\":[\"透明正方形\"],\"WpXcBJ\":[\"这里还没有内容。\"],\"X+8FMk\":[\"当前密码不匹配。请重试。\"],\"X1G9eY\":[\"导航预览\"],\"XU7b+L\":[\"主要徽标文件\"],\"XV1mAn\":[\"仅登录后可见。\"],\"XrnWzN\":[\"已发布!\"],\"Y/F35r\":[\"使用 curl 创建帖子:\"],\"Y6hOOP\":[\"已于 \",[\"0\"],\" 登录\"],\"YF6zHf\":[\"站点设置已更新。\"],\"YIix5Y\":[\"搜索...\"],\"YSCkGF\":[\"页首 RSS 指向你的 %feed% feed(/feed)。可在通用设置中修改 /feed 的输出内容。\"],\"YUglt2\":[\"正在生成链接...\"],\"YXiA6e\":[\"主按钮\"],\"Ygx3Yl\":[\"用于标签页和书签的小型浏览器图标。\"],\"Z6NwTi\":[\"保存为草稿\"],\"ZGs2so\":[\"永久删除这个合集?里面的帖子不会被删除。\"],\"ZQKLI1\":[\"危险区\"],\"ZV5ykW\":[\"下载 PNG\"],\"ZhhOwV\":[\"引用\"],\"ZiooJI\":[\"API 令牌\"],\"Zm7Qb0\":[\"备份与恢复指南\"],\"ZmSeP+\":[\"保存为草稿?\"],\"ZmUkwN\":[\"向导航添加自定义链接\"],\"a14mj8\":[\"未知设备\"],\"a3LDKx\":[\"安全\"],\"a5j82I\":[\"没有合集匹配这次搜索。试试别的名称。\"],\"aAIQg2\":[\"外观\"],\"aFkzVF\":[\"目标文章或合集的 slug\"],\"aHTB7P\":[\"附加到您的帖子的补充内容\"],\"aMEyv0\":[\"保持稳重且易读。\"],\"aN6wx0\":[\"精选里还没有内容。把一篇文章标记为精选后,它就会显示在这里。\"],\"aYpXKS\":[\"并检查强调色是在引导注意力还是过于抢眼。\"],\"af+9p6\":[\"低调元数据\"],\"alKG0+\":[\"字体主题\"],\"an5hVd\":[\"图片\"],\"anibOb\":[\"关于此博客\"],\"any7NR\":[\"主题指南\"],\"auFlOr\":[\"图标与预览\"],\"avuFKG\":[\"个帖子串\"],\"b+/jO6\":[\"301 (永久)\"],\"bFpC86\":[\"一次性全部下载\"],\"bHOiy1\":[\"演示模式下不提供密码修改。请使用共享的演示凭据登录。\"],\"bHYIks\":[\"退出登录\"],\"bfCbdi\":[\"当前帖子\"],\"bkBJmZ\":[\"这对于颜色检查很有用,因为它将强调色放在引用样式、元数据和较为低调的说明段落旁。 将其与\"],\"bmrL08\":[\"演示模式下会隐藏会话、密码修改和删除账户。导出仍可使用。\"],\"bzSI52\":[\"放弃\"],\"c2JRUS\":[\"自动生成\"],\"c3MN2z\":[\"所有可用的端点和请求格式。\"],\"cFpd0L\":[\"克制中性色\"],\"cIoW7X\":[\"内联链接\"],\"cSDy01\":[\"自定义 CSS 已更新。\"],\"cTUByn\":[\"最新在前\"],\"cb7FR8\":[\"白色标志位于 Jant 绿色方形图块上,适用于需要真正边到边正方形的平台和布局。\"],\"ccaIM9\":[\"更多链接\"],\"cgmi4V\":[\"删除草稿\"],\"clzoNp\":[\"始终显示主题的深色版本。\"],\"cnGeoo\":[\"删除\"],\"d+F4pf\":[\"图片应安静地置于文章中,而不是像卡片预览那样突出。\"],\"d/o/BH\":[\"无法发布. 已保存为草稿.\"],\"d3FRkY\":[\"无法复制,请重试。\"],\"dD7NPy\":[\"线框\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"确认删除账号\"],\"dUsGbd\":[\"恰到好处的点缀应该融入文字,直到你需要它时才显现\"],\"dXoieq\":[\"摘要\"],\"dYKrp3\":[\"从 Latest 隐藏\"],\"dbUuAj\":[\"会出现在 Latest 中。\"],\"dk7TCH\":[\"永久删除所有数据并重置博客\"],\"e/tSI5\":[\"导航排序已更新。\"],\"ePK91l\":[\"编辑\"],\"eWLklq\":[\"引用\"],\"ebQKK7\":[\"站点\"],\"egK+Yy\":[\"用于脚本和自动化的 Bearer 令牌\"],\"ehj/zN\":[\"重定向类型\"],\"eneWvv\":[\"草稿\"],\"f+m8jj\":[\"订阅源 URL 已复制。\"],\"f4MAoA\":[\"部分上传失败。已保存为草稿。\"],\"f5s9EI\":[\"按 N 开始写作\"],\"f6Hub0\":[\"排序\"],\"f8fH8W\":[\"设计\"],\"fFDkGR\":[\"会话、密码、导出\"],\"fKrDxS\":[\"品牌卡片\"],\"fMPkxb\":[\"展开更多\"],\"fqDzSu\":[\"评分\"],\"fttd2R\":[\"我的合集\"],\"gFdWl+\":[\"用于在真实阅读环境中检查默认调色板的长篇文章示例。\"],\"gNKz6Z\":[\"合集已删除。\"],\"gXH9r/\":[\"打开原始 PNG\"],\"gj52YE\":[\"该合集为空。从编辑器添加文章。\"],\"gpaPhA\":[\"帮助屏幕阅读器描述图片\"],\"gtQsRO\":[\"创建自定义 URL\"],\"h5RcXU\":[\"Post hidden\"],\"hBO/y4\":[\"安全令牌已过期。请刷新页面后重试。\"],\"hDRU5q\":[\"找到 \",[\"0\"],\" 条结果\"],\"hGmyDl\":[\"令牌可让您在不登录的情况下从脚本、快捷方式和其他工具访问 API。\"],\"hLlWo5\":[\"几条简单规则.\"],\"hXzOVo\":[\"下一页\"],\"he3ygx\":[\"复制\"],\"heSQoS\":[\"粘贴链接...\"],\"i0qMbr\":[\"首页\"],\"i0vDGK\":[\"排序方式\"],\"i5+Y7d\":[\"下载官方 Jant 徽标、图标和预览文件。\"],\"i6nDCI\":[\"设置新密码.\"],\"iEUzMn\":[\"系统\"],\"iG7KNr\":[\"徽标\"],\"iH8pgl\":[\"返回\"],\"iVOMRi\":[\"首页设置已更新。\"],\"icZdbX\":[\"尚未归入已命名分组的主题。\"],\"ilSmIt\":[\"硬边\"],\"iu7tUI\":[\"面包屑导航\"],\"j4VrG6\":[\"下载导出 ZIP\"],\"j5nQL2\":[\"例如 iOS Shortcuts\"],\"jAXE5p\":[\"反白标志\"],\"jAqB/k\":[\"私密发布\"],\"jO813m\":[\"更多配色\"],\"jQflRT\":[\"此处使用真实的单篇文章详情渲染,示例包含较长文章、内嵌图片、表格、列表、引用和代码。内容栏的宽度与线上站点保持一致。\"],\"jUV7CU\":[\"上传头像\"],\"jVUmOK\":[\"支持 Markdown\"],\"jd+8Mm\":[\"社交预览图\"],\"jfaqmf\":[\"关闭后,首页会先显示你的最新文章。\"],\"jgBjXJ\":[\"撤销此令牌吗?任何使用它的脚本都将停止工作。\"],\"ji7oVU\":[\"编辑帖子\"],\"jpctdh\":[\"查看\"],\"jvtP25\":[\"在线程中 →\"],\"jvyYZG\":[\"在想些什么...\"],\"k1ifdL\":[\"处理中...\"],\"k3Iw35\":[\"当标准绿色徽标对比度不足时,切换至白色徽标。\"],\"kMXclu\":[\"下载站点导出\"],\"kNiQp6\":[\"已置顶\"],\"kPMIr+\":[\"给它起个标题...\"],\"kVQs7s\":[\"细粒度样式覆盖\"],\"ke1gWS\":[\"自定义 URL\"],\"kfcRb0\":[\"头像\"],\"kj6ppi\":[\"条目\"],\"kr39oD\":[\"还没有合集。创建一个合集,按主题整理帖子。\"],\"kzvWob\":[\"链接到文章归档页\"],\"lLW3vJ\":[\"目标别名\"],\"laT1IJ\":[\"iOS 主屏幕\"],\"lb+Xwx\":[\"自定义链接\"],\"m16xKo\":[\"添加\"],\"mDyWuM\":[\"暖调编辑风\"],\"mKT7g0\":[\"文本附件\"],\"mSNmrX\":[\"列出帖子:\"],\"mc/vLq\":[\"这个链接已被占用。换一个试试。\"],\"n1ekoW\":[\"登录\"],\"n6QD94\":[\"最旧优先\"],\"nFukaP\":[\"邮箱或密码错误。请检查您的凭证并重试。\"],\"nK07ni\":[\"为你的站点选择一种排版方向。每个主题都会同时改变字体搭配和阅读节奏。\"],\"nV6twc\":[\"整理\"],\"nd8Puv\":[\"白色标志置于 Jant 绿色圆形中,用于个人资料图片、徽章及其他需要现成素材的圆形场景。\"],\"ndrEYW\":[\"当强调色更温暖一点、也没那么直白时,整页会更像写作空间,而不是产品界面。\"],\"o/vNDE\":[\"可让你覆盖任意主题变量。\"],\"o21Y+P\":[\"条目\"],\"oKOOsY\":[\"颜色主题\"],\"oSiRP0\":[\"系统链接\"],\"ode0+L\":[\"主题示例\"],\"ovBPCi\":[\"默认\"],\"p1Z67P\":[\"当 primary 过于僵硬时,整个页面开始像产品界面,而不是写作空间。\"],\"p2/GCq\":[\"确认密码\"],\"pB0OKE\":[\"新建分隔线\"],\"pBHx39\":[\"深色背景\"],\"pVrU5x\":[\"如果这一页显得太有品牌姿态,最先该收一收的是默认主题的站点强调色,而不是边框或正文颜色。\"],\"pZq3aX\":[\"上传失败。请重试。\"],\"psoxDF\":[\"该字体主题不可用。请选择另一个。\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"合集\"],\"q5YRzz\":[\"颜色检查\"],\"q8RviX\":[\"有标题\"],\"qiN9NB\":[\"表面\"],\"qt89I8\":[\"草稿已保存.\"],\"quvfGs\":[\"而不是把它当作孤立的色样来判断。\"],\"rA2TFI\":[\"在不打开设置或更改当前站点主题的情况下切换调色板和模式。\"],\"rFmBG3\":[\"颜色主题\"],\"rdUucN\":[\"预览\"],\"rlonmB\":[\"无法删除. 请稍后再试.\"],\"s8G5Or\":[\"This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue.\"],\"s9gHf5\":[\"my-post-link\"],\"sER+bs\":[\"文件\"],\"satWc6\":[\"主 RSS feed\"],\"sgr2wQ\":[\"个合集\"],\"slujBW\":[\"只能使用小写字母、数字和连字符。\"],\"sxkWRg\":[\"高级\"],\"syiAKf\":[\"笔记样式\"],\"t/YqKh\":[\"移除\"],\"t42hIC\":[\"大多数人需要的所有内容都在一个 ZIP 文件中。\"],\"tCctex\":[\"品牌包包含 SVG 徽标、透明方形 PNG、圆角、方形和圆形图块,以及网站图标(favicon)、Apple Touch 图标和默认社交预览图片。\"],\"tKlWWY\":[\"表情\"],\"tSWVu5\":[\"发布于 \",[\"date\"],\" \",[\"time\"]],\"tbSs3k\":[\"鲜明氛围\"],\"tfDRzk\":[\"保存\"],\"u1VTd3\":[\"调色板、表面色调与整体氛围\"],\"u3wRF+\":[\"已发布\"],\"u6KOjV\":[\"想调得更细?\"],\"ui6aMF\":[\"这些设备当前已登录到您的账户。撤销任何您不认识的会话。\"],\"uowbPn\":[\"Remove attachment\"],\"v3E8iS\":[\"实用清单\"],\"vBEKwo\":[\"在这里管理这个站点的当前会话。密码和托管站点访问权限通过 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"排版选项与阅读体验\"],\"vSJd18\":[\"视频\"],\"vSYKYI\":[\"主 feed\"],\"vTuib7\":[\"这会控制 /feed 返回哪一种 feed。\"],\"vXCC6J\":[\"有些内容看起来不对。请检查表单并重试。\"],\"vXIe7J\":[\"语言\"],\"vdFnYM\":[\"重置链接\"],\"vgpfCi\":[\"保存草稿\"],\"vmQmHx\":[\"添加自定义 CSS 来覆盖任何样式。使用诸如 [data-page], [data-post], [data-format] 的数据属性来定位特定元素。\"],\"vpSPA1\":[\"身份验证密钥缺失. 检查你的环境变量.\"],\"vzU4k9\":[\"新建合集\"],\"vzX5FB\":[\"删除账户\"],\"w0Emel\":[\"建议链接\"],\"w6mlns\":[\"文章详情页\"],\"w8Rv8T\":[\"标签为必填项\"],\"wJ+GRy\":[\"所有可见性\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"安静的界面应让文字先说话。\"],\"wc+17X\":[\"/* 在此添加自定义 CSS */\"],\"wja8aL\":[\"无标题\"],\"wlnK1t\":[\"一个 ZIP 文件,包含主标志、反向标志、方形 PNG、圆角方形和圆形图块,以及 favicon、Apple Touch 图标和社交预览图片。\"],\"wm3Zlr\":[\"所有年份\"],\"wuLtXn\":[\"目前没有活动会话。已登录的设备会显示在这里。\"],\"xCWek4\":[\"未设置文件存储。请检查服务器配置。\"],\"xVrkxi\":[\"低调设计\"],\"xVvw1i\":[\"该重置链接已失效。请求一个新的以继续。\"],\"xYilR2\":[\"媒体\"],\"xbN8dp\":[\"柔和的颜色也该保有清晰的阅读节奏。\"],\"xeiujy\":[\"仅文本\"],\"xhTx3y\":[\"在大多数场景选择标准徽标,需要更高对比度时选择反色徽标。\"],\"y28hnO\":[\"发布\"],\"y2o/Y0\":[\"此链接已过期\"],\"y8Md/V\":[\"语言和时间已更新。\"],\"yNCqOt\":[\"Latest feed\"],\"yQ2kGp\":[\"加载更多\"],\"yQ3kNF\":[\"请输入以下短语以确认:\"],\"ycM1Xg\":[\"没有结果。尝试不同的关键词。\"],\"yjjCV8\":[\"固定 feed 链接\"],\"yjkELF\":[\"确认新密码\"],\"ylo1I0\":[\"上次使用 \",[\"0\"]],\"ynMAhG\":[\"默认徽标\"],\"yzF66j\":[\"链接\"],\"z8ajIE\":[\"找到 1 条结果\"],\"zBFr9G\":[\"粘贴一篇长文章、AI 回复或任何文本...\\n\\nMarkdown 格式将被保留.\"],\"zJDAbh\":[\"不保存\"],\"zXH2jX\":[\"语言与时间\"],\"zcDmsG\":[\"精选帖子\"],\"zoK+eO\":[\"先补上标题,再发布这条链接。\"],\"zwBp5t\":[\"私密\"],\"zxRN6H\":[\"页首链接、首页视图和溢出菜单\"]}");
1865
1865
  //#endregion
1866
1866
  //#region src/i18n/locales/zh-Hant.ts
1867
- var messages = JSON.parse("{\"+2aYLu\":[\"頁首連結數量上限已更新。\"],\"+4u2g6\":[\"已製作好的 1:1 PNG,適用於簡報、樣機、目錄及其他方形配置。\"],\"+AXdXp\":[\"標籤和 URL 為必填\"],\"+DPYOZ\":[\"新增指向主 RSS feed 的連結。可在一般設定中修改 /feed 的輸出內容。\"],\"+G8qqW\":[\"選集已儲存。\"],\"+IJm1Z\":[\"淡化\"],\"+Irvp3\":[\"此頁面上的所有內容皆可直接用於文章、發布貼文、名錄及產品報導。\"],\"+Qaboy\":[\"網站圖示\"],\"+fWu2O\":[\"更平靜、更溫暖的強調色,讓預設主題更安靜,也更有分寸。\"],\"+h8YKs\":[\"低干擾配色,帶來更乾淨、更平靜的閱讀節奏。\"],\"+siMqD\":[\"日誌\"],\"+zy2Nq\":[\"類型\"],\"/3H2/s\":[\"這個託管站點透過 \",[\"providerLabel\"],\" 登入。在那裡管理密碼和託管站點存取權限。\"],\"/DFKdU\":[\"輸入引述...\"],\"/PfPLc\":[\"標籤(選填)\"],\"/PoNoq\":[\"編輯連結\"],\"/Ui2OV\":[\"在深色背景上使用反白標誌。\"],\"/Ybds4\":[\"Jant 的主要標誌,用於網站、檔案、媒體報導與編輯版面。\"],\"/rTz0M\":[\"音訊\"],\"0+tKwI\":[\"匯出與示範限制\"],\"0EcUWz\":[\"要放棄變更嗎?\"],\"0Lj7or\":[\"儲存文字附件?\"],\"0OGSSc\":[\"頭像顯示已更新。\"],\"0UzCUX\":[\"更新您用來登入的密碼\"],\"0XDp7X\":[\"連結應該在頁面上清晰易讀,不應帶有發光效果.\"],\"0ieXE7\":[\"評分最高\"],\"14BEca\":[\"了解原因\"],\"15++NM\":[\"行內強調\"],\"1DBGsz\":[\"筆記\"],\"1F6Mzc\":[\"目前尚無導覽項目。新增連結或在下方啟用系統項目。\"],\"1NeeWI\":[\"方形資產,用於頭像、應用程式、瀏覽器和分享連結\"],\"1THMr2\":[\"品牌包\"],\"1njn7W\":[\"淺色\"],\"2B7HLH\":[\"新增貼文\"],\"2C7mSG\":[\"選集連結\"],\"2DoBvq\":[\"訂閱源\"],\"2ETv7R\":[\"在真實閱讀情境中微調顏色\"],\"2HbvFp\":[\"實際文章元件\"],\"2MXb5X\":[\"安靜設計手記\"],\"2PTjMB\":[\"我想刪除 \",[\"siteName\"]],\"2cFU6q\":[\"網站頁尾\"],\"2koDOQ\":[\"貼文串 強調色\"],\"2q/Q7x\":[\"可見性\"],\"2sCqzD\":[\"用於網站、檔案、文章,以及其他淺色或中性背景。\"],\"3Cw1AI\":[\"新增選集\"],\"3VrybB\":[\"重新導向\"],\"3Yvsaz\":[\"302 (暫時)\"],\"3lJk5u\":[\"保持圖稿不變.\"],\"3mdteM\":[\"再判斷這個強調色是否帶上了過多產品化的氣息。\"],\"3n0zbB\":[\"示範模式下不提供工作階段管理。請直接使用共享示範工作階段。\"],\"3neqtf\":[\"貼文串 強調色\"],\"3qkggm\":[\"全螢幕\"],\"3vMdv3\":[\"這個連結是保留位址,請換一個。\"],\"3wKq0C\":[\"無法儲存。 請稍後再試。\"],\"3xi01/\":[\"最後檢查頁尾的資訊,確保強調元素不會與排版相互衝突。\"],\"47iMgt\":[\"值得借鏡的編輯介面\"],\"49Bsal\":[\"訂閱源設定已更新。\"],\"4D09NB\":[\"連結到你的選集頁\"],\"4J/OYU\":[\"選集已建立。\"],\"4Jge8E\":[\"目前的工作階段\"],\"4KIa+q\":[\"匯出已下載。\"],\"4cEClj\":[\"工作階段\"],\"4eiXo+\":[\"留空則自動生成。\"],\"4pV0kE\":[\"可用作頭像\"],\"4zGJ5E\":[\"永久刪除帳號\"],\"5VQnR3\":[\"當你需要一個不會變動的 feed 連結時,使用這些地址。\"],\"5lWFkC\":[\"登入\"],\"5pAjd8\":[\"強調色應該有存在感,但不要過於刺眼。\"],\"5sEkBi\":[\"開啟原始檔案\"],\"69OXZB\":[\"刪除託管站點\"],\"6ArdBh\":[\"將精選貼文作為 /feed 的內容。\"],\"6DjeBT\":[\"示範站點會一律對搜尋引擎隱藏。\"],\"6FFB7q\":[\"將最新公開貼文作為 /feed 的內容。\"],\"6K1Vef\":[\"永久刪除此部落格? 此操作無法復原。\"],\"6UTABI\":[\"選集排序已更新。\"],\"6V3Ea3\":[\"已複製\"],\"6Y4BBO\":[\"以溫暖紙張色調呈現的抽象編輯版面\"],\"6cjUDB\":[\"品牌資產\"],\"6lGV3K\":[\"顯示較少\"],\"6p0JeQ\":[\"以確保兩者仍然感覺屬於同一個產品。\"],\"6rhkhp\":[\"首頁檢視已更新。\"],\"6sVyMq\":[\"先補上 URL,再發佈這則連結。\"],\"6wixKm\":[\"下載一個 Zola 站點 ZIP,可用於靜態發佈或匯入另一套 Jant。\"],\"6yCv8j\":[\"儲存對文字附件的變更、不儲存,或繼續編輯。\"],\"72fkwh\":[\"將精選設為首頁檢視\"],\"74kJNs\":[\"查看這個貼文串裡更早的筆記\"],\"7DvUqV\":[\"從上到下閱讀頁面,勿查看色票。\"],\"7FaY4u\":[\"使用方式\"],\"7G9YLi\":[\"允許搜尋引擎收錄我的網站\"],\"7MZxzw\":[\"密碼已變更.\"],\"7aris6\":[\"3月15日\"],\"7d1a0d\":[\"公開\"],\"7hYXO0\":[\"將此用於深色背景、以影像為背景的表面,以及任何會使綠色 logo 失去對比的配置\"],\"7kMW54\":[\"在瀏覽器中開啟原始 SVG\"],\"7nGhhM\":[\"在想什麼?\"],\"7vhWI8\":[\"新密碼\"],\"7z05Pf\":[\"Open the hosted site controls in \",[\"providerLabel\"],\" to cancel billing or permanently delete this site.\"],\"81nFIS\":[\"密碼不相符. 請確保兩個欄位相同.\"],\"87a/t/\":[\"標籤\"],\"89Upyo\":[\"該主題不可用。請選擇其他主題。\"],\"8BfEpW\":[\"託管帳號\"],\"8Btgys\":[\"草稿已刪除.\"],\"8U2Z7f\":[\"新增自訂網址\"],\"8WX0J+\":[\"你的想法(選填)\"],\"8ZsakT\":[\"密碼\"],\"8bpHix\":[\"無法建立您的帳戶。請檢查資料後再試一次。\"],\"8eC78s\":[\"較柔和的強調色讓\"],\"8tM8+a\":[\"儲存為草稿\"],\"9+vGLh\":[\"自訂 CSS\"],\"90IRF2\":[\"這篇文章想回答一個具體問題:當預設強調色要撐起一整段閱讀體驗時,它是否依然足夠平靜?\"],\"9SHZas\":[\"登入時顯示「設定」,未登入時顯示「登入」\"],\"9T7Cwm\":[\"重新導向、自訂路徑與 URL 控制\"],\"9aUyym\":[\"查看您在哪裡已登入並終止舊的登入會話\"],\"9aloPG\":[\"參考資料\"],\"9dr9Nh\":[\"打開外部連結\"],\"A1D8Yt\":[\"強調色該承擔什麼\"],\"A1taO8\":[\"搜尋\"],\"A2Vg/u\":[\"導覽與閱讀狀態\"],\"Ac5qDn\":[\"拖曳選集和分隔線,調整成你想要的順序。\"],\"AeXO77\":[\"帳戶\"],\"AjHkcv\":[\"社群分享與連結展開時的預設預覽圖片。\"],\"AnY+O9\":[\"在首頁底部顯示「Build with Jant」\"],\"ApZDMk\":[\"這會用於你的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 512×512 像素、帶純色背景的正方形 PNG 圖片。\"],\"AyHO4m\":[\"這個選集是關於什麼的?\"],\"B1FFMj\":[\"下載品牌套件\"],\"B495Gs\":[\"封存\"],\"B4ESok\":[\"API 參考\"],\"BdjLtf\":[\"個貼文串\"],\"Bmaby2\":[\"所有格式\"],\"C+9df9\":[\"引用或凸顯的段落應該感覺像註解,而不是警告。\"],\"C0/57J\":[\"這是選集連結的最後一段。\"],\"CAh1km\":[\"個選集\"],\"D4em/+\":[\"標誌\"],\"DCKkhU\":[\"目前密碼\"],\"DHhJ7s\":[\"上一頁\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 中管理密碼和託管站點存取權限\"],\"DOx286\":[\"草稿已還原。\"],\"DPfwMq\":[\"完成\"],\"DYlMYF\":[\"內建背景\"],\"DoJzLz\":[\"選集\"],\"Du2B9f\":[\"預設強調色應優先支援閱讀. 先比較它與 the\"],\"DxwUcG\":[\"先將色盤當作內容來閱讀\"],\"E3NcGH\":[\"方形標誌 PNG\"],\"ECrbov\":[\"氛圍感更強的配色,時間、地點和情緒感更鮮明。\"],\"EEYbdt\":[\"發布\"],\"EGwzOK\":[\"完成設定\"],\"EHWwm1\":[\"預設的重點應有書寫感,而非品牌化\"],\"EO3I6h\":[\"上傳失敗。請稍後再試。\"],\"EQNPYo\":[\"精選於 \",[\"date\"],\" \",[\"time\"]],\"EQtz4D\":[\"開啟幾個連結,檢查它們是否仍然與頁面原生風格相符。\"],\"EUPyPZ\":[\"以及另外 \",[\"count\"],\" 個\"],\"EetoJL\":[\"引導視線而不搶佔版面。\"],\"Eiv3bO\":[\"按鈕可以保持穩定,但連結、貼文串標記與細微的強調應該感覺更接近紙上的墨跡,而非儀表板的外觀。\"],\"EmQw8O\":[\"如果這篇文章仍讓你想繼續閱讀,代表配色可能已經很接近了。\"],\"Enslfm\":[\"目的地\"],\"EsJdRp\":[\"儲存主題\"],\"FESYvt\":[\"為視障者描述此內容...\"],\"FEr96N\":[\"主題\"],\"FGySZL\":[\"預設的強調色在看起來像鋼筆底線時最為合適。將它與下列比較\"],\"FM+KeU\":[\"還沒有草稿。儲存草稿後就會顯示在這裡。\"],\"FMgjDM\":[\"切換內建導覽項目。啟用的項目會和連結一起顯示在導覽中。\"],\"Fdv5k7\":[\"調校時要注意什麼\"],\"FkMol5\":[\"精選\"],\"Fxf4jq\":[\"描述(選填)\"],\"G0qJsQ\":[\"找不到安全權杖。請重新整理頁面後再試一次。\"],\"G2u/aQ\":[\"下載官方 Jant 標誌、圖示與預覽資產。\"],\"GMMWcy\":[\"名稱、中繼資料、語言與搜尋預設值\"],\"GX2VMa\":[\"建立您的管理員帳號.\"],\"GXsAby\":[\"撤銷\"],\"GiRWtR\":[\"為什麼預設強調色應該像書寫,而不是品牌標記\"],\"GlEzsR\":[\"供搜尋引擎與訂閱閱讀器使用的簡短介紹。僅限純文字。\"],\"GorKul\":[\"歡迎使用 Jant\"],\"GxkJXS\":[\"上傳中...\"],\"GzTVPx\":[\"匯出靜態站點\"],\"H29JXm\":[\"+ 替代文字\"],\"H4lgRd\":[\"身分驗證尚未設定. 請檢查您的伺服器設定.\"],\"HFPGej\":[\"沒有符合這些篩選條件的貼文串。調整篩選條件,或清除所有篩選。\"],\"HG79RB\":[\"以私密方式發佈\"],\"HKH+W+\":[\"資料\"],\"HNEHJP\":[\"示範憑證已預先填入 — 按「登入」以繼續。\"],\"HbAIQc\":[\"供參考的連結,用於檢查語氣是否偏向編輯風格而非促銷性.\"],\"Hp1l6f\":[\"目前\"],\"Ht1V3q\":[\"也因為這個原因,行內程式碼應該保持中性。像 theme.siteAccent = soften(green, 12%) 這樣的內容,不該突然變成頁面裡最吵的一部分。\"],\"HxlY7t\":[\"修改後,訂閱 /feed 的讀者會收到不同內容。\"],\"I22eN0\":[\"已分享的連結\"],\"I6gXOa\":[\"路徑\"],\"I6zLrz\":[\"請在需要透明的方形標誌、帶內建背景的造型方塊、瀏覽器圖示,或預設預覽圖片時使用這些檔案。\"],\"ICsA6P\":[\"您有未儲存的變更\"],\"ID38tA\":[\"示範模式下不提供刪除帳戶。共享示範會另外重設。\"],\"IF9tPu\":[\"何時該用站點匯出、資料庫備份與復原演練。\"],\"IUX7p+\":[\"白色標誌置於 Jant 綠色圓角方塊上,適用於應用程式圖示模擬、觸控圖示、目錄列表及其他需呈現較柔和感受的方形配置。\"],\"IW5PBo\":[\"複製 Token\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"回覆\"],\"J4tAHl\":[\"標題在強調變淡時仍應保持其層級.\"],\"J6bLeg\":[\"新增自訂連結至任意 URL\"],\"JL7LF5\":[\"可用的 CSS 變數、data attributes,以及範例。\"],\"JTviaO\":[\"管理登入安全, 匯出, 以及無法復原的操作.\"],\"JYj5R2\":[\"瀏覽檔案\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"請立即複製您的 token — 之後不會再顯示。\"],\"JuN5GC\":[\"未選取任何檔案。請選擇要上傳的檔案。\"],\"KOqvXP\":[\"請勿變更顏色、拉伸、旋轉、描邊或對標誌新增任何效果。\"],\"KbS2K9\":[\"重設密碼\"],\"KdSsVl\":[\"作者 (選填)\"],\"Khu3PV\":[\"發布設定\"],\"KiJn9B\":[\"筆記\"],\"KlZ+t+\":[\"%name% + 還有 %count% 個\"],\"KsvRin\":[\"從 Latest 隱藏\"],\"KuCcWu\":[\"顯示於所有文章與頁面的底部。支援 Markdown.\"],\"KzmC5L\":[\"控制項\"],\"L0gres\":[\"其餘項目會被收納到 ··· 選單\"],\"L4t4/q\":[\"3 月 14 日\"],\"L7svJg\":[\"閱讀\"],\"Lbkbwy\":[\"用於評估強調色在較柔和、引用密集內容上的呈現的引用卡片。\"],\"LcvzvX\":[\"輕觸以重試\"],\"LdyooL\":[\"連結\"],\"LkA8jz\":[\"新增替代文字\"],\"LxRg6f\":[\"即時主題控制\"],\"M/haSd\":[\"始終顯示主題的淺色版本。\"],\"M2kIWU\":[\"字型主題\"],\"M4tzVU\":[\"最新貼文\"],\"M6CbAU\":[\"切換編輯面板\"],\"M8kJqa\":[\"草稿\"],\"MHrjPM\":[\"標題\"],\"MILa7n\":[\"方形磁貼\"],\"MSc/Yq\":[\"您要發佈變更還是捨棄它們?\"],\"MXSt4t\":[\"建立於 \",[\"0\"]],\"Mc7+6G\":[\"請輸入以 http://、https:// 或 mailto: 開頭的有效 URL。\"],\"MdMyne\":[\"來源連結(選填)\"],\"MiMY3Q\":[\"Apple 觸控圖示\"],\"MiyoI7\":[\"預設筆記範例\"],\"MqghUt\":[\"搜尋文章...\"],\"MrvdXK\":[\"以紙感為先的配色,介面更溫暖,也更有手寫感。\"],\"MtENL9\":[\"調整您的網站外觀、閱讀體驗與執行方式。\"],\"Myqkib\":[\"建立一個選集即可開始。\"],\"N/8NPV\":[\"刪除之前先下載站點匯出。刪除後將無法復原這個帳戶。\"],\"N7UNHY\":[\"Featured feed\"],\"N8UzTV\":[\"則回覆\"],\"NAFbuE\":[\"搜尋片段\"],\"NH9Z1R\":[\"從這裡開始\"],\"NHnUHF\":[\"Favicon 與您標頭上的個人標記\"],\"NU2Fqi\":[\"儲存 CSS\"],\"NhHXCr\":[\"自訂 URL 路徑(不含前導斜線)\"],\"Nldjdr\":[\"尚未有自訂網址。建立一個來新增轉址或為文章設定自訂路徑。\"],\"NqsRbb\":[\"Jant 標誌\"],\"O1367B\":[\"所有選集\"],\"O3oNi5\":[\"電子郵件\"],\"OEdMhi\":[\"最好的預設顏色是那種只有閱讀一段時間後才會注意到的顏色。\"],\"OEt/to\":[\"使用指引\"],\"OJxdgi\":[\"將這個連結控制在 200 個字元以內。\"],\"OSJXFg\":[\"套用到整個網站,包括管理頁面。先選擇配色,再決定要依系統顯示還是固定模式。\"],\"OaoJcz\":[\"社群預覽\"],\"OmfDbR\":[\"網站強調色\"],\"Ovks1h\":[\"較柔和的藍色感覺更像墨水,而不是產品的鍍鉻。\"],\"P/sHNL\":[\"在全域變更主題之前,請使用此頁面來評估按鈕、連結、卡片、表單、貼文串強調與低調表面。\"],\"PKhdhq\":[\"頁首顯示的連結數量\"],\"PZ7HJ8\":[\"部落格頭像\"],\"PxJ9W6\":[\"產生 Token\"],\"PxSKQl\":[\"隱藏了 \",[\"0\"],\" 則\"],\"Q2mGA7\":[\"清除篩選\"],\"QBqVyM\":[\"供 iPhone 與 iPad 捷徑使用的主畫面圖示。\"],\"Qgbxdw\":[\"為 Jant 設計更平靜的預設強調色\"],\"Qn9Ao8\":[\"圓形圖塊\"],\"Qnrzvb\":[\"啟用的 API 權杖\"],\"QyDt3L\":[\"檔案已上傳。\"],\"R5CMuK\":[\"Jant 在帶有編輯氣質的點綴下最為出色。按鈕可以保持紮實,但行內強調應該像筆跡,而不是儀表板式的醒目標示。\"],\"R6Z4LE\":[\"下載失敗。請再試一次。\"],\"R8AthW\":[\"分隔線\"],\"R9Khdg\":[\"自動\"],\"RAv3u7\":[\"與主題控制項比較\"],\"ROa4Ti\":[\"供閱讀的介面應該引導視線,而不是不斷搶奪注意力。\"],\"RdmNnl\":[\"瀏覽器分頁\"],\"RfGczC\":[\"方形標誌\"],\"Rj01Fz\":[\"連結\"],\"RxsRD6\":[\"時區\"],\"S37om9\":[\"包含資源\"],\"S8NCfs\":[\"儲存到草稿,稍後可編輯並發佈。\"],\"SJGVAw\":[\"帶有編輯風格,稍微低調。\"],\"SJmfuf\":[\"網站名稱\"],\"SKZhW9\":[\"權杖名稱\"],\"SaNhJE\":[\"感覺更有意圖,而不是黯淡無光。\"],\"SpTWH3\":[\"下載 SVG\"],\"SvRuJt\":[\"介面語氣的實地筆記\"],\"T/R+Qz\":[\"主色\"],\"TNZKpI\":[\"危險\"],\"TWt5I9\":[\"還有 \",[\"hiddenCount\"],\" 則 \",[\"0\"]],\"TvaTxw\":[\"不會出現在 Latest 中,但仍會出現在你加入的 Collection 裡。\"],\"Tz0i8g\":[\"設定\"],\"UIMXHD\":[\"移除分隔線\"],\"UaZwcz\":[\"建立後還可設定更多選項。\"],\"Uc5y7o\":[\"為網站、檔案、目錄與編輯版面選擇標準標誌。\"],\"Uj/btJ\":[\"在我的網站標頭顯示頭像\"],\"UxKoFf\":[\"導覽\"],\"V18SVO\":[\"在淺色背景上使用標誌。\"],\"V4WsyL\":[\"新增連結\"],\"V5pZwT\":[\"搜尋設定已更新。\"],\"VCA6B2\":[\"這些是真正的動態內容元件,具有實際的頁腳、摘要與行內連結。請使用此區段來判斷主題套用到實際內容後是否仍然感覺沉穩。\"],\"VhMDMg\":[\"變更密碼\"],\"Vn3jYy\":[\"導覽項目\"],\"VoZYGU\":[\"這將永久刪除你所有的資料 — 文章、媒體檔案、選集、設定,以及你的帳戶。你的部落格將會重設為初始設定狀態。此操作無法復原。\"],\"WCOanD\":[\"此參考很有用,因為它將連結與引文視為閱讀節奏的一部分。 在調整時請記住這一點\"],\"WbIbzR\":[\"正在檢查連結...\"],\"WcWS//\":[\"下載檔案\"],\"Weq9zb\":[\"一般\"],\"WhsN3P\":[\"在 Jant 中,一個好的預設重點應該感覺像編輯結構,而不是產品品牌化。這表示連結、強調與貼文串提示可以可見,而不會把頁面變成 UI 裝飾。\"],\"Wi9i06\":[\"依每位訪客的系統偏好顯示。\"],\"Wn+/rH\":[\"透明方形\"],\"WpXcBJ\":[\"這裡還沒有內容。\"],\"X+8FMk\":[\"目前的密碼不符。請再試一次。\"],\"X1G9eY\":[\"導覽預覽\"],\"XU7b+L\":[\"主要標誌檔案\"],\"XV1mAn\":[\"僅登入後可見。\"],\"XrnWzN\":[\"已發佈!\"],\"Y/F35r\":[\"使用 curl 建立貼文:\"],\"Y6hOOP\":[\"已於 \",[\"0\"],\" 登入\"],\"YF6zHf\":[\"網站設定已更新。\"],\"YIix5Y\":[\"搜尋...\"],\"YSCkGF\":[\"頁首 RSS 會指向你的 %feed% feed(/feed)。可在一般設定中修改 /feed 的輸出內容。\"],\"YUglt2\":[\"正在產生連結...\"],\"YXiA6e\":[\"主要按鈕\"],\"Ygx3Yl\":[\"用於分頁與書籤的小型瀏覽器圖示。\"],\"Z6NwTi\":[\"儲存為草稿\"],\"ZGs2so\":[\"要永久刪除此選集嗎?裡面的貼文不會被刪除。\"],\"ZQKLI1\":[\"危險區域\"],\"ZV5ykW\":[\"下載 PNG\"],\"ZhhOwV\":[\"引用\"],\"ZiooJI\":[\"API 權杖\"],\"Zm7Qb0\":[\"備份與復原指南\"],\"ZmSeP+\":[\"要儲存為草稿嗎?\"],\"ZmUkwN\":[\"新增自訂連結至導覽列\"],\"a14mj8\":[\"未知裝置\"],\"a3LDKx\":[\"安全性\"],\"a5j82I\":[\"沒有選集符合這次搜尋。試試其他名稱。\"],\"aAIQg2\":[\"外觀\"],\"aFkzVF\":[\"目標貼文或選集的 URL slug\"],\"aHTB7P\":[\"附加於您的貼文的補充內容\"],\"aMEyv0\":[\"保持穩健且易讀.\"],\"aN6wx0\":[\"精選裡還沒有內容。將貼文標記為精選後,就會顯示在這裡。\"],\"aYpXKS\":[\"並檢查該強調色是在引導注意力還是過於搶眼。\"],\"af+9p6\":[\"低調中繼資料\"],\"alKG0+\":[\"字型主題\"],\"an5hVd\":[\"圖片\"],\"anibOb\":[\"關於本部落格\"],\"any7NR\":[\"主題指南\"],\"auFlOr\":[\"圖示與預覽\"],\"avuFKG\":[\"個貼文串\"],\"b+/jO6\":[\"301 (永久)\"],\"bFpC86\":[\"一次下載所有內容\"],\"bHOiy1\":[\"示範模式下不提供密碼變更。請使用共享的示範憑證登入。\"],\"bHYIks\":[\"登出\"],\"bfCbdi\":[\"目前貼文\"],\"bkBJmZ\":[\"這在檢查顏色時很有用,因為它把重點色放在引文樣式、摘要資料和較為低調的解釋段落旁。將它和原先的比較\"],\"bmrL08\":[\"示範模式下會隱藏工作階段、密碼變更和刪除帳戶。匯出仍可使用。\"],\"bzSI52\":[\"放棄\"],\"c2JRUS\":[\"自動生成\"],\"c3MN2z\":[\"所有可用的端點和請求格式.\"],\"cFpd0L\":[\"克制中性色\"],\"cIoW7X\":[\"行內連結\"],\"cSDy01\":[\"自訂 CSS 已更新。\"],\"cTUByn\":[\"由新到舊\"],\"cb7FR8\":[\"白色 logo 放在 Jant 綠色方形圖塊上,適用於需要真正從邊到邊方形的平台與版面配置。\"],\"ccaIM9\":[\"更多連結\"],\"cgmi4V\":[\"刪除草稿\"],\"clzoNp\":[\"始終顯示主題的深色版本。\"],\"cnGeoo\":[\"刪除\"],\"d+F4pf\":[\"圖片應該安靜地置於文章中,而不是讓人感覺像卡片預覽。\"],\"d/o/BH\":[\"無法發布。已儲存為草稿。\"],\"d3FRkY\":[\"無法複製,請再試一次。\"],\"dD7NPy\":[\"外框\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"確認刪除帳號\"],\"dUsGbd\":[\"恰到好處的裝飾應融入文字,直到需要時才顯現。\"],\"dXoieq\":[\"摘要\"],\"dYKrp3\":[\"從 Latest 隱藏\"],\"dbUuAj\":[\"會出現在 Latest 中。\"],\"dk7TCH\":[\"永久刪除所有資料並重設部落格\"],\"e/tSI5\":[\"導覽排序已更新。\"],\"ePK91l\":[\"編輯\"],\"eWLklq\":[\"引用\"],\"ebQKK7\":[\"網站\"],\"egK+Yy\":[\"用於腳本與自動化的 Bearer 權杖\"],\"ehj/zN\":[\"重新導向類型\"],\"eneWvv\":[\"草稿\"],\"f+m8jj\":[\"訂閱源 URL 已複製。\"],\"f4MAoA\":[\"部分上傳失敗。已儲存為草稿。\"],\"f5s9EI\":[\"按 N 開始寫作\"],\"f6Hub0\":[\"排序\"],\"f8fH8W\":[\"設計\"],\"fFDkGR\":[\"工作階段、密碼與匯出\"],\"fKrDxS\":[\"品牌圖塊\"],\"fMPkxb\":[\"顯示更多\"],\"fqDzSu\":[\"評分\"],\"fttd2R\":[\"我的選集\"],\"gFdWl+\":[\"一篇長篇文章範例,用於在真實閱讀情境中檢查預設調色盤。\"],\"gNKz6Z\":[\"選集已刪除。\"],\"gXH9r/\":[\"開啟原始 PNG 檔案\"],\"gj52YE\":[\"此選集為空。請從編輯器新增貼文。\"],\"gpaPhA\":[\"協助螢幕閱讀器描述圖片\"],\"gtQsRO\":[\"建立自訂網址\"],\"h5RcXU\":[\"Post hidden\"],\"hBO/y4\":[\"安全權杖已過期。請重新整理頁面後再試一次。\"],\"hDRU5q\":[\"找到 \",[\"0\"],\" 筆結果\"],\"hGmyDl\":[\"權杖讓你不必登入,也能從腳本、捷徑和其他工具存取 API。\"],\"hLlWo5\":[\"幾項簡單規則.\"],\"hXzOVo\":[\"下一頁\"],\"he3ygx\":[\"複製\"],\"heSQoS\":[\"貼上網址...\"],\"i0qMbr\":[\"首頁\"],\"i0vDGK\":[\"排序方式\"],\"i5+Y7d\":[\"下載官方 Jant 標誌、圖示與預覽檔案。\"],\"i6nDCI\":[\"請選擇新密碼.\"],\"iEUzMn\":[\"系統\"],\"iG7KNr\":[\"標誌\"],\"iH8pgl\":[\"返回\"],\"iVOMRi\":[\"首頁設定已更新。\"],\"icZdbX\":[\"尚未歸入已命名分組的主題。\"],\"ilSmIt\":[\"銳利邊緣\"],\"iu7tUI\":[\"麵包屑導覽\"],\"j4VrG6\":[\"下載匯出 ZIP\"],\"j5nQL2\":[\"例如 iOS Shortcuts\"],\"jAXE5p\":[\"反白標誌\"],\"jAqB/k\":[\"私密發布\"],\"jO813m\":[\"更多配色\"],\"jQflRT\":[\"這會使用真實的單篇文章詳細呈現,示例包含較長的文章、內嵌圖片、表格、列表、引用和程式碼。內容欄位維持與正式網站相同的寬度。\"],\"jUV7CU\":[\"上傳頭像\"],\"jVUmOK\":[\"支援 Markdown\"],\"jd+8Mm\":[\"社群預覽圖片\"],\"jfaqmf\":[\"關閉後,首頁會先顯示你的最新貼文。\"],\"jgBjXJ\":[\"撤銷此權杖?任何使用它的腳本將會停止運作。\"],\"ji7oVU\":[\"編輯貼文\"],\"jpctdh\":[\"檢視\"],\"jvtP25\":[\"在線程中 →\"],\"jvyYZG\":[\"在想什麼...\"],\"k1ifdL\":[\"處理中...\"],\"k3Iw35\":[\"在標準綠色版本對比度不足時,改用白色標誌。\"],\"kMXclu\":[\"下載站點匯出\"],\"kNiQp6\":[\"已釘選\"],\"kPMIr+\":[\"為連結加上標題...\"],\"kVQs7s\":[\"細緻樣式覆寫\"],\"ke1gWS\":[\"自訂 URL\"],\"kfcRb0\":[\"頭像\"],\"kj6ppi\":[\"項目\"],\"kr39oD\":[\"還沒有選集。建立一個選集,依主題整理貼文。\"],\"kzvWob\":[\"連結到文章歸檔頁\"],\"lLW3vJ\":[\"目標網址別名\"],\"laT1IJ\":[\"iOS 主畫面\"],\"lb+Xwx\":[\"自訂連結\"],\"m16xKo\":[\"新增\"],\"mDyWuM\":[\"暖調編輯風\"],\"mKT7g0\":[\"文字附件\"],\"mSNmrX\":[\"列出貼文:\"],\"mc/vLq\":[\"這個連結已被佔用。換一個試試。\"],\"n1ekoW\":[\"登入\"],\"n6QD94\":[\"由舊到新\"],\"nFukaP\":[\"電子郵件或密碼錯誤。請檢查您的登入資訊後重試。\"],\"nK07ni\":[\"為你的網站選擇一種排版方向。每個主題都會同時改變字型搭配與閱讀節奏。\"],\"nV6twc\":[\"整理\"],\"nd8Puv\":[\"白色標誌置於 Jant 綠色圓形,適用於個人資料圖片、徽章及其他需要即用圓形配置的情境。\"],\"ndrEYW\":[\"當強調色更溫暖一點、也沒那麼直白時,整頁會更像寫作空間,而不是產品介面。\"],\"o/vNDE\":[\"可讓你覆寫任何主題變數。\"],\"o21Y+P\":[\"項目\"],\"oKOOsY\":[\"色彩主題\"],\"oSiRP0\":[\"系統連結\"],\"ode0+L\":[\"主題範例\"],\"ovBPCi\":[\"預設\"],\"p1Z67P\":[\"當 primary 太僵硬時,整個頁面讀起來像產品介面,而非寫作空間。\"],\"p2/GCq\":[\"確認密碼\"],\"pB0OKE\":[\"新增分隔線\"],\"pBHx39\":[\"深色背景\"],\"pVrU5x\":[\"如果這一頁顯得太有品牌姿態,最先該收一收的是預設主題的網站強調色,而不是邊框或正文顏色。\"],\"pZq3aX\":[\"上傳失敗。請再試一次。\"],\"psoxDF\":[\"該字型主題不可用。請選擇其他一個。\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"選集\"],\"q5YRzz\":[\"顏色檢查\"],\"q8RviX\":[\"有標題\"],\"qiN9NB\":[\"表面\"],\"qt89I8\":[\"草稿已儲存。\"],\"quvfGs\":[\"而不是把它當作孤立的色票來評斷。\"],\"rA2TFI\":[\"切換色盤與模式,無需開啟設定或變更啟用中的網站主題。\"],\"rFmBG3\":[\"色彩主題\"],\"rdUucN\":[\"預覽\"],\"rlonmB\":[\"無法刪除. 請稍後再試.\"],\"s8G5Or\":[\"This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue.\"],\"s9gHf5\":[\"my-post-link\"],\"sER+bs\":[\"檔案\"],\"satWc6\":[\"主 RSS feed\"],\"sgr2wQ\":[\"個選集\"],\"slujBW\":[\"只能使用小寫字母、數字和連字號。\"],\"sxkWRg\":[\"進階\"],\"syiAKf\":[\"筆記樣式\"],\"t/YqKh\":[\"移除\"],\"t42hIC\":[\"大多數人需要的東西都在同一個 ZIP 檔案中。\"],\"tCctex\":[\"品牌套件包含 SVG 標誌、透明方形 PNG、圓角、方形與圓形圖塊、favicon、Apple touch icon,以及預設的社交預覽圖片。\"],\"tKlWWY\":[\"表情符號\"],\"tSWVu5\":[\"發佈於 \",[\"date\"],\" \",[\"time\"]],\"tbSs3k\":[\"鮮明氛圍\"],\"tfDRzk\":[\"儲存\"],\"u1VTd3\":[\"調色盤、表面色調與整體氛圍\"],\"u3wRF+\":[\"已發佈\"],\"u6KOjV\":[\"想自訂得更細?\"],\"ui6aMF\":[\"這些裝置目前已登入您的帳戶。撤銷任何您不認識的工作階段。\"],\"uowbPn\":[\"Remove attachment\"],\"v3E8iS\":[\"實用檢查清單\"],\"vBEKwo\":[\"在這裡管理這個站點的目前工作階段。密碼和託管站點存取權限都透過 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"字體選擇與閱讀質感\"],\"vSJd18\":[\"影片\"],\"vSYKYI\":[\"主 feed\"],\"vTuib7\":[\"這會控制 /feed 要回傳哪一種 feed。\"],\"vXCC6J\":[\"有些地方看起來不對。請檢查表單並再試一次。\"],\"vXIe7J\":[\"語言\"],\"vdFnYM\":[\"重設連結\"],\"vgpfCi\":[\"儲存草稿\"],\"vmQmHx\":[\"新增自訂 CSS 以覆寫任何樣式。使用像 [data-page], [data-post], [data-format] 的資料屬性來針對特定元素。\"],\"vpSPA1\":[\"驗證祕鑰遺失。請檢查您的環境變數。\"],\"vzU4k9\":[\"新增選集\"],\"vzX5FB\":[\"刪除帳號\"],\"w0Emel\":[\"建議連結\"],\"w6mlns\":[\"文章詳細頁面\"],\"w8Rv8T\":[\"標籤為必填\"],\"wJ+GRy\":[\"全部可見性\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"安靜的介面應讓文字先說話。\"],\"wc+17X\":[\"/* 在此放入自訂 CSS */\"],\"wja8aL\":[\"無標題\"],\"wlnK1t\":[\"一個 ZIP 檔,內含主標誌、反向標誌、方形 PNG、圓角、方形及圓形圖示,另外還有 favicon、Apple touch icon 與社群預覽圖像。\"],\"wm3Zlr\":[\"所有年份\"],\"wuLtXn\":[\"目前沒有活動中的工作階段。已登入的裝置會顯示在這裡。\"],\"xCWek4\":[\"檔案儲存尚未設定。請檢查您的伺服器設定。\"],\"xVrkxi\":[\"低調設計\"],\"xVvw1i\":[\"此重設連結已不再有效。請申請新的連結以繼續。\"],\"xYilR2\":[\"媒體\"],\"xbN8dp\":[\"柔和的顏色也該保有清晰的閱讀節奏。\"],\"xeiujy\":[\"文字\"],\"xhTx3y\":[\"大多數版位請選擇標準 logo,需要更高對比時請使用反白 logo。\"],\"y28hnO\":[\"發佈\"],\"y2o/Y0\":[\"此連結已過期\"],\"y8Md/V\":[\"語言和時間已更新。\"],\"yNCqOt\":[\"Latest feed\"],\"yQ2kGp\":[\"載入更多\"],\"yQ3kNF\":[\"請輸入以下字句以確認:\"],\"ycM1Xg\":[\"沒有結果。請嘗試不同的關鍵字。\"],\"yjjCV8\":[\"固定 feed 連結\"],\"yjkELF\":[\"確認新密碼\"],\"ylo1I0\":[\"上次使用於 \",[\"0\"]],\"ynMAhG\":[\"預設標誌\"],\"yzF66j\":[\"連結\"],\"z8ajIE\":[\"找到 1 個結果\"],\"zBFr9G\":[\"貼上長文章、AI 回覆或任何文字...\\n\\nMarkdown 格式會被保留.\"],\"zJDAbh\":[\"不儲存\"],\"zXH2jX\":[\"語言與時間\"],\"zcDmsG\":[\"精選貼文\"],\"zoK+eO\":[\"先補上標題,再發佈這則連結。\"],\"zwBp5t\":[\"私密\"],\"zxRN6H\":[\"頁首連結、首頁檢視與溢出選單\"]}");
1867
+ var messages = JSON.parse("{\"+2aYLu\":[\"頁首連結數量上限已更新。\"],\"+4u2g6\":[\"已製作好的 1:1 PNG,適用於簡報、樣機、目錄及其他方形配置。\"],\"+AXdXp\":[\"標籤和 URL 為必填\"],\"+DPYOZ\":[\"新增指向主 RSS feed 的連結。可在一般設定中修改 /feed 的輸出內容。\"],\"+G8qqW\":[\"選集已儲存。\"],\"+IJm1Z\":[\"淡化\"],\"+Irvp3\":[\"此頁面上的所有內容皆可直接用於文章、發布貼文、名錄及產品報導。\"],\"+Qaboy\":[\"網站圖示\"],\"+fWu2O\":[\"更平靜、更溫暖的強調色,讓預設主題更安靜,也更有分寸。\"],\"+h8YKs\":[\"低干擾配色,帶來更乾淨、更平靜的閱讀節奏。\"],\"+siMqD\":[\"日誌\"],\"+zy2Nq\":[\"類型\"],\"/3H2/s\":[\"這個託管站點透過 \",[\"providerLabel\"],\" 登入。在那裡管理密碼和託管站點存取權限。\"],\"/DFKdU\":[\"輸入引述...\"],\"/PfPLc\":[\"標籤(選填)\"],\"/PoNoq\":[\"編輯連結\"],\"/Ui2OV\":[\"在深色背景上使用反白標誌。\"],\"/Ybds4\":[\"Jant 的主要標誌,用於網站、檔案、媒體報導與編輯版面。\"],\"/rTz0M\":[\"音訊\"],\"0+tKwI\":[\"匯出與示範限制\"],\"0EcUWz\":[\"要放棄變更嗎?\"],\"0Lj7or\":[\"儲存文字附件?\"],\"0OGSSc\":[\"頭像顯示已更新。\"],\"0UzCUX\":[\"更新您用來登入的密碼\"],\"0XDp7X\":[\"連結應該在頁面上清晰易讀,不應帶有發光效果.\"],\"0ieXE7\":[\"評分最高\"],\"11h9eK\":[\"Includes\"],\"14BEca\":[\"了解原因\"],\"15++NM\":[\"行內強調\"],\"1DBGsz\":[\"筆記\"],\"1F6Mzc\":[\"目前尚無導覽項目。新增連結或在下方啟用系統項目。\"],\"1NeeWI\":[\"方形資產,用於頭像、應用程式、瀏覽器和分享連結\"],\"1THMr2\":[\"品牌包\"],\"1njn7W\":[\"淺色\"],\"2B7HLH\":[\"新增貼文\"],\"2C7mSG\":[\"選集連結\"],\"2DoBvq\":[\"訂閱源\"],\"2ETv7R\":[\"在真實閱讀情境中微調顏色\"],\"2HbvFp\":[\"實際文章元件\"],\"2MXb5X\":[\"安靜設計手記\"],\"2PTjMB\":[\"我想刪除 \",[\"siteName\"]],\"2cFU6q\":[\"網站頁尾\"],\"2koDOQ\":[\"貼文串 強調色\"],\"2q/Q7x\":[\"可見性\"],\"2sCqzD\":[\"用於網站、檔案、文章,以及其他淺色或中性背景。\"],\"3Cw1AI\":[\"新增選集\"],\"3VrybB\":[\"重新導向\"],\"3Yvsaz\":[\"302 (暫時)\"],\"3lJk5u\":[\"保持圖稿不變.\"],\"3mdteM\":[\"再判斷這個強調色是否帶上了過多產品化的氣息。\"],\"3n0zbB\":[\"示範模式下不提供工作階段管理。請直接使用共享示範工作階段。\"],\"3neqtf\":[\"貼文串 強調色\"],\"3qkggm\":[\"全螢幕\"],\"3vMdv3\":[\"這個連結是保留位址,請換一個。\"],\"3wKq0C\":[\"無法儲存。 請稍後再試。\"],\"3xi01/\":[\"最後檢查頁尾的資訊,確保強調元素不會與排版相互衝突。\"],\"47iMgt\":[\"值得借鏡的編輯介面\"],\"49Bsal\":[\"訂閱源設定已更新。\"],\"4D09NB\":[\"連結到你的選集頁\"],\"4J/OYU\":[\"選集已建立。\"],\"4Jge8E\":[\"目前的工作階段\"],\"4KIa+q\":[\"匯出已下載。\"],\"4cEClj\":[\"工作階段\"],\"4eiXo+\":[\"留空則自動生成。\"],\"4pV0kE\":[\"可用作頭像\"],\"4zGJ5E\":[\"永久刪除帳號\"],\"5VQnR3\":[\"當你需要一個不會變動的 feed 連結時,使用這些地址。\"],\"5lWFkC\":[\"登入\"],\"5pAjd8\":[\"強調色應該有存在感,但不要過於刺眼。\"],\"5sEkBi\":[\"開啟原始檔案\"],\"69OXZB\":[\"刪除託管站點\"],\"6ArdBh\":[\"將精選貼文作為 /feed 的內容。\"],\"6DjeBT\":[\"示範站點會一律對搜尋引擎隱藏。\"],\"6FFB7q\":[\"將最新公開貼文作為 /feed 的內容。\"],\"6K1Vef\":[\"永久刪除此部落格? 此操作無法復原。\"],\"6UTABI\":[\"選集排序已更新。\"],\"6V3Ea3\":[\"已複製\"],\"6Y4BBO\":[\"以溫暖紙張色調呈現的抽象編輯版面\"],\"6cjUDB\":[\"品牌資產\"],\"6lGV3K\":[\"顯示較少\"],\"6p0JeQ\":[\"以確保兩者仍然感覺屬於同一個產品。\"],\"6rhkhp\":[\"首頁檢視已更新。\"],\"6sVyMq\":[\"先補上 URL,再發佈這則連結。\"],\"6wixKm\":[\"下載一個 Zola 站點 ZIP,可用於靜態發佈或匯入另一套 Jant。\"],\"6yCv8j\":[\"儲存對文字附件的變更、不儲存,或繼續編輯。\"],\"72fkwh\":[\"將精選設為首頁檢視\"],\"74kJNs\":[\"查看這個貼文串裡更早的筆記\"],\"7DvUqV\":[\"從上到下閱讀頁面,勿查看色票。\"],\"7FaY4u\":[\"使用方式\"],\"7G9YLi\":[\"允許搜尋引擎收錄我的網站\"],\"7MZxzw\":[\"密碼已變更.\"],\"7aris6\":[\"3月15日\"],\"7d1a0d\":[\"公開\"],\"7hYXO0\":[\"將此用於深色背景、以影像為背景的表面,以及任何會使綠色 logo 失去對比的配置\"],\"7kMW54\":[\"在瀏覽器中開啟原始 SVG\"],\"7nGhhM\":[\"在想什麼?\"],\"7vhWI8\":[\"新密碼\"],\"7z05Pf\":[\"Open the hosted site controls in \",[\"providerLabel\"],\" to cancel billing or permanently delete this site.\"],\"81nFIS\":[\"密碼不相符. 請確保兩個欄位相同.\"],\"87a/t/\":[\"標籤\"],\"89Upyo\":[\"該主題不可用。請選擇其他主題。\"],\"8BfEpW\":[\"託管帳號\"],\"8Btgys\":[\"草稿已刪除.\"],\"8U2Z7f\":[\"新增自訂網址\"],\"8WX0J+\":[\"你的想法(選填)\"],\"8ZsakT\":[\"密碼\"],\"8bpHix\":[\"無法建立您的帳戶。請檢查資料後再試一次。\"],\"8eC78s\":[\"較柔和的強調色讓\"],\"8tM8+a\":[\"儲存為草稿\"],\"9+vGLh\":[\"自訂 CSS\"],\"90IRF2\":[\"這篇文章想回答一個具體問題:當預設強調色要撐起一整段閱讀體驗時,它是否依然足夠平靜?\"],\"9SHZas\":[\"登入時顯示「設定」,未登入時顯示「登入」\"],\"9T7Cwm\":[\"重新導向、自訂路徑與 URL 控制\"],\"9aUyym\":[\"查看您在哪裡已登入並終止舊的登入會話\"],\"9aloPG\":[\"參考資料\"],\"9dr9Nh\":[\"打開外部連結\"],\"A1D8Yt\":[\"強調色該承擔什麼\"],\"A1taO8\":[\"搜尋\"],\"A2Vg/u\":[\"導覽與閱讀狀態\"],\"Ac5qDn\":[\"拖曳選集和分隔線,調整成你想要的順序。\"],\"AeXO77\":[\"帳戶\"],\"AjHkcv\":[\"社群分享與連結展開時的預設預覽圖片。\"],\"AnY+O9\":[\"在首頁底部顯示「Build with Jant」\"],\"ApZDMk\":[\"這會用於你的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 512×512 像素、帶純色背景的正方形 PNG 圖片。\"],\"AyHO4m\":[\"這個選集是關於什麼的?\"],\"B1FFMj\":[\"下載品牌套件\"],\"B495Gs\":[\"封存\"],\"B4ESok\":[\"API 參考\"],\"BdjLtf\":[\"個貼文串\"],\"Bmaby2\":[\"所有格式\"],\"C+9df9\":[\"引用或凸顯的段落應該感覺像註解,而不是警告。\"],\"C0/57J\":[\"這是選集連結的最後一段。\"],\"CAh1km\":[\"個選集\"],\"D4em/+\":[\"標誌\"],\"DCKkhU\":[\"目前密碼\"],\"DHhJ7s\":[\"上一頁\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 中管理密碼和託管站點存取權限\"],\"DOx286\":[\"草稿已還原。\"],\"DPfwMq\":[\"完成\"],\"DYlMYF\":[\"內建背景\"],\"DoJzLz\":[\"選集\"],\"Du2B9f\":[\"預設強調色應優先支援閱讀. 先比較它與 the\"],\"DxwUcG\":[\"先將色盤當作內容來閱讀\"],\"E3NcGH\":[\"方形標誌 PNG\"],\"ECrbov\":[\"氛圍感更強的配色,時間、地點和情緒感更鮮明。\"],\"EEYbdt\":[\"發布\"],\"EGwzOK\":[\"完成設定\"],\"EHWwm1\":[\"預設的重點應有書寫感,而非品牌化\"],\"EO3I6h\":[\"上傳失敗。請稍後再試。\"],\"EQNPYo\":[\"精選於 \",[\"date\"],\" \",[\"time\"]],\"EQtz4D\":[\"開啟幾個連結,檢查它們是否仍然與頁面原生風格相符。\"],\"EUPyPZ\":[\"以及另外 \",[\"count\"],\" 個\"],\"EetoJL\":[\"引導視線而不搶佔版面。\"],\"Eiv3bO\":[\"按鈕可以保持穩定,但連結、貼文串標記與細微的強調應該感覺更接近紙上的墨跡,而非儀表板的外觀。\"],\"EmQw8O\":[\"如果這篇文章仍讓你想繼續閱讀,代表配色可能已經很接近了。\"],\"Enslfm\":[\"目的地\"],\"EsJdRp\":[\"儲存主題\"],\"FESYvt\":[\"為視障者描述此內容...\"],\"FEr96N\":[\"主題\"],\"FGySZL\":[\"預設的強調色在看起來像鋼筆底線時最為合適。將它與下列比較\"],\"FM+KeU\":[\"還沒有草稿。儲存草稿後就會顯示在這裡。\"],\"FMgjDM\":[\"切換內建導覽項目。啟用的項目會和連結一起顯示在導覽中。\"],\"Fdv5k7\":[\"調校時要注意什麼\"],\"FkMol5\":[\"精選\"],\"Fxf4jq\":[\"描述(選填)\"],\"G0qJsQ\":[\"找不到安全權杖。請重新整理頁面後再試一次。\"],\"G2u/aQ\":[\"下載官方 Jant 標誌、圖示與預覽資產。\"],\"GMMWcy\":[\"名稱、中繼資料、語言與搜尋預設值\"],\"GX2VMa\":[\"建立您的管理員帳號.\"],\"GXsAby\":[\"撤銷\"],\"GiRWtR\":[\"為什麼預設強調色應該像書寫,而不是品牌標記\"],\"GlEzsR\":[\"供搜尋引擎與訂閱閱讀器使用的簡短介紹。僅限純文字。\"],\"GorKul\":[\"歡迎使用 Jant\"],\"GxkJXS\":[\"上傳中...\"],\"GzTVPx\":[\"匯出靜態站點\"],\"H29JXm\":[\"+ 替代文字\"],\"H4lgRd\":[\"身分驗證尚未設定. 請檢查您的伺服器設定.\"],\"HFPGej\":[\"沒有符合這些篩選條件的貼文串。調整篩選條件,或清除所有篩選。\"],\"HG79RB\":[\"以私密方式發佈\"],\"HKH+W+\":[\"資料\"],\"HNEHJP\":[\"示範憑證已預先填入 — 按「登入」以繼續。\"],\"HbAIQc\":[\"供參考的連結,用於檢查語氣是否偏向編輯風格而非促銷性.\"],\"Hp1l6f\":[\"目前\"],\"Ht1V3q\":[\"也因為這個原因,行內程式碼應該保持中性。像 theme.siteAccent = soften(green, 12%) 這樣的內容,不該突然變成頁面裡最吵的一部分。\"],\"HxlY7t\":[\"修改後,訂閱 /feed 的讀者會收到不同內容。\"],\"I22eN0\":[\"已分享的連結\"],\"I6gXOa\":[\"路徑\"],\"I6zLrz\":[\"請在需要透明的方形標誌、帶內建背景的造型方塊、瀏覽器圖示,或預設預覽圖片時使用這些檔案。\"],\"ICsA6P\":[\"您有未儲存的變更\"],\"ID38tA\":[\"示範模式下不提供刪除帳戶。共享示範會另外重設。\"],\"IF9tPu\":[\"何時該用站點匯出、資料庫備份與復原演練。\"],\"IUX7p+\":[\"白色標誌置於 Jant 綠色圓角方塊上,適用於應用程式圖示模擬、觸控圖示、目錄列表及其他需呈現較柔和感受的方形配置。\"],\"IW5PBo\":[\"複製 Token\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"回覆\"],\"IsI3kE\":[\"Nothing here yet. Add posts to one of these collections to fill this view.\"],\"J4tAHl\":[\"標題在強調變淡時仍應保持其層級.\"],\"J6bLeg\":[\"新增自訂連結至任意 URL\"],\"JL7LF5\":[\"可用的 CSS 變數、data attributes,以及範例。\"],\"JTviaO\":[\"管理登入安全, 匯出, 以及無法復原的操作.\"],\"JYj5R2\":[\"瀏覽檔案\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"請立即複製您的 token — 之後不會再顯示。\"],\"JuN5GC\":[\"未選取任何檔案。請選擇要上傳的檔案。\"],\"KOqvXP\":[\"請勿變更顏色、拉伸、旋轉、描邊或對標誌新增任何效果。\"],\"KbS2K9\":[\"重設密碼\"],\"KdSsVl\":[\"作者 (選填)\"],\"Khu3PV\":[\"發布設定\"],\"KiJn9B\":[\"筆記\"],\"KlZ+t+\":[\"%name% + 還有 %count% 個\"],\"KsvRin\":[\"從 Latest 隱藏\"],\"KuCcWu\":[\"顯示於所有文章與頁面的底部。支援 Markdown.\"],\"KzmC5L\":[\"控制項\"],\"L0gres\":[\"其餘項目會被收納到 ··· 選單\"],\"L4t4/q\":[\"3 月 14 日\"],\"L7svJg\":[\"閱讀\"],\"Lbkbwy\":[\"用於評估強調色在較柔和、引用密集內容上的呈現的引用卡片。\"],\"LcvzvX\":[\"輕觸以重試\"],\"LdyooL\":[\"連結\"],\"LkA8jz\":[\"新增替代文字\"],\"LxRg6f\":[\"即時主題控制\"],\"M/haSd\":[\"始終顯示主題的淺色版本。\"],\"M2kIWU\":[\"字型主題\"],\"M4tzVU\":[\"最新貼文\"],\"M6CbAU\":[\"切換編輯面板\"],\"M8kJqa\":[\"草稿\"],\"MHrjPM\":[\"標題\"],\"MILa7n\":[\"方形磁貼\"],\"MSc/Yq\":[\"您要發佈變更還是捨棄它們?\"],\"MXSt4t\":[\"建立於 \",[\"0\"]],\"Mc7+6G\":[\"請輸入以 http://、https:// 或 mailto: 開頭的有效 URL。\"],\"MdMyne\":[\"來源連結(選填)\"],\"MiMY3Q\":[\"Apple 觸控圖示\"],\"MiyoI7\":[\"預設筆記範例\"],\"MqghUt\":[\"搜尋文章...\"],\"MrvdXK\":[\"以紙感為先的配色,介面更溫暖,也更有手寫感。\"],\"MtENL9\":[\"調整您的網站外觀、閱讀體驗與執行方式。\"],\"Myqkib\":[\"建立一個選集即可開始。\"],\"N/8NPV\":[\"刪除之前先下載站點匯出。刪除後將無法復原這個帳戶。\"],\"N7UNHY\":[\"Featured feed\"],\"N8UzTV\":[\"則回覆\"],\"NAFbuE\":[\"搜尋片段\"],\"NH9Z1R\":[\"從這裡開始\"],\"NHnUHF\":[\"Favicon 與您標頭上的個人標記\"],\"NU2Fqi\":[\"儲存 CSS\"],\"NhHXCr\":[\"自訂 URL 路徑(不含前導斜線)\"],\"Nldjdr\":[\"尚未有自訂網址。建立一個來新增轉址或為文章設定自訂路徑。\"],\"NqsRbb\":[\"Jant 標誌\"],\"O1367B\":[\"所有選集\"],\"O3oNi5\":[\"電子郵件\"],\"OEdMhi\":[\"最好的預設顏色是那種只有閱讀一段時間後才會注意到的顏色。\"],\"OEt/to\":[\"使用指引\"],\"OJxdgi\":[\"將這個連結控制在 200 個字元以內。\"],\"OSJXFg\":[\"套用到整個網站,包括管理頁面。先選擇配色,再決定要依系統顯示還是固定模式。\"],\"OaoJcz\":[\"社群預覽\"],\"OmfDbR\":[\"網站強調色\"],\"Ovks1h\":[\"較柔和的藍色感覺更像墨水,而不是產品的鍍鉻。\"],\"P/sHNL\":[\"在全域變更主題之前,請使用此頁面來評估按鈕、連結、卡片、表單、貼文串強調與低調表面。\"],\"PKhdhq\":[\"頁首顯示的連結數量\"],\"PZ7HJ8\":[\"部落格頭像\"],\"PxJ9W6\":[\"產生 Token\"],\"PxSKQl\":[\"隱藏了 \",[\"0\"],\" 則\"],\"Q2mGA7\":[\"清除篩選\"],\"QBqVyM\":[\"供 iPhone 與 iPad 捷徑使用的主畫面圖示。\"],\"Qgbxdw\":[\"為 Jant 設計更平靜的預設強調色\"],\"Qn9Ao8\":[\"圓形圖塊\"],\"Qnrzvb\":[\"啟用的 API 權杖\"],\"QyDt3L\":[\"檔案已上傳。\"],\"R5CMuK\":[\"Jant 在帶有編輯氣質的點綴下最為出色。按鈕可以保持紮實,但行內強調應該像筆跡,而不是儀表板式的醒目標示。\"],\"R6Z4LE\":[\"下載失敗。請再試一次。\"],\"R8AthW\":[\"分隔線\"],\"R9Khdg\":[\"自動\"],\"RAv3u7\":[\"與主題控制項比較\"],\"ROa4Ti\":[\"供閱讀的介面應該引導視線,而不是不斷搶奪注意力。\"],\"RdmNnl\":[\"瀏覽器分頁\"],\"RfGczC\":[\"方形標誌\"],\"Rj01Fz\":[\"連結\"],\"RxsRD6\":[\"時區\"],\"S37om9\":[\"包含資源\"],\"S8NCfs\":[\"儲存到草稿,稍後可編輯並發佈。\"],\"SJGVAw\":[\"帶有編輯風格,稍微低調。\"],\"SJmfuf\":[\"網站名稱\"],\"SKZhW9\":[\"權杖名稱\"],\"SaNhJE\":[\"感覺更有意圖,而不是黯淡無光。\"],\"SpTWH3\":[\"下載 SVG\"],\"SvRuJt\":[\"介面語氣的實地筆記\"],\"T/R+Qz\":[\"主色\"],\"TNZKpI\":[\"危險\"],\"TWt5I9\":[\"還有 \",[\"hiddenCount\"],\" 則 \",[\"0\"]],\"TvaTxw\":[\"不會出現在 Latest 中,但仍會出現在你加入的 Collection 裡。\"],\"Tz0i8g\":[\"設定\"],\"UIMXHD\":[\"移除分隔線\"],\"UaZwcz\":[\"建立後還可設定更多選項。\"],\"Uc5y7o\":[\"為網站、檔案、目錄與編輯版面選擇標準標誌。\"],\"Uj/btJ\":[\"在我的網站標頭顯示頭像\"],\"UxKoFf\":[\"導覽\"],\"V18SVO\":[\"在淺色背景上使用標誌。\"],\"V4WsyL\":[\"新增連結\"],\"V5pZwT\":[\"搜尋設定已更新。\"],\"VCA6B2\":[\"這些是真正的動態內容元件,具有實際的頁腳、摘要與行內連結。請使用此區段來判斷主題套用到實際內容後是否仍然感覺沉穩。\"],\"VhMDMg\":[\"變更密碼\"],\"Vn3jYy\":[\"導覽項目\"],\"VoZYGU\":[\"這將永久刪除你所有的資料 — 文章、媒體檔案、選集、設定,以及你的帳戶。你的部落格將會重設為初始設定狀態。此操作無法復原。\"],\"WCOanD\":[\"此參考很有用,因為它將連結與引文視為閱讀節奏的一部分。 在調整時請記住這一點\"],\"WbIbzR\":[\"正在檢查連結...\"],\"WcWS//\":[\"下載檔案\"],\"Weq9zb\":[\"一般\"],\"WhsN3P\":[\"在 Jant 中,一個好的預設重點應該感覺像編輯結構,而不是產品品牌化。這表示連結、強調與貼文串提示可以可見,而不會把頁面變成 UI 裝飾。\"],\"Wi9i06\":[\"依每位訪客的系統偏好顯示。\"],\"Wn+/rH\":[\"透明方形\"],\"WpXcBJ\":[\"這裡還沒有內容。\"],\"X+8FMk\":[\"目前的密碼不符。請再試一次。\"],\"X1G9eY\":[\"導覽預覽\"],\"XU7b+L\":[\"主要標誌檔案\"],\"XV1mAn\":[\"僅登入後可見。\"],\"XrnWzN\":[\"已發佈!\"],\"Y/F35r\":[\"使用 curl 建立貼文:\"],\"Y6hOOP\":[\"已於 \",[\"0\"],\" 登入\"],\"YF6zHf\":[\"網站設定已更新。\"],\"YIix5Y\":[\"搜尋...\"],\"YSCkGF\":[\"頁首 RSS 會指向你的 %feed% feed(/feed)。可在一般設定中修改 /feed 的輸出內容。\"],\"YUglt2\":[\"正在產生連結...\"],\"YXiA6e\":[\"主要按鈕\"],\"Ygx3Yl\":[\"用於分頁與書籤的小型瀏覽器圖示。\"],\"Z6NwTi\":[\"儲存為草稿\"],\"ZGs2so\":[\"要永久刪除此選集嗎?裡面的貼文不會被刪除。\"],\"ZQKLI1\":[\"危險區域\"],\"ZV5ykW\":[\"下載 PNG\"],\"ZhhOwV\":[\"引用\"],\"ZiooJI\":[\"API 權杖\"],\"Zm7Qb0\":[\"備份與復原指南\"],\"ZmSeP+\":[\"要儲存為草稿嗎?\"],\"ZmUkwN\":[\"新增自訂連結至導覽列\"],\"a14mj8\":[\"未知裝置\"],\"a3LDKx\":[\"安全性\"],\"a5j82I\":[\"沒有選集符合這次搜尋。試試其他名稱。\"],\"aAIQg2\":[\"外觀\"],\"aFkzVF\":[\"目標貼文或選集的 URL slug\"],\"aHTB7P\":[\"附加於您的貼文的補充內容\"],\"aMEyv0\":[\"保持穩健且易讀.\"],\"aN6wx0\":[\"精選裡還沒有內容。將貼文標記為精選後,就會顯示在這裡。\"],\"aYpXKS\":[\"並檢查該強調色是在引導注意力還是過於搶眼。\"],\"af+9p6\":[\"低調中繼資料\"],\"alKG0+\":[\"字型主題\"],\"an5hVd\":[\"圖片\"],\"anibOb\":[\"關於本部落格\"],\"any7NR\":[\"主題指南\"],\"auFlOr\":[\"圖示與預覽\"],\"avuFKG\":[\"個貼文串\"],\"b+/jO6\":[\"301 (永久)\"],\"bFpC86\":[\"一次下載所有內容\"],\"bHOiy1\":[\"示範模式下不提供密碼變更。請使用共享的示範憑證登入。\"],\"bHYIks\":[\"登出\"],\"bfCbdi\":[\"目前貼文\"],\"bkBJmZ\":[\"這在檢查顏色時很有用,因為它把重點色放在引文樣式、摘要資料和較為低調的解釋段落旁。將它和原先的比較\"],\"bmrL08\":[\"示範模式下會隱藏工作階段、密碼變更和刪除帳戶。匯出仍可使用。\"],\"bzSI52\":[\"放棄\"],\"c2JRUS\":[\"自動生成\"],\"c3MN2z\":[\"所有可用的端點和請求格式.\"],\"cFpd0L\":[\"克制中性色\"],\"cIoW7X\":[\"行內連結\"],\"cSDy01\":[\"自訂 CSS 已更新。\"],\"cTUByn\":[\"由新到舊\"],\"cb7FR8\":[\"白色 logo 放在 Jant 綠色方形圖塊上,適用於需要真正從邊到邊方形的平台與版面配置。\"],\"ccaIM9\":[\"更多連結\"],\"cgmi4V\":[\"刪除草稿\"],\"clzoNp\":[\"始終顯示主題的深色版本。\"],\"cnGeoo\":[\"刪除\"],\"d+F4pf\":[\"圖片應該安靜地置於文章中,而不是讓人感覺像卡片預覽。\"],\"d/o/BH\":[\"無法發布。已儲存為草稿。\"],\"d3FRkY\":[\"無法複製,請再試一次。\"],\"dD7NPy\":[\"外框\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"確認刪除帳號\"],\"dUsGbd\":[\"恰到好處的裝飾應融入文字,直到需要時才顯現。\"],\"dXoieq\":[\"摘要\"],\"dYKrp3\":[\"從 Latest 隱藏\"],\"dbUuAj\":[\"會出現在 Latest 中。\"],\"dk7TCH\":[\"永久刪除所有資料並重設部落格\"],\"e/tSI5\":[\"導覽排序已更新。\"],\"ePK91l\":[\"編輯\"],\"eWLklq\":[\"引用\"],\"ebQKK7\":[\"網站\"],\"egK+Yy\":[\"用於腳本與自動化的 Bearer 權杖\"],\"ehj/zN\":[\"重新導向類型\"],\"eneWvv\":[\"草稿\"],\"f+m8jj\":[\"訂閱源 URL 已複製。\"],\"f4MAoA\":[\"部分上傳失敗。已儲存為草稿。\"],\"f5s9EI\":[\"按 N 開始寫作\"],\"f6Hub0\":[\"排序\"],\"f8fH8W\":[\"設計\"],\"fFDkGR\":[\"工作階段、密碼與匯出\"],\"fKrDxS\":[\"品牌圖塊\"],\"fMPkxb\":[\"顯示更多\"],\"fqDzSu\":[\"評分\"],\"fttd2R\":[\"我的選集\"],\"gFdWl+\":[\"一篇長篇文章範例,用於在真實閱讀情境中檢查預設調色盤。\"],\"gNKz6Z\":[\"選集已刪除。\"],\"gXH9r/\":[\"開啟原始 PNG 檔案\"],\"gj52YE\":[\"此選集為空。請從編輯器新增貼文。\"],\"gpaPhA\":[\"協助螢幕閱讀器描述圖片\"],\"gtQsRO\":[\"建立自訂網址\"],\"h5RcXU\":[\"Post hidden\"],\"hBO/y4\":[\"安全權杖已過期。請重新整理頁面後再試一次。\"],\"hDRU5q\":[\"找到 \",[\"0\"],\" 筆結果\"],\"hGmyDl\":[\"權杖讓你不必登入,也能從腳本、捷徑和其他工具存取 API。\"],\"hLlWo5\":[\"幾項簡單規則.\"],\"hXzOVo\":[\"下一頁\"],\"he3ygx\":[\"複製\"],\"heSQoS\":[\"貼上網址...\"],\"i0qMbr\":[\"首頁\"],\"i0vDGK\":[\"排序方式\"],\"i5+Y7d\":[\"下載官方 Jant 標誌、圖示與預覽檔案。\"],\"i6nDCI\":[\"請選擇新密碼.\"],\"iEUzMn\":[\"系統\"],\"iG7KNr\":[\"標誌\"],\"iH8pgl\":[\"返回\"],\"iVOMRi\":[\"首頁設定已更新。\"],\"icZdbX\":[\"尚未歸入已命名分組的主題。\"],\"ilSmIt\":[\"銳利邊緣\"],\"iu7tUI\":[\"麵包屑導覽\"],\"j4VrG6\":[\"下載匯出 ZIP\"],\"j5nQL2\":[\"例如 iOS Shortcuts\"],\"jAXE5p\":[\"反白標誌\"],\"jAqB/k\":[\"私密發布\"],\"jO813m\":[\"更多配色\"],\"jQflRT\":[\"這會使用真實的單篇文章詳細呈現,示例包含較長的文章、內嵌圖片、表格、列表、引用和程式碼。內容欄位維持與正式網站相同的寬度。\"],\"jUV7CU\":[\"上傳頭像\"],\"jVUmOK\":[\"支援 Markdown\"],\"jd+8Mm\":[\"社群預覽圖片\"],\"jfaqmf\":[\"關閉後,首頁會先顯示你的最新貼文。\"],\"jgBjXJ\":[\"撤銷此權杖?任何使用它的腳本將會停止運作。\"],\"ji7oVU\":[\"編輯貼文\"],\"jpctdh\":[\"檢視\"],\"jvtP25\":[\"在線程中 →\"],\"jvyYZG\":[\"在想什麼...\"],\"k1ifdL\":[\"處理中...\"],\"k3Iw35\":[\"在標準綠色版本對比度不足時,改用白色標誌。\"],\"kMXclu\":[\"下載站點匯出\"],\"kNiQp6\":[\"已釘選\"],\"kPMIr+\":[\"為連結加上標題...\"],\"kVQs7s\":[\"細緻樣式覆寫\"],\"ke1gWS\":[\"自訂 URL\"],\"kfcRb0\":[\"頭像\"],\"kj6ppi\":[\"項目\"],\"kr39oD\":[\"還沒有選集。建立一個選集,依主題整理貼文。\"],\"kzvWob\":[\"連結到文章歸檔頁\"],\"lLW3vJ\":[\"目標網址別名\"],\"laT1IJ\":[\"iOS 主畫面\"],\"lb+Xwx\":[\"自訂連結\"],\"m16xKo\":[\"新增\"],\"mDyWuM\":[\"暖調編輯風\"],\"mKT7g0\":[\"文字附件\"],\"mSNmrX\":[\"列出貼文:\"],\"mc/vLq\":[\"這個連結已被佔用。換一個試試。\"],\"n1ekoW\":[\"登入\"],\"n6QD94\":[\"由舊到新\"],\"nFukaP\":[\"電子郵件或密碼錯誤。請檢查您的登入資訊後重試。\"],\"nK07ni\":[\"為你的網站選擇一種排版方向。每個主題都會同時改變字型搭配與閱讀節奏。\"],\"nV6twc\":[\"整理\"],\"nd8Puv\":[\"白色標誌置於 Jant 綠色圓形,適用於個人資料圖片、徽章及其他需要即用圓形配置的情境。\"],\"ndrEYW\":[\"當強調色更溫暖一點、也沒那麼直白時,整頁會更像寫作空間,而不是產品介面。\"],\"o/vNDE\":[\"可讓你覆寫任何主題變數。\"],\"o21Y+P\":[\"項目\"],\"oKOOsY\":[\"色彩主題\"],\"oSiRP0\":[\"系統連結\"],\"ode0+L\":[\"主題範例\"],\"ovBPCi\":[\"預設\"],\"p1Z67P\":[\"當 primary 太僵硬時,整個頁面讀起來像產品介面,而非寫作空間。\"],\"p2/GCq\":[\"確認密碼\"],\"pB0OKE\":[\"新增分隔線\"],\"pBHx39\":[\"深色背景\"],\"pVrU5x\":[\"如果這一頁顯得太有品牌姿態,最先該收一收的是預設主題的網站強調色,而不是邊框或正文顏色。\"],\"pZq3aX\":[\"上傳失敗。請再試一次。\"],\"psoxDF\":[\"該字型主題不可用。請選擇其他一個。\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"選集\"],\"q5YRzz\":[\"顏色檢查\"],\"q8RviX\":[\"有標題\"],\"qiN9NB\":[\"表面\"],\"qt89I8\":[\"草稿已儲存。\"],\"quvfGs\":[\"而不是把它當作孤立的色票來評斷。\"],\"rA2TFI\":[\"切換色盤與模式,無需開啟設定或變更啟用中的網站主題。\"],\"rFmBG3\":[\"色彩主題\"],\"rdUucN\":[\"預覽\"],\"rlonmB\":[\"無法刪除. 請稍後再試.\"],\"s8G5Or\":[\"This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue.\"],\"s9gHf5\":[\"my-post-link\"],\"sER+bs\":[\"檔案\"],\"satWc6\":[\"主 RSS feed\"],\"sgr2wQ\":[\"個選集\"],\"slujBW\":[\"只能使用小寫字母、數字和連字號。\"],\"sxkWRg\":[\"進階\"],\"syiAKf\":[\"筆記樣式\"],\"t/YqKh\":[\"移除\"],\"t42hIC\":[\"大多數人需要的東西都在同一個 ZIP 檔案中。\"],\"tCctex\":[\"品牌套件包含 SVG 標誌、透明方形 PNG、圓角、方形與圓形圖塊、favicon、Apple touch icon,以及預設的社交預覽圖片。\"],\"tKlWWY\":[\"表情符號\"],\"tSWVu5\":[\"發佈於 \",[\"date\"],\" \",[\"time\"]],\"tbSs3k\":[\"鮮明氛圍\"],\"tfDRzk\":[\"儲存\"],\"u1VTd3\":[\"調色盤、表面色調與整體氛圍\"],\"u3wRF+\":[\"已發佈\"],\"u6KOjV\":[\"想自訂得更細?\"],\"ui6aMF\":[\"這些裝置目前已登入您的帳戶。撤銷任何您不認識的工作階段。\"],\"uowbPn\":[\"Remove attachment\"],\"v3E8iS\":[\"實用檢查清單\"],\"vBEKwo\":[\"在這裡管理這個站點的目前工作階段。密碼和託管站點存取權限都透過 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"字體選擇與閱讀質感\"],\"vSJd18\":[\"影片\"],\"vSYKYI\":[\"主 feed\"],\"vTuib7\":[\"這會控制 /feed 要回傳哪一種 feed。\"],\"vXCC6J\":[\"有些地方看起來不對。請檢查表單並再試一次。\"],\"vXIe7J\":[\"語言\"],\"vdFnYM\":[\"重設連結\"],\"vgpfCi\":[\"儲存草稿\"],\"vmQmHx\":[\"新增自訂 CSS 以覆寫任何樣式。使用像 [data-page], [data-post], [data-format] 的資料屬性來針對特定元素。\"],\"vpSPA1\":[\"驗證祕鑰遺失。請檢查您的環境變數。\"],\"vzU4k9\":[\"新增選集\"],\"vzX5FB\":[\"刪除帳號\"],\"w0Emel\":[\"建議連結\"],\"w6mlns\":[\"文章詳細頁面\"],\"w8Rv8T\":[\"標籤為必填\"],\"wJ+GRy\":[\"全部可見性\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"安靜的介面應讓文字先說話。\"],\"wc+17X\":[\"/* 在此放入自訂 CSS */\"],\"wja8aL\":[\"無標題\"],\"wlnK1t\":[\"一個 ZIP 檔,內含主標誌、反向標誌、方形 PNG、圓角、方形及圓形圖示,另外還有 favicon、Apple touch icon 與社群預覽圖像。\"],\"wm3Zlr\":[\"所有年份\"],\"wuLtXn\":[\"目前沒有活動中的工作階段。已登入的裝置會顯示在這裡。\"],\"xCWek4\":[\"檔案儲存尚未設定。請檢查您的伺服器設定。\"],\"xVrkxi\":[\"低調設計\"],\"xVvw1i\":[\"此重設連結已不再有效。請申請新的連結以繼續。\"],\"xYilR2\":[\"媒體\"],\"xbN8dp\":[\"柔和的顏色也該保有清晰的閱讀節奏。\"],\"xeiujy\":[\"文字\"],\"xhTx3y\":[\"大多數版位請選擇標準 logo,需要更高對比時請使用反白 logo。\"],\"y28hnO\":[\"發佈\"],\"y2o/Y0\":[\"此連結已過期\"],\"y8Md/V\":[\"語言和時間已更新。\"],\"yNCqOt\":[\"Latest feed\"],\"yQ2kGp\":[\"載入更多\"],\"yQ3kNF\":[\"請輸入以下字句以確認:\"],\"ycM1Xg\":[\"沒有結果。請嘗試不同的關鍵字。\"],\"yjjCV8\":[\"固定 feed 連結\"],\"yjkELF\":[\"確認新密碼\"],\"ylo1I0\":[\"上次使用於 \",[\"0\"]],\"ynMAhG\":[\"預設標誌\"],\"yzF66j\":[\"連結\"],\"z8ajIE\":[\"找到 1 個結果\"],\"zBFr9G\":[\"貼上長文章、AI 回覆或任何文字...\\n\\nMarkdown 格式會被保留.\"],\"zJDAbh\":[\"不儲存\"],\"zXH2jX\":[\"語言與時間\"],\"zcDmsG\":[\"精選貼文\"],\"zoK+eO\":[\"先補上標題,再發佈這則連結。\"],\"zwBp5t\":[\"私密\"],\"zxRN6H\":[\"頁首連結、首頁檢視與溢出選單\"]}");
1868
1868
  //#endregion
1869
1869
  //#region src/i18n/i18n.ts
1870
1870
  /**
@@ -4161,7 +4161,7 @@ function buildJantBrandPackReadme() {
4161
4161
  *
4162
4162
  * `__JANT_VERSION__` is replaced by Vite's `define` during both dev and lib build.
4163
4163
  */ var IS_VITE_DEV = typeof __JANT_DEV__ !== "undefined" && __JANT_DEV__ === true;
4164
- var CORE_VERSION = "0.3.39";
4164
+ var CORE_VERSION = "0.3.40";
4165
4165
  //#endregion
4166
4166
  //#region src/ui/layouts/BaseLayout.tsx
4167
4167
  /**
@@ -4195,7 +4195,7 @@ var CORE_VERSION = "0.3.39";
4195
4195
  const fontLanguage = appConfig?.siteLanguage?.toLowerCase() ?? "";
4196
4196
  const cjkStylesheetPath = fontLanguage === "zh-hans" || fontLanguage === "zh-cn" || fontLanguage === "zh-sg" ? IS_VITE_DEV ? assetPath("/src/style-cjk.css") : assetPath(`/client-cjk.css?v=${CORE_VERSION}`) : fontLanguage === "zh-hant" || fontLanguage === "zh-tw" || fontLanguage === "zh-hk" || fontLanguage === "zh-mo" ? IS_VITE_DEV ? assetPath("/src/style-cjk-tc.css") : assetPath(`/client-cjk-tc.css?v=${CORE_VERSION}`) : null;
4197
4197
  const clientScriptPath = IS_VITE_DEV ? resolvedClientBundle === "full" ? assetPath("/src/client-auth.ts") : assetPath("/src/client.ts") : resolvedClientBundle === "full" ? assetPath(`/client-auth.js?v=${CORE_VERSION}`) : assetPath(`/client.js?v=${CORE_VERSION}`);
4198
- const faviconAssetVersion = resolvedFaviconVersion || "0.3.39";
4198
+ const faviconAssetVersion = resolvedFaviconVersion || "0.3.40";
4199
4199
  const resolvedFaviconHref = faviconHref ?? (faviconAssetVersion ? toPublicPath(`/favicon.ico?v=${faviconAssetVersion}`, sitePathPrefix) : toPublicPath("/favicon.ico", sitePathPrefix));
4200
4200
  const resolvedAppleTouchHref = appleTouchHref ?? (faviconAssetVersion ? toPublicPath(`/apple-touch-icon.png?v=${faviconAssetVersion}`, sitePathPrefix) : toPublicPath("/apple-touch-icon.png", sitePathPrefix));
4201
4201
  const socialImageHref = resolvedSocialImagePath && (isFullUrl(resolvedSocialImagePath) || resolvedSocialImagePath.startsWith("//") ? resolvedSocialImagePath : toAbsoluteSiteUrl(resolvedSocialImagePath, appConfig?.siteUrl || "", sitePathPrefix));
@@ -5015,11 +5015,23 @@ function createTypeIdSchema(prefix) {
5015
5015
  "health"
5016
5016
  ];
5017
5017
  /**
5018
+ * Reserved collection slugs within the `/c/*` namespace.
5019
+ *
5020
+ * These values are valid top-level paths elsewhere but are unavailable as
5021
+ * collection slugs because they collide with dedicated collection routes.
5022
+ */ var RESERVED_COLLECTION_SLUGS = ["new"];
5023
+ /**
5018
5024
  * Check if a path is reserved
5019
5025
  */ function isReservedPath(path) {
5020
5026
  const firstSegment = path.split("/")[0]?.toLowerCase();
5021
5027
  return RESERVED_PATHS.includes(firstSegment);
5022
5028
  }
5029
+ /**
5030
+ * Check if a collection slug is reserved within the collection namespace.
5031
+ */ function isReservedCollectionSlug(slug) {
5032
+ const normalized = slug.trim().toLowerCase();
5033
+ return RESERVED_COLLECTION_SLUGS.includes(normalized);
5034
+ }
5023
5035
  var SETTINGS_KEYS = Object.fromEntries(Object.entries(CONFIG_FIELDS).filter(([, field]) => !field.envOnly || "internal" in field).map(([key]) => [key, key]));
5024
5036
  /**
5025
5037
  * Onboarding status values
@@ -5066,6 +5078,7 @@ var SETTINGS_KEYS = Object.fromEntries(Object.entries(CONFIG_FIELDS).filter(([,
5066
5078
  if (options.maxLength && slug.length > options.maxLength) return "too_long";
5067
5079
  if (!SLUG_PATTERN.test(slug)) return "invalid";
5068
5080
  if (isReservedPath(slug)) return "reserved";
5081
+ if (options.additionalReservedValues?.some((value) => value.toLowerCase() === slug.toLowerCase())) return "reserved";
5069
5082
  return null;
5070
5083
  }
5071
5084
  //#endregion
@@ -5286,7 +5299,7 @@ var UpdatePostApiSchema = refineSlugPathExclusivity(refineBodyExclusivity(ApiPos
5286
5299
  });
5287
5300
  /**
5288
5301
  * API request body schema for creating a collection
5289
- */ var CollectionSlugSchema = z.string().min(1).max(200, { message: `Keep this link under 200 characters.` }).transform(normalizeSlug).pipe(z.string().min(1).max(200, { message: `Keep this link under 200 characters.` }).regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/));
5302
+ */ var CollectionSlugSchema = z.string().min(1).max(200, { message: `Keep this link under 200 characters.` }).refine((value) => !value.includes("+"), { message: "Use lowercase letters, numbers, and hyphens only." }).transform(normalizeSlug).pipe(z.string().min(1).max(200, { message: `Keep this link under 200 characters.` }).regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/).refine((value) => !isReservedCollectionSlug(value), { message: "This link is reserved. Choose something else." }));
5290
5303
  var CollectionTitleSchema = sanitizeText(120).pipe(z.string().min(1));
5291
5304
  var CollectionDescriptionValueSchema = sanitizeText(500);
5292
5305
  var CreateCollectionSchema = z.object({
@@ -8481,8 +8494,8 @@ async function buildCuratedThreadItems(c, rootIds, threadsByRootId, selectedPost
8481
8494
  *
8482
8495
  * @example
8483
8496
  * ```ts
8484
- * const { items, currentPage, totalPages } = await assembleTimeline(c);
8485
- * const { items, currentPage, totalPages } = await assembleTimeline(c, { page: 2 });
8497
+ * const { items, currentPage, totalPages, totalCount } = await assembleTimeline(c);
8498
+ * const { items, currentPage, totalPages, totalCount } = await assembleTimeline(c, { page: 2 });
8486
8499
  * ```
8487
8500
  */ async function assembleTimeline(c, options) {
8488
8501
  const pageSize = c.var.appConfig.pageSize;
@@ -8506,12 +8519,14 @@ async function buildCuratedThreadItems(c, rootIds, threadsByRootId, selectedPost
8506
8519
  if (posts.length === 0) return {
8507
8520
  items: [],
8508
8521
  currentPage: page,
8509
- totalPages
8522
+ totalPages,
8523
+ totalCount
8510
8524
  };
8511
8525
  return {
8512
8526
  items: await buildTimelineItems(c, posts),
8513
8527
  currentPage: page,
8514
- totalPages
8528
+ totalPages,
8529
+ totalCount
8515
8530
  };
8516
8531
  }
8517
8532
  /**
@@ -8554,7 +8569,8 @@ async function buildCuratedThreadItems(c, rootIds, threadsByRootId, selectedPost
8554
8569
  if (rootIds.length === 0) return {
8555
8570
  items: [],
8556
8571
  currentPage: page,
8557
- totalPages
8572
+ totalPages,
8573
+ totalCount
8558
8574
  };
8559
8575
  const threadsByRootId = await c.var.services.posts.getPublishedThreads(rootIds);
8560
8576
  const selectedPostIdsByThread = /* @__PURE__ */ new Map();
@@ -8565,7 +8581,8 @@ async function buildCuratedThreadItems(c, rootIds, threadsByRootId, selectedPost
8565
8581
  return {
8566
8582
  items: await buildCuratedThreadItems(c, rootIds, threadsByRootId, selectedPostIdsByThread),
8567
8583
  currentPage: page,
8568
- totalPages
8584
+ totalPages,
8585
+ totalCount
8569
8586
  };
8570
8587
  }
8571
8588
  /**
@@ -8576,17 +8593,17 @@ async function buildCuratedThreadItems(c, rootIds, threadsByRootId, selectedPost
8576
8593
  * expanded and intervening non-collected posts collapse into hidden-count gaps.
8577
8594
  *
8578
8595
  * @param c - Hono context (provides services + appConfig)
8579
- * @param options - Collection ID, optional page number, auth state, and sort
8596
+ * @param options - Collection IDs, optional page number, auth state, and sort
8580
8597
  * @returns Collection timeline items with pagination info
8581
8598
  */ async function assembleCollectionTimeline(c, options) {
8582
8599
  const pageSize = c.var.appConfig.pageSize;
8583
8600
  const page = Math.max(1, options.page ?? 1);
8584
8601
  const offset = (page - 1) * pageSize;
8585
8602
  const excludePrivate = !(options.isAuthenticated ?? false);
8586
- const [totalCount, rootIds] = await Promise.all([c.var.services.posts.countCollectionThreadRoots(options.collectionId, {
8603
+ const [totalCount, rootIds] = await Promise.all([c.var.services.posts.countCollectionThreadRootsForCollections(options.collectionIds, {
8587
8604
  status: "published",
8588
8605
  excludePrivate
8589
- }), c.var.services.posts.listCollectionThreadRootIds(options.collectionId, {
8606
+ }), c.var.services.posts.listCollectionThreadRootIdsForCollections(options.collectionIds, {
8590
8607
  status: "published",
8591
8608
  excludePrivate,
8592
8609
  sortOrder: options.sortOrder,
@@ -8597,13 +8614,15 @@ async function buildCuratedThreadItems(c, rootIds, threadsByRootId, selectedPost
8597
8614
  if (rootIds.length === 0) return {
8598
8615
  items: [],
8599
8616
  currentPage: page,
8600
- totalPages
8617
+ totalPages,
8618
+ totalCount
8601
8619
  };
8602
- const [threadsByRootId, collectedPostIdsByThread] = await Promise.all([c.var.services.posts.getPublishedThreads(rootIds), c.var.services.posts.getCollectionPostIdsByThread(options.collectionId, rootIds)]);
8620
+ const [threadsByRootId, collectedPostIdsByThread] = await Promise.all([c.var.services.posts.getPublishedThreads(rootIds), c.var.services.posts.getCollectionPostIdsByThreadForCollections(options.collectionIds, rootIds)]);
8603
8621
  return {
8604
8622
  items: await buildCuratedThreadItems(c, rootIds, threadsByRootId, new Map([...collectedPostIdsByThread.entries()].map(([threadId, postIds]) => [threadId, new Set(postIds)]))),
8605
8623
  currentPage: page,
8606
- totalPages
8624
+ totalPages,
8625
+ totalCount
8607
8626
  };
8608
8627
  }
8609
8628
  //#endregion
@@ -10752,12 +10771,17 @@ pageRoutes.get("/*", async (c) => {
10752
10771
  *
10753
10772
  * Collection header with breadcrumb, description, sorting, and timeline feed.
10754
10773
  */ var escapeJson$2 = (data) => JSON.stringify(data).replace(/</g, "\\u003c");
10755
- var CollectionPage = ({ collection, items, totalThreadCount, currentPage, totalPages, baseUrl, currentSort, defaultSort, showRatingSort, isAuthenticated, sitePathPrefix = "" }) => {
10774
+ var CollectionPage = ({ collections, items, totalThreadCount, currentPage, totalPages, pagePath, baseUrl, currentSort, defaultSort, showRatingSort, isAuthenticated, sitePathPrefix = "" }) => {
10775
+ const primaryCollection = collections[0];
10776
+ if (!primaryCollection) return null;
10756
10777
  const { i18n: $__i18n, _: $__ } = useLingui();
10757
- const collectionUrl = toPublicPath(`/c/${collection.slug}`, sitePathPrefix);
10758
- const editCollectionUrl = toPublicPath(`/c/${collection.slug}/edit?returnTo=${encodeURIComponent(collectionUrl)}`, sitePathPrefix);
10759
- const sortTriggerId = `collection-sort-trigger-${collection.id}`;
10760
- const sortPopoverId = `collection-sort-popover-${collection.id}`;
10778
+ const isAggregate = collections.length > 1;
10779
+ const selectionTitle = collections.map((collection) => collection.title).join(" + ");
10780
+ const collectionUrl = toPublicPath(pagePath, sitePathPrefix);
10781
+ const editCollectionUrl = toPublicPath(`/c/${primaryCollection.slug}/edit?returnTo=${encodeURIComponent(collectionUrl)}`, sitePathPrefix);
10782
+ const sortUiId = isAggregate ? collections.map((collection) => collection.slug).join("-") : primaryCollection.id;
10783
+ const sortTriggerId = `collection-sort-trigger-${sortUiId}`;
10784
+ const sortPopoverId = `collection-sort-popover-${sortUiId}`;
10761
10785
  const pageLabel = currentPage > 1 ? formatPageLabel(currentPage, totalPages) : null;
10762
10786
  const mutationLabels = getCollectionMutationLabels($__);
10763
10787
  const newPostLabel = $__i18n._({ id: "2B7HLH" });
@@ -10818,7 +10842,9 @@ var CollectionPage = ({ collection, items, totalThreadCount, currentPage, totalP
10818
10842
  return /* @__PURE__ */ jsxDEV$1("div", {
10819
10843
  class: "py-6",
10820
10844
  "data-page": "collection",
10821
- "data-collection-id": collection.id,
10845
+ "data-collection-mode": isAggregate ? "aggregate" : "single",
10846
+ "data-collection-id": isAggregate ? void 0 : primaryCollection.id,
10847
+ "data-collection-slugs": collections.map((collection) => collection.slug).join(","),
10822
10848
  children: [/* @__PURE__ */ jsxDEV$1("header", {
10823
10849
  class: "collection-page-header",
10824
10850
  children: [
@@ -10847,19 +10873,33 @@ var CollectionPage = ({ collection, items, totalThreadCount, currentPage, totalP
10847
10873
  children: /* @__PURE__ */ jsxDEV$1("path", { d: "m9 18 6-6-6-6" })
10848
10874
  })
10849
10875
  }),
10850
- /* @__PURE__ */ jsxDEV$1("li", { children: /* @__PURE__ */ jsxDEV$1("span", { children: collection.title }) })
10876
+ /* @__PURE__ */ jsxDEV$1("li", { children: /* @__PURE__ */ jsxDEV$1("span", { children: selectionTitle }) })
10851
10877
  ] })
10852
10878
  })
10853
10879
  }),
10854
10880
  /* @__PURE__ */ jsxDEV$1("div", {
10855
10881
  class: "collection-page-title-block",
10856
- children: [/* @__PURE__ */ jsxDEV$1("h1", {
10857
- class: "collection-page-title",
10858
- children: /* @__PURE__ */ jsxDEV$1("span", { children: collection.title })
10859
- }), collection.description ? /* @__PURE__ */ jsxDEV$1("p", {
10860
- class: "collection-page-description",
10861
- children: collection.description
10862
- }) : null]
10882
+ children: [
10883
+ /* @__PURE__ */ jsxDEV$1("h1", {
10884
+ class: "collection-page-title",
10885
+ children: /* @__PURE__ */ jsxDEV$1("span", { children: selectionTitle })
10886
+ }),
10887
+ !isAggregate && primaryCollection.description ? /* @__PURE__ */ jsxDEV$1("p", {
10888
+ class: "collection-page-description",
10889
+ children: primaryCollection.description
10890
+ }) : null,
10891
+ isAggregate ? /* @__PURE__ */ jsxDEV$1("div", {
10892
+ class: "collection-page-meta",
10893
+ children: [
10894
+ /* @__PURE__ */ jsxDEV$1("span", { children: $__i18n._({ id: "11h9eK" }) }),
10895
+ " ",
10896
+ collections.map((collection, index) => /* @__PURE__ */ jsxDEV$1("span", { children: [index > 0 ? /* @__PURE__ */ jsxDEV$1("span", { children: ", " }) : null, /* @__PURE__ */ jsxDEV$1("a", {
10897
+ href: toPublicPath(`/c/${collection.slug}`, sitePathPrefix),
10898
+ children: collection.title
10899
+ })] }, collection.id))
10900
+ ]
10901
+ }) : null
10902
+ ]
10863
10903
  }),
10864
10904
  /* @__PURE__ */ jsxDEV$1("div", {
10865
10905
  class: "collection-page-subhead",
@@ -10869,6 +10909,12 @@ var CollectionPage = ({ collection, items, totalThreadCount, currentPage, totalP
10869
10909
  /* @__PURE__ */ jsxDEV$1("p", {
10870
10910
  class: "collection-page-meta",
10871
10911
  children: [
10912
+ isAggregate ? /* @__PURE__ */ jsxDEV$1(Fragment$1, { children: [
10913
+ collections.length,
10914
+ " ",
10915
+ collections.length === 1 ? $__i18n._({ id: "sgr2wQ" }) : $__i18n._({ id: "CAh1km" }),
10916
+ /* @__PURE__ */ jsxDEV$1("span", { children: " / " })
10917
+ ] }) : null,
10872
10918
  totalThreadCount,
10873
10919
  " ",
10874
10920
  totalThreadCount === 1 ? $__i18n._({ id: "BdjLtf" }) : $__i18n._({ id: "avuFKG" }),
@@ -10955,14 +11001,14 @@ var CollectionPage = ({ collection, items, totalThreadCount, currentPage, totalP
10955
11001
  })]
10956
11002
  })
10957
11003
  ]
10958
- }), isAuthenticated ? /* @__PURE__ */ jsxDEV$1("div", {
11004
+ }), isAuthenticated && !isAggregate ? /* @__PURE__ */ jsxDEV$1("div", {
10959
11005
  class: "collection-page-owner-tools",
10960
11006
  children: [/* @__PURE__ */ jsxDEV$1("button", {
10961
11007
  type: "button",
10962
11008
  class: "collection-page-compose-trigger",
10963
11009
  "aria-label": newPostLabel,
10964
11010
  title: newPostLabel,
10965
- "data-on:click": `document.getElementById('compose-dialog')?.querySelector('jant-compose-dialog')?.openNew(${escapeJson$2({ collectionId: collection.id })})`,
11011
+ "data-on:click": `document.getElementById('compose-dialog')?.querySelector('jant-compose-dialog')?.openNew(${escapeJson$2({ collectionId: primaryCollection.id })})`,
10966
11012
  children: /* @__PURE__ */ jsxDEV$1("svg", {
10967
11013
  xmlns: "http://www.w3.org/2000/svg",
10968
11014
  width: "16",
@@ -10979,7 +11025,7 @@ var CollectionPage = ({ collection, items, totalThreadCount, currentPage, totalP
10979
11025
  }), /* @__PURE__ */ jsxDEV$1("div", {
10980
11026
  class: "collection-page-manage",
10981
11027
  "data-collection-page-actions": true,
10982
- "data-collection-id": collection.id,
11028
+ "data-collection-id": primaryCollection.id,
10983
11029
  "data-collection-page-labels": escapeJson$2(mutationLabels),
10984
11030
  "data-collection-page-redirect-url": toPublicPath("/c", sitePathPrefix),
10985
11031
  children: [/* @__PURE__ */ jsxDEV$1("button", {
@@ -11079,7 +11125,7 @@ var CollectionPage = ({ collection, items, totalThreadCount, currentPage, totalP
11079
11125
  ]
11080
11126
  }), /* @__PURE__ */ jsxDEV$1("main", { children: items.length === 0 ? /* @__PURE__ */ jsxDEV$1("p", {
11081
11127
  class: "text-muted-foreground",
11082
- children: $__i18n._({ id: "gj52YE" })
11128
+ children: isAggregate ? $__i18n._({ id: "IsI3kE" }) : $__i18n._({ id: "gj52YE" })
11083
11129
  }) : /* @__PURE__ */ jsxDEV$1(TimelineFeed, {
11084
11130
  items,
11085
11131
  baseUrl,
@@ -11403,6 +11449,12 @@ function getAtomTitle(post) {
11403
11449
  /**
11404
11450
  * Collection Page Route
11405
11451
  */ var collectionRoutes = new Hono();
11452
+ function buildCollectionSelectionTitle(collections) {
11453
+ return collections.map((collection) => collection.title).join(" + ");
11454
+ }
11455
+ function getCanonicalSelectionPath(slugExpression) {
11456
+ return `/c/${slugExpression}`;
11457
+ }
11406
11458
  function resolveReturnHref$1(value, fallback) {
11407
11459
  if (!value || !value.startsWith("/") || value.startsWith("//")) return fallback;
11408
11460
  return value;
@@ -11426,42 +11478,49 @@ collectionRoutes.get("/:slug/edit", async (c) => {
11426
11478
  });
11427
11479
  });
11428
11480
  collectionRoutes.get("/:slug", async (c) => {
11429
- const slug = c.req.param("slug");
11481
+ const slugExpression = c.req.param("slug");
11430
11482
  const page = parsePageNumber(c.req.query("page"));
11431
11483
  const paginatedPageTitle = formatPageLabel(page);
11432
- const [collection, navData] = await Promise.all([c.var.services.collections.getBySlug(slug), getNavigationData(c)]);
11433
- if (!collection) return c.notFound();
11484
+ const [selection, navData] = await Promise.all([c.var.services.collections.resolveSelection(slugExpression), getNavigationData(c)]);
11485
+ if (!selection) return c.notFound();
11486
+ const canonicalPagePath = getCanonicalSelectionPath(selection.slugExpression);
11487
+ if (slugExpression !== selection.slugExpression) {
11488
+ const search = new URL(c.req.url).search;
11489
+ return c.redirect(toPublicPath(`${canonicalPagePath}${search}`, navData.sitePathPrefix), 301);
11490
+ }
11434
11491
  const sortQuery = c.req.query("sort");
11435
11492
  const requestedSort = sortQuery && CollectionSortOrderSchema.safeParse(sortQuery).success ? CollectionSortOrderSchema.parse(sortQuery) : void 0;
11436
- const [totalThreadCount, ratedPostCount] = await Promise.all([c.var.services.posts.countCollectionThreadRoots(collection.id, {
11437
- status: "published",
11438
- excludePrivate: !navData.isAuthenticated
11439
- }), c.var.services.posts.count({
11440
- collectionId: collection.id,
11493
+ const primaryCollection = selection.collections[0];
11494
+ if (!primaryCollection) return c.notFound();
11495
+ const collectionIds = selection.collections.map((collection) => collection.id);
11496
+ const isAggregate = selection.collections.length > 1;
11497
+ const showRatingSort = supportsCollectionRatingSort(await c.var.services.posts.countUpTo({
11498
+ collectionIds,
11441
11499
  status: "published",
11442
11500
  excludePrivate: !navData.isAuthenticated,
11443
11501
  hasRating: true
11444
- })]);
11445
- const showRatingSort = supportsCollectionRatingSort(ratedPostCount);
11446
- const defaultSort = resolveCollectionSortOrder(void 0, collection.sortOrder, showRatingSort);
11502
+ }, 2));
11503
+ const defaultSort = resolveCollectionSortOrder(void 0, isAggregate ? "newest" : primaryCollection.sortOrder, showRatingSort);
11447
11504
  const currentSort = resolveCollectionSortOrder(requestedSort, defaultSort, showRatingSort);
11448
- const { items, totalPages } = await assembleCollectionTimeline(c, {
11449
- collectionId: collection.id,
11505
+ const { items, totalCount: totalThreadCount, totalPages } = await assembleCollectionTimeline(c, {
11506
+ collectionIds,
11450
11507
  page,
11451
11508
  isAuthenticated: navData.isAuthenticated,
11452
11509
  sortOrder: currentSort
11453
11510
  });
11511
+ const selectionTitle = buildCollectionSelectionTitle(selection.collections);
11454
11512
  return renderPublicPage(c, {
11455
- title: page > 1 ? buildPageTitle(collection.title, paginatedPageTitle, navData.siteName) : buildPageTitle(collection.title, navData.siteName),
11456
- description: collection.description ?? void 0,
11513
+ title: page > 1 ? buildPageTitle(selectionTitle, paginatedPageTitle, navData.siteName) : buildPageTitle(selectionTitle, navData.siteName),
11514
+ description: isAggregate ? void 0 : primaryCollection.description ?? void 0,
11457
11515
  navData,
11458
11516
  content: /* @__PURE__ */ jsxDEV$1(CollectionPage, {
11459
- collection,
11517
+ collections: selection.collections,
11460
11518
  items,
11461
11519
  totalThreadCount,
11462
11520
  currentPage: page,
11463
11521
  totalPages,
11464
- baseUrl: currentSort === defaultSort ? toPublicPath(`/c/${collection.slug}`, navData.sitePathPrefix) : toPublicPath(`/c/${collection.slug}?sort=${currentSort}`, navData.sitePathPrefix),
11522
+ pagePath: canonicalPagePath,
11523
+ baseUrl: currentSort === defaultSort ? toPublicPath(canonicalPagePath, navData.sitePathPrefix) : toPublicPath(`${canonicalPagePath}?sort=${currentSort}`, navData.sitePathPrefix),
11465
11524
  currentSort,
11466
11525
  defaultSort,
11467
11526
  showRatingSort,
@@ -11471,15 +11530,21 @@ collectionRoutes.get("/:slug", async (c) => {
11471
11530
  });
11472
11531
  });
11473
11532
  collectionRoutes.get("/:slug/feed", async (c) => {
11474
- const slug = c.req.param("slug");
11475
- const collection = await c.var.services.collections.getBySlug(slug);
11476
- if (!collection) return c.notFound();
11533
+ const slugExpression = c.req.param("slug");
11534
+ const selection = await c.var.services.collections.resolveSelection(slugExpression);
11535
+ if (!selection) return c.notFound();
11536
+ if (slugExpression !== selection.slugExpression) {
11537
+ const search = new URL(c.req.url).search;
11538
+ return c.redirect(toPublicPath(`${getCanonicalSelectionPath(selection.slugExpression)}/feed${search}`, c.var.appConfig.sitePathPrefix), 301);
11539
+ }
11477
11540
  const { appConfig } = c.var;
11478
11541
  const siteName = appConfig.siteName;
11479
11542
  const siteUrl = appConfig.siteUrl;
11480
11543
  const siteLanguage = appConfig.siteLanguage;
11481
11544
  const feedLimit = appConfig.rssFeedLimit;
11482
- const entries = await c.var.services.posts.listCollectionFeedEntries(collection.id, {
11545
+ const primaryCollection = selection.collections[0];
11546
+ if (!primaryCollection) return c.notFound();
11547
+ const entries = await c.var.services.posts.listCollectionFeedEntriesForCollections(selection.collections.map((collection) => collection.id), {
11483
11548
  status: "published",
11484
11549
  excludePrivate: true,
11485
11550
  limit: feedLimit
@@ -11503,10 +11568,10 @@ collectionRoutes.get("/:slug/feed", async (c) => {
11503
11568
  };
11504
11569
  });
11505
11570
  const xml = defaultRssRenderer({
11506
- siteName: buildPageTitle(collection.title, siteName),
11507
- siteDescription: collection.description ?? "",
11571
+ siteName: buildPageTitle(buildCollectionSelectionTitle(selection.collections), siteName),
11572
+ siteDescription: selection.collections.length === 1 ? primaryCollection.description ?? "" : "",
11508
11573
  siteUrl,
11509
- selfUrl: toAbsoluteSiteUrl(`/c/${collection.slug}/feed`, siteUrl, appConfig.sitePathPrefix),
11574
+ selfUrl: toAbsoluteSiteUrl(`${getCanonicalSelectionPath(selection.slugExpression)}/feed`, siteUrl, appConfig.sitePathPrefix),
11510
11575
  siteLanguage,
11511
11576
  posts: postViews
11512
11577
  });
@@ -12740,6 +12805,50 @@ latestRoutes.get("/", async (c) => {
12740
12805
  });
12741
12806
  });
12742
12807
  //#endregion
12808
+ //#region src/lib/collection-groups.ts
12809
+ /**
12810
+ * Helpers for deriving aggregate collection groups from divider sections.
12811
+ */ /**
12812
+ * Returns the aggregate collection selection that belongs to a divider.
12813
+ *
12814
+ * A divider maps to the consecutive collection items that follow it until the
12815
+ * next divider. Groups with fewer than two collections do not produce an
12816
+ * aggregate selection.
12817
+ *
12818
+ * @param items - Ordered collection directory items
12819
+ * @param dividerIndex - Index of the divider item to inspect
12820
+ * @returns Aggregate slug expression and count, or `null`
12821
+ *
12822
+ * @example
12823
+ * ```ts
12824
+ * getDividerCollectionGroup(
12825
+ * [
12826
+ * { type: "divider", label: "Reading" },
12827
+ * { type: "collection", collection: { slug: "books" } },
12828
+ * { type: "collection", collection: { slug: "essays" } },
12829
+ * ],
12830
+ * 0,
12831
+ * );
12832
+ * ```
12833
+ */ function getDividerCollectionGroup(items, dividerIndex) {
12834
+ const divider = items[dividerIndex];
12835
+ if (!divider || divider.type !== "divider" || !divider.label) return null;
12836
+ const slugs = [];
12837
+ for (let index = dividerIndex + 1; index < items.length; index += 1) {
12838
+ const item = items[index];
12839
+ if (!item) break;
12840
+ if (item.type === "divider") break;
12841
+ const slug = item.collection?.slug;
12842
+ if (!slug) continue;
12843
+ slugs.push(slug);
12844
+ }
12845
+ if (slugs.length < 2) return null;
12846
+ return {
12847
+ slugExpression: slugs.join("+"),
12848
+ collectionCount: slugs.length
12849
+ };
12850
+ }
12851
+ //#endregion
12743
12852
  //#region src/ui/shared/CollectionDirectory.tsx
12744
12853
  var hasCollections = (items) => items.some((item) => item.type === "collection" && item.collection);
12745
12854
  var formatSequence = (value) => String(value).padStart(2, "0");
@@ -12752,15 +12861,20 @@ var CollectionDirectory = ({ items, emptyMessage, sitePathPrefix = "" }) => {
12752
12861
  let collectionIndex = 0;
12753
12862
  return /* @__PURE__ */ jsxDEV$1("div", {
12754
12863
  class: "collection-directory",
12755
- children: items.map((item) => {
12864
+ children: items.map((item, index) => {
12756
12865
  if (item.type === "divider" || !item.collection) {
12757
12866
  const hasLabel = !!item.label;
12867
+ const group = getDividerCollectionGroup(items, index);
12758
12868
  return /* @__PURE__ */ jsxDEV$1("div", {
12759
12869
  class: "collection-directory-divider",
12760
12870
  children: /* @__PURE__ */ jsxDEV$1("div", {
12761
12871
  class: "collection-directory-divider-row",
12762
12872
  "aria-hidden": hasLabel ? void 0 : "true",
12763
- children: hasLabel ? /* @__PURE__ */ jsxDEV$1(Fragment$1, { children: [/* @__PURE__ */ jsxDEV$1("span", {
12873
+ children: hasLabel ? /* @__PURE__ */ jsxDEV$1(Fragment$1, { children: [group ? /* @__PURE__ */ jsxDEV$1("a", {
12874
+ href: toPublicPath(`/c/${group.slugExpression}`, sitePathPrefix),
12875
+ class: "collection-directory-divider-link collection-directory-divider-text",
12876
+ children: item.label
12877
+ }) : /* @__PURE__ */ jsxDEV$1("span", {
12764
12878
  class: "collection-directory-divider-text",
12765
12879
  children: item.label
12766
12880
  }), /* @__PURE__ */ jsxDEV$1("hr", { class: "collection-directory-divider-line" })] }) : /* @__PURE__ */ jsxDEV$1("hr", { class: "collection-directory-divider-line" })
@@ -26650,6 +26764,26 @@ function createPostService(db, config, siteId, paths, databaseSchema = sqliteSch
26650
26764
  const lastActivityAt = latestPublishedAt ?? root[0]?.updatedAt ?? now();
26651
26765
  await db.update(posts).set({ lastActivityAt }).where(and(eq(posts.siteId, siteId), eq(posts.id, rootId)));
26652
26766
  }
26767
+ function normalizeCollectionIds(collectionIds) {
26768
+ return [...new Set(collectionIds)];
26769
+ }
26770
+ function buildCollectionMembershipCondition(collectionIds) {
26771
+ const uniqueCollectionIds = normalizeCollectionIds(collectionIds);
26772
+ const firstCollectionId = uniqueCollectionIds[0];
26773
+ if (!firstCollectionId) return sql`0 = 1`;
26774
+ return uniqueCollectionIds.length === 1 ? eq(postCollections.collectionId, firstCollectionId) : inArray(postCollections.collectionId, uniqueCollectionIds);
26775
+ }
26776
+ function buildPostCollectionSubqueryCondition(collectionIds) {
26777
+ const uniqueCollectionIds = normalizeCollectionIds(collectionIds);
26778
+ if (uniqueCollectionIds.length === 0) return sql`0 = 1`;
26779
+ const placeholders = uniqueCollectionIds.map((collectionId) => sql`${collectionId}`);
26780
+ return sql`${posts.id} IN (
26781
+ SELECT post_id
26782
+ FROM post_collection
26783
+ WHERE site_id = ${siteId}
26784
+ AND collection_id IN (${sql.join(placeholders, sql`, `)})
26785
+ )`;
26786
+ }
26653
26787
  /** Build WHERE conditions from filters (shared by list and count) */ function buildFilterConditions(filters) {
26654
26788
  const conditions = [eq(posts.siteId, siteId)];
26655
26789
  if (filters.status) conditions.push(eq(posts.status, filters.status));
@@ -26659,12 +26793,8 @@ function createPostService(db, config, siteId, paths, databaseSchema = sqliteSch
26659
26793
  if (filters.pinned !== void 0) conditions.push(filters.pinned ? sql`${posts.pinnedAt} IS NOT NULL` : isNull(posts.pinnedAt));
26660
26794
  if (filters.featured !== void 0) conditions.push(filters.featured ? sql`${posts.featuredAt} IS NOT NULL` : isNull(posts.featuredAt));
26661
26795
  if (filters.format) conditions.push(eq(posts.format, filters.format));
26662
- if (filters.collectionId !== void 0) conditions.push(sql`${posts.id} IN (
26663
- SELECT post_id
26664
- FROM post_collection
26665
- WHERE site_id = ${siteId}
26666
- AND collection_id = ${filters.collectionId}
26667
- )`);
26796
+ if (filters.collectionIds !== void 0) conditions.push(buildPostCollectionSubqueryCondition(filters.collectionIds));
26797
+ else if (filters.collectionId !== void 0) conditions.push(buildPostCollectionSubqueryCondition([filters.collectionId]));
26668
26798
  if (filters.threadId) conditions.push(eq(posts.threadId, filters.threadId));
26669
26799
  if (filters.excludeReplies) conditions.push(isNull(posts.replyToId));
26670
26800
  if (!filters.includeDeleted) conditions.push(isNull(posts.deletedAt));
@@ -27007,6 +27137,12 @@ function createPostService(db, config, siteId, paths, databaseSchema = sqliteSch
27007
27137
  const conditions = buildFilterConditions(filters);
27008
27138
  return (await db.select({ count: sql`count(*)`.as("count") }).from(posts).where(conditions.length > 0 ? and(...conditions) : void 0))[0]?.count ?? 0;
27009
27139
  },
27140
+ async countUpTo(filters = {}, limit) {
27141
+ const normalizedLimit = Math.max(0, Math.trunc(limit));
27142
+ if (normalizedLimit === 0) return 0;
27143
+ const conditions = buildFilterConditions(filters);
27144
+ return (await db.select({ id: posts.id }).from(posts).where(conditions.length > 0 ? and(...conditions) : void 0).limit(normalizedLimit)).length;
27145
+ },
27010
27146
  async countByYearMonth(filters = {}) {
27011
27147
  const conditions = [...buildFilterConditions(filters), isNotNull(posts.publishedAt)];
27012
27148
  const publishedYearMonthExpr = buildPublishedYearMonthExpr();
@@ -27548,11 +27684,17 @@ function createPostService(db, config, siteId, paths, databaseSchema = sqliteSch
27548
27684
  return (await query).map((row) => row.threadId);
27549
27685
  },
27550
27686
  async countCollectionThreadRoots(collectionId, options = {}) {
27551
- const conditions = [...buildThreadRootPageConditions(options), eq(postCollections.collectionId, collectionId)];
27687
+ return this.countCollectionThreadRootsForCollections([collectionId], options);
27688
+ },
27689
+ async countCollectionThreadRootsForCollections(collectionIds, options = {}) {
27690
+ const conditions = [...buildThreadRootPageConditions(options), buildCollectionMembershipCondition(collectionIds)];
27552
27691
  return (await db.select({ count: sql`count(distinct ${posts.threadId})`.as("count") }).from(posts).innerJoin(postCollections, and(eq(postCollections.siteId, siteId), eq(postCollections.postId, posts.id))).where(and(...conditions)))[0]?.count ?? 0;
27553
27692
  },
27554
27693
  async listCollectionThreadRootIds(collectionId, options = {}) {
27555
- const conditions = [...buildThreadRootPageConditions(options), eq(postCollections.collectionId, collectionId)];
27694
+ return this.listCollectionThreadRootIdsForCollections([collectionId], options);
27695
+ },
27696
+ async listCollectionThreadRootIdsForCollections(collectionIds, options = {}) {
27697
+ const conditions = [...buildThreadRootPageConditions(options), buildCollectionMembershipCondition(collectionIds)];
27556
27698
  const sortOrder = options.sortOrder ?? "newest";
27557
27699
  const collectedAt = sortOrder === "oldest" ? sql`MIN(${postCollections.createdAt})`.as("collected_at") : sql`MAX(${postCollections.createdAt})`.as("collected_at");
27558
27700
  const ratingPresence = sql`MAX(
@@ -27574,7 +27716,10 @@ function createPostService(db, config, siteId, paths, databaseSchema = sqliteSch
27574
27716
  return (await query).map((row) => row.threadId);
27575
27717
  },
27576
27718
  async listCollectionFeedEntries(collectionId, options = {}) {
27577
- const conditions = [...buildThreadRootPageConditions(options), eq(postCollections.collectionId, collectionId)];
27719
+ return this.listCollectionFeedEntriesForCollections([collectionId], options);
27720
+ },
27721
+ async listCollectionFeedEntriesForCollections(collectionIds, options = {}) {
27722
+ const conditions = [...buildThreadRootPageConditions(options), buildCollectionMembershipCondition(collectionIds)];
27578
27723
  const collectedAt = sql`MAX(${postCollections.createdAt})`.as("collected_at");
27579
27724
  let query = db.select({
27580
27725
  threadId: posts.threadId,
@@ -27605,12 +27750,15 @@ function createPostService(db, config, siteId, paths, databaseSchema = sqliteSch
27605
27750
  return result;
27606
27751
  },
27607
27752
  async getCollectionPostIdsByThread(collectionId, threadIds) {
27753
+ return this.getCollectionPostIdsByThreadForCollections([collectionId], threadIds);
27754
+ },
27755
+ async getCollectionPostIdsByThreadForCollections(collectionIds, threadIds) {
27608
27756
  const result = /* @__PURE__ */ new Map();
27609
27757
  if (threadIds.length === 0) return result;
27610
27758
  const rows = await batchQueryRows([...new Set(threadIds)], (chunk) => db.select({
27611
27759
  threadId: posts.threadId,
27612
27760
  postId: posts.id
27613
- }).from(posts).innerJoin(postCollections, and(eq(postCollections.siteId, siteId), eq(postCollections.postId, posts.id))).where(and(eq(posts.siteId, siteId), eq(postCollections.collectionId, collectionId), inArray(posts.threadId, chunk), eq(posts.status, "published"), isNull(posts.deletedAt))).orderBy(posts.threadId, posts.createdAt, posts.id));
27761
+ }).from(posts).innerJoin(postCollections, and(eq(postCollections.siteId, siteId), eq(postCollections.postId, posts.id))).where(and(eq(posts.siteId, siteId), buildCollectionMembershipCondition(collectionIds), inArray(posts.threadId, chunk), eq(posts.status, "published"), isNull(posts.deletedAt))).groupBy(posts.threadId, posts.id).orderBy(posts.threadId, posts.createdAt, posts.id));
27614
27762
  for (const row of rows) {
27615
27763
  const list = result.get(row.threadId);
27616
27764
  if (list) list.push(row.postId);
@@ -28124,6 +28272,20 @@ function isUniqueConstraintError$1(err) {
28124
28272
  }
28125
28273
  return false;
28126
28274
  }
28275
+ function parseCollectionSelectionSlugs(slugExpression) {
28276
+ const parts = slugExpression.split("+");
28277
+ if (parts.length === 0) return null;
28278
+ const seen = /* @__PURE__ */ new Set();
28279
+ const slugs = [];
28280
+ for (const part of parts) {
28281
+ const slug = part.trim();
28282
+ if (!slug) return null;
28283
+ if (seen.has(slug)) continue;
28284
+ seen.add(slug);
28285
+ slugs.push(slug);
28286
+ }
28287
+ return slugs.length > 0 ? slugs : null;
28288
+ }
28127
28289
  function createCollectionService(db, siteId, paths, databaseSchema = sqliteSchemaBundle, databaseDialect = "sqlite") {
28128
28290
  const resolvedPaths = paths ?? createPathService(db, siteId, databaseSchema);
28129
28291
  const { collections, pathRegistry, collectionDirectoryItems: sidebarItems, postCollections, posts } = databaseSchema;
@@ -28291,6 +28453,21 @@ function createCollectionService(db, siteId, paths, databaseSchema = sqliteSchem
28291
28453
  if (!resolved || resolved.kind !== "slug" || !resolved.collectionId) return null;
28292
28454
  return this.getById(resolved.collectionId);
28293
28455
  },
28456
+ async getBySlugs(slugs) {
28457
+ if (slugs.length === 0) return [];
28458
+ return (await Promise.all(slugs.map((slug) => this.getBySlug(slug)))).filter((collection) => collection !== null);
28459
+ },
28460
+ async resolveSelection(slugExpression) {
28461
+ const slugs = parseCollectionSelectionSlugs(slugExpression);
28462
+ if (!slugs) return null;
28463
+ const collections = await this.getBySlugs(slugs);
28464
+ if (collections.length !== slugs.length) return null;
28465
+ return {
28466
+ collections,
28467
+ slugs,
28468
+ slugExpression: slugs.join("+")
28469
+ };
28470
+ },
28294
28471
  async list() {
28295
28472
  return hydrateCollections(await db.select().from(collections).where(eq(collections.siteId, siteId)).orderBy(asc(collections.createdAt)));
28296
28473
  },
@@ -30115,6 +30292,59 @@ async function createRequestRuntime(env, publicRequestUrl) {
30115
30292
  return createCloudflareRequestRuntime(env, publicRequestUrl);
30116
30293
  }
30117
30294
  //#endregion
30295
+ //#region src/runtime/readiness.ts
30296
+ function getStartupConfigurationReadiness(env) {
30297
+ const errors = [];
30298
+ if (!getAuthSecret(env)) errors.push("AUTH_SECRET must be set before Jant can accept traffic.");
30299
+ for (const issue of getHostBasedStartupConfigurationIssues(env)) errors.push(`${issue.variable}: ${issue.message}`);
30300
+ return errors.length > 0 ? {
30301
+ ok: false,
30302
+ error: errors.join(" ")
30303
+ } : { ok: true };
30304
+ }
30305
+ async function getDatabaseReadiness(env) {
30306
+ try {
30307
+ if (env.NODE_DATABASE?.db) {
30308
+ await createSiteService(env.NODE_DATABASE.db, env.NODE_DATABASE.schema).getById("sit_readiness_probe");
30309
+ return { ok: true };
30310
+ }
30311
+ if (env.NODE_SQLITE) {
30312
+ await createSiteService(createNodeDatabase(env.NODE_SQLITE)).getById("sit_readiness_probe");
30313
+ return { ok: true };
30314
+ }
30315
+ if (env.DB) {
30316
+ await createSiteService(createDatabase(env.DB.withSession()), sqliteSchemaBundle).getById("sit_readiness_probe");
30317
+ return { ok: true };
30318
+ }
30319
+ return {
30320
+ ok: false,
30321
+ error: "No database binding is configured for this runtime."
30322
+ };
30323
+ } catch (error) {
30324
+ return {
30325
+ ok: false,
30326
+ error: error instanceof Error ? error.message : String(error)
30327
+ };
30328
+ }
30329
+ }
30330
+ /**
30331
+ * Perform instance-scoped readiness checks that bypass site resolution.
30332
+ *
30333
+ * This is intentionally stricter than `/health`: it verifies startup
30334
+ * configuration and performs a lightweight database/schema query against the
30335
+ * shared `site` table through the service layer.
30336
+ */ async function getInstanceReadiness(env) {
30337
+ const startupConfig = getStartupConfigurationReadiness(env);
30338
+ const database = await getDatabaseReadiness(env);
30339
+ return {
30340
+ status: startupConfig.ok && database.ok ? "ok" : "error",
30341
+ checks: {
30342
+ startupConfig,
30343
+ database
30344
+ }
30345
+ };
30346
+ }
30347
+ //#endregion
30118
30348
  //#region src/lib/public-storage.ts
30119
30349
  /**
30120
30350
  * Public storage path helpers.
@@ -30265,6 +30495,10 @@ async function servePublicStorage(c) {
30265
30495
  };
30266
30496
  app.onError(errorHandler);
30267
30497
  app.get("/health", (c) => c.json({ status: "ok" }));
30498
+ app.get("/readyz", async (c) => {
30499
+ const readiness = await getInstanceReadiness(c.env);
30500
+ return c.json(readiness, readiness.status === "ok" ? 200 : 503);
30501
+ });
30268
30502
  app.use("*", async (c, next) => {
30269
30503
  const publicMeta = publicRequestMeta.get(c.req.raw);
30270
30504
  const publicRequestUrl = publicMeta?.publicRequestUrl ?? c.req.url;