@rmdes/indiekit-endpoint-site-config 1.0.0-beta.4 → 1.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/controllers/branding.js +5 -8
- package/lib/controllers/identity.js +1 -0
- package/lib/render/surface-presets.js +9 -18
- package/lib/storage/defaults-site.js +5 -0
- package/locales/en.json +2 -2
- package/locales/fr.json +2 -2
- package/package.json +1 -1
- package/views/site-config-identity.njk +6 -0
|
@@ -52,15 +52,12 @@ export const ACCENT_SUGGESTIONS = Object.freeze([
|
|
|
52
52
|
*
|
|
53
53
|
* @type {ReadonlyArray<{slug: string, label: string}>}
|
|
54
54
|
*/
|
|
55
|
-
// NOTE: `slug` values are stable identifiers persisted in MongoDB and MUST NOT
|
|
56
|
-
// change (renaming would orphan saved configs). The `neutral-zinc` and
|
|
57
|
-
// `warm-gray` slugs now carry the Sage / Clay palettes — see surface-presets.js.
|
|
58
55
|
export const SURFACE_PRESET_OPTIONS = Object.freeze([
|
|
59
|
-
Object.freeze({ slug: "warm-stone",
|
|
60
|
-
Object.freeze({ slug: "
|
|
61
|
-
Object.freeze({ slug: "stone",
|
|
62
|
-
Object.freeze({ slug: "cool-slate",
|
|
63
|
-
Object.freeze({ slug: "
|
|
56
|
+
Object.freeze({ slug: "warm-stone", label: "Warm Stone" }),
|
|
57
|
+
Object.freeze({ slug: "clay", label: "Clay" }),
|
|
58
|
+
Object.freeze({ slug: "stone", label: "Stone (Neutral)" }),
|
|
59
|
+
Object.freeze({ slug: "cool-slate", label: "Cool Slate" }),
|
|
60
|
+
Object.freeze({ slug: "sage", label: "Sage" }),
|
|
64
61
|
]);
|
|
65
62
|
|
|
66
63
|
/**
|
|
@@ -44,6 +44,7 @@ function parseSocialFromBody(body) {
|
|
|
44
44
|
export function parseIdentityBody(body) {
|
|
45
45
|
return {
|
|
46
46
|
name: safeString(body.name),
|
|
47
|
+
siteName: safeString(body.siteName),
|
|
47
48
|
avatar: safeUrlOrEmpty(body.avatar),
|
|
48
49
|
title: safeString(body.title),
|
|
49
50
|
pronoun: safeString(body.pronoun),
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
// Surface presets — the neutral/tinted base palettes offered in the branding
|
|
2
2
|
// admin. Each is an 11-step tone ramp (50 lightest → 950 darkest).
|
|
3
3
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// tone-50). To keep persisted configs valid, the SLUGS are unchanged, but the
|
|
10
|
-
// `neutral-zinc` and `warm-gray` ramps were re-skinned into distinct hue
|
|
11
|
-
// families (Sage / Clay). Labels live in lib/controllers/branding.js.
|
|
12
|
-
//
|
|
13
|
-
// warm-stone — warm taupe/brown (original rmendes.net palette)
|
|
14
|
-
// cool-slate — blue-gray (Tailwind "slate")
|
|
15
|
-
// stone — true neutral gray (Tailwind "neutral")
|
|
16
|
-
// neutral-zinc — Sage: green-tinted neutral
|
|
17
|
-
// warm-gray — Clay: terracotta/rose-tinted warm
|
|
4
|
+
// warm-stone — warm taupe/brown (original rmendes.net palette)
|
|
5
|
+
// cool-slate — blue-gray (Tailwind "slate")
|
|
6
|
+
// stone — true neutral gray (Tailwind "neutral")
|
|
7
|
+
// sage — green-tinted neutral
|
|
8
|
+
// clay — terracotta/rose-tinted warm
|
|
18
9
|
//
|
|
19
10
|
// `cool-slate` and `stone` ramps are from Tailwind CSS (MIT License,
|
|
20
11
|
// Copyright (c) Tailwind Labs, Inc. — https://tailwindcss.com/docs/colors).
|
|
@@ -31,15 +22,15 @@ export const SURFACE_PRESETS = Object.freeze({
|
|
|
31
22
|
600: "#475569", 700: "#334155", 800: "#1e293b",
|
|
32
23
|
900: "#0f172a", 950: "#020617",
|
|
33
24
|
}),
|
|
34
|
-
// Sage — green-tinted neutral.
|
|
35
|
-
"
|
|
25
|
+
// Sage — green-tinted neutral.
|
|
26
|
+
"sage": Object.freeze({
|
|
36
27
|
50: "#f3f7f1", 100: "#e6efe3", 200: "#cfe0ca",
|
|
37
28
|
300: "#aecaa6", 400: "#82a878", 500: "#5e8a5a",
|
|
38
29
|
600: "#496e47", 700: "#3a5638", 800: "#283a27",
|
|
39
30
|
900: "#1a271a", 950: "#0e150e",
|
|
40
31
|
}),
|
|
41
|
-
// Clay — terracotta/rose-tinted warm.
|
|
42
|
-
"
|
|
32
|
+
// Clay — terracotta/rose-tinted warm.
|
|
33
|
+
"clay": Object.freeze({
|
|
43
34
|
50: "#faf4f1", 100: "#f4e7e1", 200: "#e8d2c7",
|
|
44
35
|
300: "#d8b3a2", 400: "#c08b73", 500: "#a8705a",
|
|
45
36
|
600: "#8a5642", 700: "#6d4334", 800: "#492d23",
|
|
@@ -37,6 +37,11 @@ export const DEFAULTS_SITE = Object.freeze({
|
|
|
37
37
|
schemaVersion: 3,
|
|
38
38
|
identity: Object.freeze({
|
|
39
39
|
name: "",
|
|
40
|
+
// Site title / brand — drives the header, <title>, og:site_name and
|
|
41
|
+
// schema.org publisher. Distinct from `name` (the person, used by the
|
|
42
|
+
// h-card / hero). Empty falls back to `name` in the theme so single-author
|
|
43
|
+
// sites where the brand IS the person keep working with one field.
|
|
44
|
+
siteName: "",
|
|
40
45
|
avatar: "",
|
|
41
46
|
title: "",
|
|
42
47
|
pronoun: "",
|
package/locales/en.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"saved": "Identity saved successfully. Refresh your site to see changes.",
|
|
22
22
|
"profile": {
|
|
23
23
|
"legend": "Profile",
|
|
24
|
-
"name": { "label": "Name", "hint": "
|
|
24
|
+
"name": { "label": "Name", "hint": "The person's name, shown in the h-card, hero, and author cards. For the site/brand title, use Site title below." },
|
|
25
25
|
"title": { "label": "Title", "hint": "Job title or tagline (e.g. 'Middleware Engineer')" },
|
|
26
26
|
"avatar": { "label": "Avatar URL", "hint": "URL of your profile photo for the h-card" },
|
|
27
27
|
"pronoun": { "label": "Pronouns", "hint": "e.g. she/her, he/him, they/them" },
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"preferences": {
|
|
56
56
|
"legend": "Site preferences"
|
|
57
57
|
},
|
|
58
|
-
"
|
|
58
|
+
"siteName": { "label": "Site title", "hint": "Shown in the site header, browser tab, and link previews. Leave blank to use your Name above (for single-author sites where the brand is the person)." },
|
|
59
59
|
"description": "Description",
|
|
60
60
|
"tagline": "Tagline",
|
|
61
61
|
"defaultOgImage": "Default OpenGraph image URL",
|
package/locales/fr.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"saved": "Identité enregistrée avec succès. Actualisez votre site pour voir les modifications.",
|
|
22
22
|
"profile": {
|
|
23
23
|
"legend": "Profil",
|
|
24
|
-
"name": { "label": "Nom", "hint": "
|
|
24
|
+
"name": { "label": "Nom", "hint": "Le nom de la personne, affiché dans la h-card, le hero et les cartes d'auteur. Pour le titre du site/de la marque, utilisez Titre du site ci-dessous." },
|
|
25
25
|
"title": { "label": "Titre", "hint": "Intitulé de poste ou slogan (ex. « Ingénieur middleware »)" },
|
|
26
26
|
"avatar": { "label": "URL de l'avatar","hint": "URL de votre photo de profil pour la h-card" },
|
|
27
27
|
"pronoun": { "label": "Pronoms", "hint": "ex. elle, il, iel" },
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"preferences": {
|
|
56
56
|
"legend": "Préférences du site"
|
|
57
57
|
},
|
|
58
|
-
"
|
|
58
|
+
"siteName": { "label": "Titre du site", "hint": "Affiché dans l'en-tête du site, l'onglet du navigateur et les aperçus de liens. Laissez vide pour utiliser votre Nom ci-dessus (pour les sites mono-auteur où la marque est la personne)." },
|
|
59
59
|
"description": "Description",
|
|
60
60
|
"tagline": "Slogan",
|
|
61
61
|
"defaultOgImage": "Image OpenGraph par défaut",
|
package/package.json
CHANGED
|
@@ -334,6 +334,12 @@
|
|
|
334
334
|
<section class="hp-section">
|
|
335
335
|
<h2>{{ __('siteConfig.identity.preferences.legend') }}</h2>
|
|
336
336
|
<div class="hp-field-grid">
|
|
337
|
+
<div class="field field--full">
|
|
338
|
+
<label class="field__label" for="siteName">{{ __('siteConfig.identity.siteName.label') }}</label>
|
|
339
|
+
<input class="field__input" type="text" id="siteName" name="siteName"
|
|
340
|
+
value="{{ config.identity.siteName or '' }}">
|
|
341
|
+
<p class="field__hint">{{ __('siteConfig.identity.siteName.hint') }}</p>
|
|
342
|
+
</div>
|
|
337
343
|
<div class="field">
|
|
338
344
|
<label class="field__label" for="locale">{{ __('siteConfig.identity.locale') }}</label>
|
|
339
345
|
<input class="field__input" type="text" id="locale" name="locale"
|