diff --git a/.changeset/fix-admin-date-format-example.md b/.changeset/fix-admin-date-format-example.md new file mode 100644 index 000000000..f0957f8ea --- /dev/null +++ b/.changeset/fix-admin-date-format-example.md @@ -0,0 +1,5 @@ +--- +"@emdash-cms/admin": patch +--- + +Fixes the reading settings date format example so it follows the configured format string. diff --git a/packages/admin/package.json b/packages/admin/package.json index 5704984c1..c923e6935 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -68,6 +68,7 @@ "@tiptap/starter-kit": "catalog:", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "date-fns": "^4.1.0", "dompurify": "^3.3.2", "marked": "^17.0.3", "react-hotkeys-hook": "^5.2.4", diff --git a/packages/admin/src/components/settings/GeneralSettings.tsx b/packages/admin/src/components/settings/GeneralSettings.tsx index 601c9e034..781c158e8 100644 --- a/packages/admin/src/components/settings/GeneralSettings.tsx +++ b/packages/admin/src/components/settings/GeneralSettings.tsx @@ -12,6 +12,7 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import * as React from "react"; import { fetchSettings, updateSettings, type SiteSettings, type MediaItem } from "../../lib/api"; +import { DEFAULT_DATE_FORMAT, formatDateFormatExample } from "../../lib/date-format-example"; import { EditorHeader } from "../EditorHeader"; import { MediaPickerModal } from "../MediaPickerModal"; import { BackToSettingsLink } from "./BackToSettingsLink.js"; @@ -69,6 +70,9 @@ export function GeneralSettings() { setFormData((prev) => ({ ...prev, [key]: value })); }; + const dateFormat = formData.dateFormat || DEFAULT_DATE_FORMAT; + const dateFormatExample = formatDateFormatExample(dateFormat); + const handleLogoSelect = (media: MediaItem) => { setFormData((prev) => ({ ...prev, @@ -302,9 +306,13 @@ export function GeneralSettings() { /> handleChange("dateFormat", e.target.value)} - description={`Example: ${formData.dateFormat || "MMMM d, yyyy"} → January 23, 2026`} + description={ + dateFormatExample + ? t`Example: ${dateFormat} → ${dateFormatExample}` + : t`Example: ${dateFormat} → Invalid date format` + } /> { + it("formats the default date format example", () => { + expect(formatDateFormatExample(DEFAULT_DATE_FORMAT)).toBe("January 23, 2026"); + }); + + it("formats ISO-style date format examples", () => { + expect(formatDateFormatExample("yyyy-MM-dd")).toBe("2026-01-23"); + }); + + it("returns null for invalid date formats", () => { + expect(formatDateFormatExample("yyyy-MM-dd nope")).toBeNull(); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 977392e5a..bd005267b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1068,6 +1068,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + date-fns: + specifier: ^4.1.0 + version: 4.1.0 dompurify: specifier: ^3.3.2 version: 3.3.2