aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/utils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/utils.ts')
-rw-r--r--src/lib/utils.ts37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
new file mode 100644
index 0000000..d4d8119
--- /dev/null
+++ b/src/lib/utils.ts
@@ -0,0 +1,37 @@
+import { type ClassValue, clsx } from 'clsx'
+import { twMerge } from 'tailwind-merge'
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs))
+}
+
+export function formatDate(date: Date) {
+ return Intl.DateTimeFormat('en-US', {
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric',
+ }).format(date)
+}
+
+export function calculateWordCountFromHtml(
+ html: string | null | undefined,
+): number {
+ if (!html) return 0
+ const textOnly = html.replace(/<[^>]+>/g, '')
+ return textOnly.split(/\s+/).filter(Boolean).length
+}
+
+export function readingTime(wordCount: number): string {
+ const readingTimeMinutes = Math.max(1, Math.round(wordCount / 200))
+ return `${readingTimeMinutes} min read`
+}
+
+export function getHeadingMargin(depth: number): string {
+ const margins: Record<number, string> = {
+ 3: 'ml-4',
+ 4: 'ml-8',
+ 5: 'ml-12',
+ 6: 'ml-16',
+ }
+ return margins[depth] || ''
+}