diff --git a/.gitignore b/.gitignore index 657842b..ef88793 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ node_modules/ .pnp.js # Build output -dist/ build/ *.tsbuildinfo diff --git a/dist/components/index.js b/dist/components/index.js new file mode 100644 index 0000000..132c92b --- /dev/null +++ b/dist/components/index.js @@ -0,0 +1,88 @@ +import readingTime from 'reading-time'; +import { jsx } from 'preact/jsx-runtime'; + +// src/components/ContentMeta.tsx + +// src/util/lang.ts +function classNames(...classes) { + return classes.filter(Boolean).join(" "); +} + +// src/i18n/locales/en-US.ts +var en_US_default = { + components: { + contentMeta: { + readingTime: ({ minutes }) => { + if (minutes === 1) { + return "1 min read"; + } + return `${minutes} min read`; + } + } + } +}; + +// src/i18n/index.ts +var locales = { + "en-US": en_US_default +}; +function i18n(locale) { + return locales[locale] || en_US_default; +} +function getDate(cfg, data) { + if (!cfg.defaultDateType) { + throw new Error( + `Field 'defaultDateType' was not set in the configuration object of quartz.config.ts. See https://quartz.jzhao.xyz/configuration#general-configuration for more details.` + ); + } + const dates = data.dates; + return dates?.[cfg.defaultDateType]; +} +function formatDate(d, locale = "en-US") { + return d.toLocaleDateString(locale, { + year: "numeric", + month: "short", + day: "2-digit" + }); +} +function DateComponent({ date, locale }) { + return /* @__PURE__ */ jsx("time", { datetime: date.toISOString(), children: formatDate(date, locale) }); +} + +// src/components/styles/contentMeta.scss +var contentMeta_default = '.content-meta {\n margin-top: 0;\n color: var(--darkgray);\n}\n.content-meta[show-comma=true] > *:not(:last-child) {\n margin-right: 8px;\n}\n.content-meta[show-comma=true] > *:not(:last-child)::after {\n content: ",";\n}'; +var defaultOptions = { + showReadingTime: true, + showComma: true +}; +var ContentMeta_default = ((opts) => { + const options = { ...defaultOptions, ...opts }; + function ContentMetadata({ cfg, fileData, displayClass }) { + const text = fileData.text; + if (text) { + const segments = []; + if (fileData.dates) { + const locale = cfg.locale || "en-US"; + segments.push(/* @__PURE__ */ jsx(DateComponent, { date: getDate(cfg, fileData), locale })); + } + if (options.showReadingTime) { + const { minutes, words: _words } = readingTime(text); + const locale = cfg.locale || "en-US"; + const i18nData = i18n(locale); + const displayedTime = i18nData.components.contentMeta.readingTime({ + minutes: Math.ceil(minutes) + }); + segments.push(/* @__PURE__ */ jsx("span", { children: displayedTime })); + } + return /* @__PURE__ */ jsx("p", { "show-comma": options.showComma, class: classNames(displayClass, "content-meta"), children: segments }); + } else { + return null; + } + } + ContentMetadata.css = contentMeta_default; + return ContentMetadata; +}); + +export { ContentMeta_default as ContentMeta }; +//# sourceMappingURL=index.js.map +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/components/index.js.map b/dist/components/index.js.map new file mode 100644 index 0000000..295e219 --- /dev/null +++ b/dist/components/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/util/lang.ts","../../src/i18n/locales/en-US.ts","../../src/i18n/index.ts","../../src/util/date.tsx","../../src/components/styles/contentMeta.scss","../../src/components/ContentMeta.tsx"],"names":["jsx"],"mappings":"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","file":"index.js","sourcesContent":["export function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n contentMeta: {\n readingTime: ({ minutes }: { minutes: number }) => {\n if (minutes === 1) {\n return \"1 min read\";\n }\n return `${minutes} min read`;\n },\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","export type ValidDateType = \"created\" | \"modified\" | \"published\";\n\ninterface Props {\n date: Date;\n locale?: string;\n}\n\nexport function getDate(\n cfg: { defaultDateType?: string },\n data: Record,\n): Date | undefined {\n if (!cfg.defaultDateType) {\n throw new Error(\n `Field 'defaultDateType' was not set in the configuration object of quartz.config.ts. See https://quartz.jzhao.xyz/configuration#general-configuration for more details.`,\n );\n }\n const dates = data.dates as Record | undefined;\n return dates?.[cfg.defaultDateType];\n}\n\nexport function formatDate(d: Date, locale: string = \"en-US\"): string {\n return d.toLocaleDateString(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n });\n}\n\nexport function DateComponent({ date, locale }: Props) {\n return ;\n}\n",".content-meta {\n margin-top: 0;\n color: var(--darkgray);\n}\n.content-meta[show-comma=true] > *:not(:last-child) {\n margin-right: 8px;\n}\n.content-meta[show-comma=true] > *:not(:last-child)::after {\n content: \",\";\n}","import type { QuartzComponentConstructor, QuartzComponentProps } from \"@quartz-community/types\";\nimport readingTime from \"reading-time\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\nimport { DateComponent, getDate } from \"../util/date\";\nimport type { JSX } from \"preact\";\nimport style from \"./styles/contentMeta.scss\";\n\nexport interface ContentMetaOptions {\n /**\n * Whether to display reading time\n */\n showReadingTime: boolean;\n showComma: boolean;\n}\n\nconst defaultOptions: ContentMetaOptions = {\n showReadingTime: true,\n showComma: true,\n};\n\nexport default ((opts?: Partial) => {\n // Merge options with defaults\n const options: ContentMetaOptions = { ...defaultOptions, ...opts };\n\n function ContentMetadata({ cfg, fileData, displayClass }: QuartzComponentProps) {\n const text = fileData.text;\n\n if (text) {\n const segments: (string | JSX.Element)[] = [];\n\n if (fileData.dates) {\n const locale = cfg.locale || \"en-US\";\n segments.push();\n }\n\n // Display reading time if enabled\n if (options.showReadingTime) {\n const { minutes, words: _words } = readingTime(text as string);\n const locale = cfg.locale || \"en-US\";\n const i18nData = i18n(locale);\n const displayedTime = i18nData.components.contentMeta.readingTime({\n minutes: Math.ceil(minutes),\n });\n segments.push({displayedTime});\n }\n\n return (\n

\n {segments}\n

\n );\n } else {\n return null;\n }\n }\n\n ContentMetadata.css = style;\n\n return ContentMetadata;\n}) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..132c92b --- /dev/null +++ b/dist/index.js @@ -0,0 +1,88 @@ +import readingTime from 'reading-time'; +import { jsx } from 'preact/jsx-runtime'; + +// src/components/ContentMeta.tsx + +// src/util/lang.ts +function classNames(...classes) { + return classes.filter(Boolean).join(" "); +} + +// src/i18n/locales/en-US.ts +var en_US_default = { + components: { + contentMeta: { + readingTime: ({ minutes }) => { + if (minutes === 1) { + return "1 min read"; + } + return `${minutes} min read`; + } + } + } +}; + +// src/i18n/index.ts +var locales = { + "en-US": en_US_default +}; +function i18n(locale) { + return locales[locale] || en_US_default; +} +function getDate(cfg, data) { + if (!cfg.defaultDateType) { + throw new Error( + `Field 'defaultDateType' was not set in the configuration object of quartz.config.ts. See https://quartz.jzhao.xyz/configuration#general-configuration for more details.` + ); + } + const dates = data.dates; + return dates?.[cfg.defaultDateType]; +} +function formatDate(d, locale = "en-US") { + return d.toLocaleDateString(locale, { + year: "numeric", + month: "short", + day: "2-digit" + }); +} +function DateComponent({ date, locale }) { + return /* @__PURE__ */ jsx("time", { datetime: date.toISOString(), children: formatDate(date, locale) }); +} + +// src/components/styles/contentMeta.scss +var contentMeta_default = '.content-meta {\n margin-top: 0;\n color: var(--darkgray);\n}\n.content-meta[show-comma=true] > *:not(:last-child) {\n margin-right: 8px;\n}\n.content-meta[show-comma=true] > *:not(:last-child)::after {\n content: ",";\n}'; +var defaultOptions = { + showReadingTime: true, + showComma: true +}; +var ContentMeta_default = ((opts) => { + const options = { ...defaultOptions, ...opts }; + function ContentMetadata({ cfg, fileData, displayClass }) { + const text = fileData.text; + if (text) { + const segments = []; + if (fileData.dates) { + const locale = cfg.locale || "en-US"; + segments.push(/* @__PURE__ */ jsx(DateComponent, { date: getDate(cfg, fileData), locale })); + } + if (options.showReadingTime) { + const { minutes, words: _words } = readingTime(text); + const locale = cfg.locale || "en-US"; + const i18nData = i18n(locale); + const displayedTime = i18nData.components.contentMeta.readingTime({ + minutes: Math.ceil(minutes) + }); + segments.push(/* @__PURE__ */ jsx("span", { children: displayedTime })); + } + return /* @__PURE__ */ jsx("p", { "show-comma": options.showComma, class: classNames(displayClass, "content-meta"), children: segments }); + } else { + return null; + } + } + ContentMetadata.css = contentMeta_default; + return ContentMetadata; +}); + +export { ContentMeta_default as ContentMeta }; +//# sourceMappingURL=index.js.map +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..9e3078f --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/util/lang.ts","../src/i18n/locales/en-US.ts","../src/i18n/index.ts","../src/util/date.tsx","../src/components/styles/contentMeta.scss","../src/components/ContentMeta.tsx"],"names":["jsx"],"mappings":"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","file":"index.js","sourcesContent":["export function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n contentMeta: {\n readingTime: ({ minutes }: { minutes: number }) => {\n if (minutes === 1) {\n return \"1 min read\";\n }\n return `${minutes} min read`;\n },\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","export type ValidDateType = \"created\" | \"modified\" | \"published\";\n\ninterface Props {\n date: Date;\n locale?: string;\n}\n\nexport function getDate(\n cfg: { defaultDateType?: string },\n data: Record,\n): Date | undefined {\n if (!cfg.defaultDateType) {\n throw new Error(\n `Field 'defaultDateType' was not set in the configuration object of quartz.config.ts. See https://quartz.jzhao.xyz/configuration#general-configuration for more details.`,\n );\n }\n const dates = data.dates as Record | undefined;\n return dates?.[cfg.defaultDateType];\n}\n\nexport function formatDate(d: Date, locale: string = \"en-US\"): string {\n return d.toLocaleDateString(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n });\n}\n\nexport function DateComponent({ date, locale }: Props) {\n return ;\n}\n",".content-meta {\n margin-top: 0;\n color: var(--darkgray);\n}\n.content-meta[show-comma=true] > *:not(:last-child) {\n margin-right: 8px;\n}\n.content-meta[show-comma=true] > *:not(:last-child)::after {\n content: \",\";\n}","import type { QuartzComponentConstructor, QuartzComponentProps } from \"@quartz-community/types\";\nimport readingTime from \"reading-time\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\nimport { DateComponent, getDate } from \"../util/date\";\nimport type { JSX } from \"preact\";\nimport style from \"./styles/contentMeta.scss\";\n\nexport interface ContentMetaOptions {\n /**\n * Whether to display reading time\n */\n showReadingTime: boolean;\n showComma: boolean;\n}\n\nconst defaultOptions: ContentMetaOptions = {\n showReadingTime: true,\n showComma: true,\n};\n\nexport default ((opts?: Partial) => {\n // Merge options with defaults\n const options: ContentMetaOptions = { ...defaultOptions, ...opts };\n\n function ContentMetadata({ cfg, fileData, displayClass }: QuartzComponentProps) {\n const text = fileData.text;\n\n if (text) {\n const segments: (string | JSX.Element)[] = [];\n\n if (fileData.dates) {\n const locale = cfg.locale || \"en-US\";\n segments.push();\n }\n\n // Display reading time if enabled\n if (options.showReadingTime) {\n const { minutes, words: _words } = readingTime(text as string);\n const locale = cfg.locale || \"en-US\";\n const i18nData = i18n(locale);\n const displayedTime = i18nData.components.contentMeta.readingTime({\n minutes: Math.ceil(minutes),\n });\n segments.push({displayedTime});\n }\n\n return (\n

\n {segments}\n

\n );\n } else {\n return null;\n }\n }\n\n ContentMetadata.css = style;\n\n return ContentMetadata;\n}) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 355a7b2..1f08d50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,7 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@quartz-community/types": "github:quartz-community/types", - "reading-time": "^1.5.0", - "tsup": "^8.5.0", - "typescript": "^5.9.3" + "@quartz-community/types": "github:quartz-community/types" }, "devDependencies": { "@types/hast": "^3.0.4", @@ -25,6 +22,8 @@ "preact": "^10.28.2", "prettier": "^3.6.2", "sass": "^1.97.3", + "tsup": "^8.5.0", + "typescript": "^5.9.3", "vitest": "^2.1.9" }, "engines": { @@ -33,7 +32,8 @@ }, "peerDependencies": { "@jackyzha0/quartz": "^4.5.2", - "preact": "^10.0.0" + "preact": "^10.0.0", + "reading-time": "^1.5.0" }, "peerDependenciesMeta": { "@jackyzha0/quartz": { @@ -41,6 +41,9 @@ }, "preact": { "optional": false + }, + "reading-time": { + "optional": true } } }, @@ -3214,7 +3217,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3347,12 +3349,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", - "license": "MIT" - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", diff --git a/package.json b/package.json index e91aba4..be9990e 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "sideEffects": false, "scripts": { "build": "tsup", - "prepare": "npm run build", "dev": "tsup --watch", "lint": "eslint . --max-warnings=0", "format": "prettier . --check",