{"id":68783,"date":"2024-07-10T04:43:29","date_gmt":"2024-07-10T01:13:29","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/"},"modified":"2024-07-10T04:43:29","modified_gmt":"2024-07-10T01:13:29","slug":"how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NextJS v14 \u0648 MDX: \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u062a\u0648\u0633\u0639\u0647 \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u0628\u0633\u06cc\u0627\u0631 \u0645\u0648\u062b\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0648 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u06a9\u0633\u0628 \u0634\u062f\u0647\u060c \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0645\u0631\u0628\u0648\u0637\u0647 \u0648 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062e\u0627\u0637\u0628\u0627\u0646 \u0628\u0632\u0631\u06af\u062a\u0631 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u062e\u06cc\u0631\u0627\u064b\u060c \u0645\u0646 \u06cc\u06a9 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u062f\u0631 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u062e\u0648\u062f \u0628\u0627 NextJS v14\u060c MDX \u0648 \u062f\u06cc\u06af\u0631 \u0644\u06cc\u0628\u200c\u0647\u0627 \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f\u0645.  \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0631\u0627\u062d\u0644\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0631\u06a9\u06cc\u0628 \u0648\u0628\u0644\u0627\u06af \u062f\u0627\u0631\u0627\u06cc \u0628\u062e\u0634 \u0647\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Next \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0645\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f.  js \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632.<\/p>\n<p>  \u0686\u0631\u0627 \u0648\u0628\u0644\u0627\u06af \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0645<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0627 \u062a\u062c\u0631\u0628\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0627\u0632 \u0628\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f \u06a9\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0645 \u0648 \u062a\u0641\u06a9\u0631 \u0648 \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u0645 \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0645\u0644\u0645\u0648\u0633 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0644\u0627\u06cc\u0644\u0645 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0634\u0631\u062d \u062f\u0647\u0645.  \u0645\u0646 \u06a9\u0647 \u062e\u0648\u062f\u0645 \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0647\u0633\u062a\u0645\u060c \u0628\u06cc\u0634\u062a\u0631 \u0627\u0648\u0642\u0627\u062a \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u06cc \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u06cc\u062f\u0647 \u0635\u0631\u0641 \u062f\u0631 \u0630\u0647\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639\u06cc\u062a \u0645\u0644\u0645\u0648\u0633 \u062f\u0631 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0646\u0633\u0628\u062a\u0627\u064b \u06a9\u0648\u062a\u0627\u0647\u06cc \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u062f.  \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0633\u0641\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0647\u062f\u0641 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>\ud83d\udd75\ufe0f\u200d\u2642\ufe0f \u0634\u0641\u0627\u0641\u06cc\u062a: \u0628\u0631\u0627\u06cc \u062a\u0648\u0636\u06cc\u062d \u0628\u06cc\u0634\u062a\u0631\u060c \u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0645\u0624\u062b\u0631 \u0628\u0648\u062f\u0646 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u0645 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u062a\u0634\u0631\u06cc\u062d \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0627\u0632 \u06cc\u06a9 \u0633\u0648\u060c \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0645\u0634\u062a\u0627\u0642\u060c \u0627\u063a\u0644\u0628 \u0627\u0648\u0642\u0627\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u06cc\u0646 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0647\u0645\u06a9\u0627\u0631 \u0628\u0627 \u062a\u062c\u0631\u0628\u0647\u200c\u062a\u0631 \u06cc\u0627 \u0647\u0645\u200c\u0634\u0627\u06af\u0631\u062f\u06cc\u060c \u062d\u0633\u0628 \u0645\u0648\u0631\u062f\u060c \u062f\u0631 \u062d\u0627\u0644 \u062d\u0644 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u060c \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<br \/>\n\ud83d\udca1 \u0627\u0644\u0647\u0627\u0645 \u0628\u062e\u0634: \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u0627\u0646\u06af\u06cc\u0632\u0647 \u0647\u0627 \u0648 \u062f\u0644\u0627\u06cc\u0644 \u067e\u0634\u062a \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u06cc\u06af\u0631\u0627\u0646 \u0631\u0627 \u062a\u0631\u063a\u06cc\u0628 \u06a9\u0646\u062f \u062a\u0627 \u0627\u06cc\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0646\u062f.  \u062f\u0631\u06a9 &#8220;\u0686\u0631\u0627&#8221; \u067e\u0634\u062a \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0627\u063a\u0644\u0628 \u0633\u0648\u062e\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0639\u0628\u0648\u0631 \u0627\u0632 \u0686\u0627\u0644\u0634 \u0647\u0627 \u0648 \u0645\u062a\u0639\u0647\u062f \u0645\u0627\u0646\u062f\u0646 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\ud83d\udcda \u0645\u0633\u062a\u0646\u062f\u0627\u062a: \u062b\u0628\u062a \u0633\u0627\u0628\u0642\u0647 \u0633\u0641\u0631 \u062a\u0648\u0633\u0639\u0647 \u0627\u0645 \u0628\u0647 \u0645\u0646 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u067e\u06cc\u0634\u0631\u0641\u062a \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u06af\u06cc\u0631\u06cc \u06a9\u0646\u0645 \u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u062f\u0631\u0633 \u0647\u0627\u06cc \u0622\u0645\u0648\u062e\u062a\u0647 \u0634\u062f\u0647 \u0641\u06a9\u0631 \u06a9\u0646\u0645.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0627\u0631\u0632\u0634\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0645\u0631\u0627\u062c\u0639\u0627\u062a \u0622\u06cc\u0646\u062f\u0647 \u0648 \u0628\u0647\u0628\u0648\u062f \u0645\u0633\u062a\u0645\u0631 \u0627\u0633\u062a.<br \/>\n\ud83d\udde3\ufe0f \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u062c\u0627\u0645\u0639\u0647: \u0648\u0628\u0644\u0627\u06af \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0648 \u0637\u0631\u0641\u0647 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u0646\u0638\u0631\u0627\u062a \u062f\u0627\u0633\u062a\u0627\u0646 \u0647\u0627 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u062f\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u060c \u0647\u0645\u06a9\u0627\u0631\u06cc \u0648 \u0647\u0645\u0631\u0627\u0647\u06cc \u0633\u0627\u06cc\u0631 \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u062a\u0639\u0627\u0645\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0647\u062f\u0641 \u0645\u0646 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06a9\u0631\u062f\u0646 \u0648 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u062a\u0645\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0634\u06a9\u0644\u200c\u06af\u06cc\u0631\u06cc \u0627\u06cc\u062f\u0647 \u0648 \u062a\u0628\u062f\u06cc\u0644 \u0622\u0646 \u0628\u0647 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc \u0648 \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u062c\u0627\u062f \u0627\u0646\u06af\u06cc\u0632\u0647 \u062f\u0631 \u0627\u0641\u0631\u0627\u062f \u0628\u0631\u0627\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u0627\u06cc\u062f\u0647\u200c\u0647\u0627\u06cc\u0634\u0627\u0646 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0631\u0627\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0686\u06cc\u0632\u06cc \u0628\u0647 \u062c\u0645\u0639\u06cc\u062a \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0648 \u06a9\u0645\u06a9 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u0627\u0633\u062a.<\/p>\n<p>\u062e\u0628&#8230; \u0686\u0637\u0648\u0631 \u0627\u0646\u062c\u0627\u0645\u0634 \u062f\u0627\u062f\u0645\u061f<\/p>\n<p>  \u0627\u0641\u0632\u0648\u062f\u0646 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627<\/p>\n<p>Next.js \u0627\u0632 MDX (Markdown \u0628\u0631\u0627\u06cc JSX) \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u0628\u0627 \u0628\u0631\u062e\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0636\u0627\u0641\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0622\u0646 \u0627\u0633\u062a:<\/p>\n<p>  \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u0646 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc MDX \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0645:<\/p>\n<p>npm install @mdx-js\/loader @mdx-js\/react @next\/mdx @tailwindcss\/typography <\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc next.config.js<\/p>\n<p>\u0628\u0627\u06cc\u062f \u0627\u0641\u0632\u0648\u0646\u0647 withMDX \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Next.js \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\/\/ next.config.js<br \/>\nconst withMDX = require(&#8220;@next\/mdx&#8221;)();<\/p>\n<p>const nextConfig = {<br \/>\n  \/\/ Rest of the configuration<br \/>\n  pageExtensions: [&#8220;js&#8221;, &#8220;jsx&#8221;, &#8220;mdx&#8221;, &#8220;ts&#8221;, &#8220;tsx&#8221;],<br \/>\n};<\/p>\n<p>module.exports = withMDX(nextConfig);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc tailwindcss.config.ts<\/p>\n<p>\u0645\u0646 \u0627\u0632 tailwind \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627\u06cc\u062f \u0627\u0641\u0632\u0648\u0646\u0647 \u062a\u0627\u06cc\u067e\u0648\u06af\u0631\u0627\u0641\u06cc \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc tailwind \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0645.<\/p>\n<p>\/\/ tailwindcss.config.ts<br \/>\nconst config = {<br \/>\n  \/\/ Rest of the configuration<br \/>\n  plugins: [require(&#8220;@tailwindcss\/typography&#8221;)],<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u062c\u0632\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 MDX \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 mdxComponents \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0646\u062d\u0648\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0647\u0631 \u0639\u0646\u0635\u0631 MDX \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\/\/ components\/MdxComponents.tsxx<br \/>\nimport Link from &#8220;next\/link&#8221;;<br \/>\nimport { MDXComponents } from &#8220;mdx\/types&#8221;;<br \/>\nimport { Ref, RefAttributes } from &#8220;react&#8221;;<br \/>\nimport { Code } from &#8220;bright&#8221;;<br \/>\nexport const mdxComponents: MDXComponents = {<br \/>\n  pre: (props) =&gt; (<br \/>\n    Code<br \/>\n      theme={&#8220;github-dark&#8221;}<br \/>\n      {&#8230;props}<br \/>\n      style={{<br \/>\n        margin: 0,<br \/>\n      }}<br \/>\n    \/&gt;<br \/>\n  ),<br \/>\n  a: ({ children, ref, &#8230;props }) =&gt; {<br \/>\n    return (<br \/>\n      Link href={props.href || &#8220;.&#8221;} ref={ref as RefHTMLAnchorElement&gt; | undefined} {&#8230;props}&gt;<br \/>\n        {children}<br \/>\n      Link&gt;<br \/>\n    );<br \/>\n  },<br \/>\n  File: ({ children, path, &#8230;props }) =&gt; {<br \/>\n    return (<br \/>\n      div className=&#8221;bg-gray-950 pt-1 rounded-3xl&#8221;&gt;<br \/>\n        div className=&#8221;flex items-center ml-4 my-2 italic font-semibold&#8221;&gt;{path}div&gt;<br \/>\n        {children}<br \/>\n      div&gt;<br \/>\n    );<br \/>\n  },<br \/>\n};<\/p>\n<p>export default mdxComponents;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u062f\u0631 \u06a9\u062f \u0628\u0627\u0644\u0627\u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0639\u0631\u06cc\u0641 \u0686\u06af\u0648\u0646\u06af\u06cc pre \u062a\u06af \u0627\u0631\u0627\u0626\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f\u060c \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 Code \u062c\u0632\u0621 \u0627\u0632 bright \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0628\u0644\u0648\u06a9 \u0647\u0627\u06cc \u06a9\u062f \u0628\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u0633\u0627\u0632\u06cc \u0646\u062d\u0648.  \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0639\u0631\u06cc\u0641 \u0686\u06af\u0648\u0646\u06af\u06cc a \u062a\u06af \u0627\u0631\u0627\u0626\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f\u060c \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 Link \u062c\u0632\u0621 \u0627\u0632 Next.js \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627.  \u0645\u0627 \u0647\u0645 \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0639\u0631\u0641 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 File \u062c\u0632\u0621 \u06a9\u0647 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u0628\u0644\u0648\u06a9 \u06a9\u062f \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0645\u0624\u0644\u0641\u0647 File \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0644\u0648\u06a9 \u0647\u0627\u06cc \u06a9\u062f \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645!<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 MDX \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645!<\/p>\n<p>\/\/ components\/BlogCard.tsxx<br \/>\nimport { MDXRemote } from &#8220;next-mdx-remote\/rsc&#8221;;<br \/>\nimport remarkGfm from &#8220;remark-gfm&#8221;;<br \/>\nimport rehypeSlug from &#8220;rehype-slug&#8221;;<br \/>\nimport rehypeAutolinkHeadings from &#8220;rehype-autolink-headings&#8221;;<br \/>\nimport remarkA11yEmoji from &#8220;@fec\/remark-a11y-emoji&#8221;;<br \/>\nimport remarkToc from &#8220;remark-toc&#8221;;<br \/>\nimport mdxComponents from &#8220;.\/MdxComponents&#8221;;<\/p>\n<p>export default function BlogPost({ children }: { children: string }) {<br \/>\n  return (<br \/>\n    div className=&#8221;prose prose-invert min-w-full&#8221;&gt;<br \/>\n      MDXRemote<br \/>\n        source={children}<br \/>\n        options={{<br \/>\n          mdxOptions: {<br \/>\n            remarkPlugins: [<br \/>\n              \/\/ Adds support for GitHub Flavored Markdown<br \/>\n              remarkGfm,<br \/>\n              \/\/ Makes emoji accessible ! adding aria-label<br \/>\n              remarkA11yEmoji,<br \/>\n              \/\/ generates a table of contents based on headings<br \/>\n              [remarkToc, { tight: true }],<br \/>\n            ],<br \/>\n            \/\/ These work together to add IDs and linkify headings<br \/>\n            rehypePlugins: [rehypeSlug, rehypeAutolinkHeadings],<br \/>\n          },<br \/>\n        }}<br \/>\n        components={mdxComponents}<br \/>\n      \/&gt;<br \/>\n    div&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f MDXRemote \u062c\u0632\u0621 \u0627\u0632 next-mdx-remote\/rsc \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc MDX.  \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 MDXRemote \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 GitHub Flavored Markdown\u060c \u0627\u06cc\u0645\u0648\u062c\u06cc \u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0648 \u062a\u0648\u0644\u06cc\u062f \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628.  \u0627\u06cc\u0646 mdxComponents \u0634\u06cc \u0634\u0627\u0645\u0644 \u0627\u062c\u0632\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc MDX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>  \u0645\u0646\u0637\u0642\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0627\u0646\u0648\u0627\u0639 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0647 \u067e\u0633\u062a \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\/\/ types.d.ts<br \/>\nexport type IBlogPost = {<br \/>\n  date: string;<br \/>\n  title: string;<br \/>\n  description: string;<br \/>\n  slug: string;<br \/>\n  tags: string[];<br \/>\n  body: string;<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u062e\u0648\u062f \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f .mdx \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0633\u06cc\u0631 \/posts \u0627\u0633\u062a \u0648 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f gray-matter \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u062a\u062c\u0632\u06cc\u0647 \u0645\u0648\u0636\u0648\u0639 \u062c\u0644\u0648\u06cc\u06cc \u0647\u0631 \u0641\u0627\u06cc\u0644.\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u062a\u0648\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0647 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\/\/ lib\/blog.ts<br \/>\nimport matter from &#8220;gray-matter&#8221;;<br \/>\nimport path from &#8220;path&#8221;;<br \/>\nimport fs from &#8220;fs\/promises&#8221;;<br \/>\nimport { cache } from &#8220;react&#8221;;<br \/>\nimport { IBlogPost } from &#8220;@\/types&#8221;;<br \/>\nexport const getPosts: () =&gt; PromiseIBlogPost[]&gt; = cache(async () =&gt; {<br \/>\n  const posts = await fs.readdir(&#8220;.\/posts\/&#8221;);<\/p>\n<p>  return Promise.all(<br \/>\n    posts<br \/>\n      .filter((file) =&gt; path.extname(file) === &#8220;.mdx&#8221;)<br \/>\n      .map(async (file) =&gt; {<br \/>\n        const filePath = `.\/posts\/${file}`;<br \/>\n        const postContent = await fs.readFile(filePath, &#8220;utf8&#8221;);<br \/>\n        const { data, content } = matter(postContent);<\/p>\n<p>        \/\/ Not published? No problem, don&#8217;t show it.<br \/>\n        if (data.published === false) {<br \/>\n          return undefined;<br \/>\n        }<\/p>\n<p>        return { &#8230;data, body: content } as IBlogPost;<br \/>\n      })<br \/>\n      .filter((e) =&gt; e)<br \/>\n  ) as PromiseIBlogPost[]&gt;;<br \/>\n});<\/p>\n<p>export async function getPost(slug: string) {<br \/>\n  const posts = await getPosts();<br \/>\n  return posts.find((post) =&gt; post?.slug === slug);<br \/>\n}<\/p>\n<p>export default getPosts;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 getPosts \u062a\u0627\u0628\u0639 \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0648\u0634\u0647 \/posts \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u063a\u06cc\u0631 MDX \u0631\u0627 \u0641\u06cc\u0644\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646\u060c \u0645\u0648\u0636\u0648\u0639 \u062c\u0644\u0648\u06cc\u06cc \u0631\u0627 \u062a\u062c\u0632\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. gray-matter.  \u0633\u067e\u0633 \u0622\u0631\u0627\u06cc\u0647 \u0627\u06cc \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u062d\u0627\u0648\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u0633\u062a \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0628\u062f\u0646\u0647 \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.  \u0627\u06cc\u0646 getPost \u062a\u0627\u0628\u0639 \u06cc\u06a9 \u067e\u0633\u062a \u062e\u0627\u0635 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0633\u0644\u0627\u06af \u062e\u0648\u062f \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0635\u0641\u062d\u0647 \u0627\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0645\u0647 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c\u0645\u0646 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u0645 \u06cc\u06a9 \u0637\u0631\u062d \u0628\u0646\u062f\u06cc \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0627\u062a \u0648\u0628\u0644\u0627\u06af \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u0645\u060c \u0627\u06af\u0631 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0622\u0646 \u0646\u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\/\/ app\/(blog)\/blog\/page.tsxx<br \/>\n\/\/ Here&#8217;s where we will display all the blog posts<br \/>\nimport BlogCard from &#8220;@\/components\/BlogCard&#8221;;<br \/>\nimport getPosts from &#8220;@\/lib\/blog&#8221;;<\/p>\n<p>export default async function PostPage() {<br \/>\n  const posts = await getPosts();<\/p>\n<p>  return (<\/p>\n<p>      h1 className=&#8221;text-5xl&#8221;&gt;<br \/>\n        The span className=&#8221;font-bold&#8221;&gt;Blogspan&gt;.<br \/>\n      h1&gt;<br \/>\n      div className=&#8221;flex flex-col space-y-10 mt-4 p-5&#8243;&gt;<br \/>\n        div&gt;<br \/>\n          ol className=&#8221;group\/list&#8221;&gt;<br \/>\n            {posts.map((post, i) =&gt; (<br \/>\n              li<br \/>\n                className={`mb-12 animate-ease-in animate-delay-500 ${i % 2 == 0 ? &#8220;animate-fade-right&#8221; : &#8220;animate-fade-left&#8221;}`}<br \/>\n                key={i}<br \/>\n              &gt;<br \/>\n              {\/* Remember to always define a key when doing a map function.*\/}<br \/>\n                BlogCard {&#8230;post} key={i} \/&gt;<br \/>\n              li&gt;<br \/>\n            ))}<br \/>\n          ol&gt;<br \/>\n        div&gt;<br \/>\n      div&gt;<br \/>\n    &gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 PostPage \u0645\u0624\u0644\u0641\u0647 \u062a\u0645\u0627\u0645 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 getPosts \u062a\u0627\u0628\u0639 \u0648 \u0646\u0642\u0634\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0648\u06cc \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 a BlogCard \u062c\u0632\u0621 \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0633\u062a  \u0627\u06cc\u0646 BlogCard \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0639\u0646\u0648\u0627\u0646 \u067e\u0633\u062a\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 \u0628\u0631\u0686\u0633\u0628 \u0647\u0627 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0648 \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0635\u0641\u062d\u0647 \u0627\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0633\u062a \u062e\u0627\u0635 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\/\/ app\/(blog)\/[slug]\/page.tsxx<br \/>\nimport BlogPost from &#8220;@\/components\/BlogPost&#8221;;<br \/>\nimport getPosts, { getPost } from &#8220;@\/lib\/blog&#8221;;<\/p>\n<p>import { notFound } from &#8220;next\/navigation&#8221;;<br \/>\nexport async function generateStaticParams() {<br \/>\n  const posts = await getPosts();<br \/>\n  return posts.map((post) =&gt; ({ slug: post?.slug }));<br \/>\n}<br \/>\nexport default async function PostPage({<br \/>\n  params,<br \/>\n}: {<br \/>\n  params: {<br \/>\n    slug: string;<br \/>\n  };<br \/>\n}) {<br \/>\n  const post = await getPost(params.slug);<br \/>\n  if (!post) return notFound();<br \/>\n  return BlogPost&gt;{post?.body}BlogPost&gt;;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 PostPage \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u067e\u0633\u062a \u062e\u0627\u0635 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0633\u0644\u06af \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 URL \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06af\u0631 \u067e\u0633\u062a \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u060c \u0635\u0641\u062d\u0647 404 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 notFound \u062a\u0627\u0628\u0639 \u0627\u0632 next\/navigation.  \u0627\u06cc\u0646 BlogPost \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0645\u062d\u062a\u0648\u0627\u06cc \u067e\u0633\u062a \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 MDXRemote \u062c\u0632\u0621.<\/p>\n<p>  \u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 (SEO) \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u0648 \u0628\u0647 \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0635\u0641\u062d\u0627\u062a \u0648\u0628 \u0633\u0627\u06cc\u062a \u0634\u0645\u0627 \u0631\u0627 \u06a9\u0634\u0641 \u0648 \u0641\u0647\u0631\u0633\u062a \u06a9\u0646\u0646\u062f.  \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u062f\u0648\u0646 \u0633\u0631\u0648\u0631 \u062f\u0631 Next.js \u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\/\/ app\/sitemap.ts<br \/>\nimport { getPosts } from &#8220;@\/lib\/blog&#8221;;<\/p>\n<p>export default async function sitemap() {<br \/>\n  \/\/ Define the routes that should be included in the sitemap<br \/>\n  const routes = [&#8220;&#8221;, &#8220;\/blog&#8221;].map((route) =&gt; ({<br \/>\n    url: `https:\/\/ginos.codes${route}`,<br \/>\n    lastModified: new Date().toISOString().split(&#8220;T&#8221;)[0],<br \/>\n  }));<\/p>\n<p>  \/\/ Get all posts and create a sitemap route for each one<br \/>\n  const posts = await getPosts();<br \/>\n  const blogs = posts.map((post) =&gt; ({<br \/>\n    url: `https:\/\/ginos.codes\/blog\/${post.slug}`,<br \/>\n    lastModified: new Date(post.date).toISOString().split(&#8220;T&#8221;)[0],<br \/>\n  }));<\/p>\n<p>  return [&#8230;routes, &#8230;blogs];<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 sitemap \u062a\u0627\u0628\u0639 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0648 \u0635\u0641\u062d\u0647 \u0648\u0628\u0644\u0627\u06af \u0627\u0633\u062a.  \u0633\u067e\u0633 \u062a\u0645\u0627\u0645 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 URL \u067e\u0633\u062a \u0648 \u0622\u062e\u0631\u06cc\u0646 \u062a\u0627\u0631\u06cc\u062e \u0627\u0635\u0644\u0627\u062d.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0645\u0627 \u0631\u0648\u0646\u062f \u06a9\u0627\u0645\u0644 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NextJS v14 \u0648 MDX \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u06cc\u0645.  \u0627\u0632 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0646\u0645\u0627\u06cc\u0634 \u067e\u0633\u062a\u200c\u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af\u060c \u0647\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0632\u06cc\u0628\u0627\u06cc\u06cc\u200c\u0634\u0646\u0627\u062e\u062a\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a.  \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0648\u0628\u0644\u0627\u06af\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0646\u0647 \u062a\u0646\u0647\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u0646 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a\u060c \u0628\u0644\u06a9\u0647 \u0633\u0626\u0648 \u067e\u0633\u0646\u062f \u0646\u06cc\u0632 \u0628\u0627\u0634\u062f.<\/p>\n<div data-article-id=\"1917884\" id=\"article-body\">\n<p>\u062a\u0648\u0633\u0639\u0647 \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u0628\u0633\u06cc\u0627\u0631 \u0645\u0648\u062b\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0648 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u06a9\u0633\u0628 \u0634\u062f\u0647\u060c \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0645\u0631\u0628\u0648\u0637\u0647 \u0648 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062e\u0627\u0637\u0628\u0627\u0646 \u0628\u0632\u0631\u06af\u062a\u0631 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u062e\u06cc\u0631\u0627\u064b\u060c \u0645\u0646 \u06cc\u06a9 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u062f\u0631 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u062e\u0648\u062f \u0628\u0627 NextJS v14\u060c MDX \u0648 \u062f\u06cc\u06af\u0631 \u0644\u06cc\u0628\u200c\u0647\u0627 \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f\u0645.  \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0631\u0627\u062d\u0644\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0631\u06a9\u06cc\u0628 \u0648\u0628\u0644\u0627\u06af \u062f\u0627\u0631\u0627\u06cc \u0628\u062e\u0634 \u0647\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Next \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0645\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f.  js \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0645\u0627\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%DA%86%D8%B1%D8%A7_%D9%88%D8%A8%D9%84%D8%A7%DA%AF_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B1%D8%A7_%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%DA%A9%D8%B1%D8%AF%D9%85\" >\u0686\u0631\u0627 \u0648\u0628\u0644\u0627\u06af \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86_%D9%88_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D9%87%D8%A7\" >\u0627\u0641\u0632\u0648\u062f\u0646 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%D8%A8%D8%B3%D8%AA%D9%87_%D9%87%D8%A7%DB%8C_%D9%85%D9%88%D8%B1%D8%AF_%D9%86%DB%8C%D8%A7%D8%B2_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_nextconfigjs\" >\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc next.config.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_tailwindcssconfigts\" >\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc tailwindcss.config.ts<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D9%85%D9%88%D8%B1%D8%AF_%D9%86%DB%8C%D8%A7%D8%B2_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B1%D9%86%D8%AF%D8%B1_%DA%A9%D8%B1%D8%AF%D9%86_MDX_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0627\u062c\u0632\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 MDX \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%D9%85%D9%86%D8%B7%D9%82%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%88%D8%A7%DA%A9%D8%B4%DB%8C_%D9%BE%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%88%D8%A8%D9%84%D8%A7%DA%AF_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0646\u0637\u0642\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%DB%8C%DA%A9_%D8%B5%D9%81%D8%AD%D9%87_%D9%88%D8%A8%D9%84%D8%A7%DA%AF_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%DB%8C%DA%A9_%D9%86%D9%82%D8%B4%D9%87_%D8%B3%D8%A7%DB%8C%D8%AA_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/how-to-create-a-blog-using-nextjs-v14-and-mdx-a-comprehensive-guide-42g5\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D9%88%D8%A8%D9%84%D8%A7%DA%AF_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B1%D8%A7_%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%DA%A9%D8%B1%D8%AF%D9%85\"><\/span>\n<p>  \u0686\u0631\u0627 \u0648\u0628\u0644\u0627\u06af \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0627 \u062a\u062c\u0631\u0628\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0627\u0632 \u0628\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f \u06a9\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0645 \u0648 \u062a\u0641\u06a9\u0631 \u0648 \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u0645 \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0645\u0644\u0645\u0648\u0633 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0644\u0627\u06cc\u0644\u0645 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0634\u0631\u062d \u062f\u0647\u0645.  \u0645\u0646 \u06a9\u0647 \u062e\u0648\u062f\u0645 \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0647\u0633\u062a\u0645\u060c \u0628\u06cc\u0634\u062a\u0631 \u0627\u0648\u0642\u0627\u062a \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u06cc \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u06cc\u062f\u0647 \u0635\u0631\u0641 \u062f\u0631 \u0630\u0647\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639\u06cc\u062a \u0645\u0644\u0645\u0648\u0633 \u062f\u0631 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0646\u0633\u0628\u062a\u0627\u064b \u06a9\u0648\u062a\u0627\u0647\u06cc \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u062f.  \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0633\u0641\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0647\u062f\u0641 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ol>\n<li>\n<p><strong>\ud83d\udd75\ufe0f\u200d\u2642\ufe0f \u0634\u0641\u0627\u0641\u06cc\u062a<\/strong>: \u0628\u0631\u0627\u06cc \u062a\u0648\u0636\u06cc\u062d \u0628\u06cc\u0634\u062a\u0631\u060c \u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0645\u0624\u062b\u0631 \u0628\u0648\u062f\u0646 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u0645 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u062a\u0634\u0631\u06cc\u062d \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0627\u0632 \u06cc\u06a9 \u0633\u0648\u060c \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0645\u0634\u062a\u0627\u0642\u060c \u0627\u063a\u0644\u0628 \u0627\u0648\u0642\u0627\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u06cc\u0646 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0647\u0645\u06a9\u0627\u0631 \u0628\u0627 \u062a\u062c\u0631\u0628\u0647\u200c\u062a\u0631 \u06cc\u0627 \u0647\u0645\u200c\u0634\u0627\u06af\u0631\u062f\u06cc\u060c \u062d\u0633\u0628 \u0645\u0648\u0631\u062f\u060c \u062f\u0631 \u062d\u0627\u0644 \u062d\u0644 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u060c \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<\/li>\n<li>\n<p><strong>\ud83d\udca1 \u0627\u0644\u0647\u0627\u0645 \u0628\u062e\u0634<\/strong>: \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u0627\u0646\u06af\u06cc\u0632\u0647 \u0647\u0627 \u0648 \u062f\u0644\u0627\u06cc\u0644 \u067e\u0634\u062a \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u06cc\u06af\u0631\u0627\u0646 \u0631\u0627 \u062a\u0631\u063a\u06cc\u0628 \u06a9\u0646\u062f \u062a\u0627 \u0627\u06cc\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0646\u062f.  \u062f\u0631\u06a9 &#8220;\u0686\u0631\u0627&#8221; \u067e\u0634\u062a \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0627\u063a\u0644\u0628 \u0633\u0648\u062e\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0639\u0628\u0648\u0631 \u0627\u0632 \u0686\u0627\u0644\u0634 \u0647\u0627 \u0648 \u0645\u062a\u0639\u0647\u062f \u0645\u0627\u0646\u062f\u0646 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\ud83d\udcda \u0645\u0633\u062a\u0646\u062f\u0627\u062a<\/strong>: \u062b\u0628\u062a \u0633\u0627\u0628\u0642\u0647 \u0633\u0641\u0631 \u062a\u0648\u0633\u0639\u0647 \u0627\u0645 \u0628\u0647 \u0645\u0646 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u067e\u06cc\u0634\u0631\u0641\u062a \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u06af\u06cc\u0631\u06cc \u06a9\u0646\u0645 \u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u062f\u0631\u0633 \u0647\u0627\u06cc \u0622\u0645\u0648\u062e\u062a\u0647 \u0634\u062f\u0647 \u0641\u06a9\u0631 \u06a9\u0646\u0645.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0627\u0631\u0632\u0634\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0645\u0631\u0627\u062c\u0639\u0627\u062a \u0622\u06cc\u0646\u062f\u0647 \u0648 \u0628\u0647\u0628\u0648\u062f \u0645\u0633\u062a\u0645\u0631 \u0627\u0633\u062a.<\/p>\n<\/li>\n<li>\n<p><strong>\ud83d\udde3\ufe0f \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u062c\u0627\u0645\u0639\u0647<\/strong>: \u0648\u0628\u0644\u0627\u06af \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0648 \u0637\u0631\u0641\u0647 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u0646\u0638\u0631\u0627\u062a \u062f\u0627\u0633\u062a\u0627\u0646 \u0647\u0627 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u062f\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u060c \u0647\u0645\u06a9\u0627\u0631\u06cc \u0648 \u0647\u0645\u0631\u0627\u0647\u06cc \u0633\u0627\u06cc\u0631 \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u062a\u0639\u0627\u0645\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<\/li>\n<\/ol>\n<p>\u0647\u062f\u0641 \u0645\u0646 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06a9\u0631\u062f\u0646 \u0648 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u062a\u0645\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0634\u06a9\u0644\u200c\u06af\u06cc\u0631\u06cc \u0627\u06cc\u062f\u0647 \u0648 \u062a\u0628\u062f\u06cc\u0644 \u0622\u0646 \u0628\u0647 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc \u0648 \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u062c\u0627\u062f \u0627\u0646\u06af\u06cc\u0632\u0647 \u062f\u0631 \u0627\u0641\u0631\u0627\u062f \u0628\u0631\u0627\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u0627\u06cc\u062f\u0647\u200c\u0647\u0627\u06cc\u0634\u0627\u0646 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0631\u0627\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0686\u06cc\u0632\u06cc \u0628\u0647 \u062c\u0645\u0639\u06cc\u062a \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0648 \u06a9\u0645\u06a9 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u0627\u0633\u062a.<\/p>\n<p><em>\u062e\u0628&#8230; \u0686\u0637\u0648\u0631 \u0627\u0646\u062c\u0627\u0645\u0634 \u062f\u0627\u062f\u0645\u061f<\/em><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86_%D9%88_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D9%87%D8%A7\"><\/span>\n<p>  \u0627\u0641\u0632\u0648\u062f\u0646 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Next.js \u0627\u0632 MDX (Markdown \u0628\u0631\u0627\u06cc JSX) \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u0628\u0627 \u0628\u0631\u062e\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0636\u0627\u0641\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0622\u0646 \u0627\u0633\u062a:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B3%D8%AA%D9%87_%D9%87%D8%A7%DB%8C_%D9%85%D9%88%D8%B1%D8%AF_%D9%86%DB%8C%D8%A7%D8%B2_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0646 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc MDX \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm <span class=\"nb\">install<\/span> @mdx-js\/loader @mdx-js\/react @next\/mdx @tailwindcss\/typography \n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_nextconfigjs\"><\/span>\n<p>  \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc <code>next.config.js<\/code><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0627\u06cc\u062f \u0627\u0641\u0632\u0648\u0646\u0647 withMDX \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Next.js \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ next.config.js<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">withMDX<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">@next\/mdx<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)();<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">nextConfig<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Rest of the configuration<\/span>\n  <span class=\"na\">pageExtensions<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">js<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">jsx<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mdx<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">tsx<\/span><span class=\"dl\">\"<\/span><span class=\"p\">],<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kr\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">withMDX<\/span><span class=\"p\">(<\/span><span class=\"nx\">nextConfig<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_tailwindcssconfigts\"><\/span>\n<p>  \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc <code>tailwindcss.config.ts<\/code><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0646 \u0627\u0632 tailwind \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627\u06cc\u062f \u0627\u0641\u0632\u0648\u0646\u0647 \u062a\u0627\u06cc\u067e\u0648\u06af\u0631\u0627\u0641\u06cc \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc tailwind \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ tailwindcss.config.ts<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">config<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Rest of the configuration<\/span>\n  <span class=\"na\">plugins<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">@tailwindcss\/typography<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)],<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_%D9%85%D9%88%D8%B1%D8%AF_%D9%86%DB%8C%D8%A7%D8%B2_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B1%D9%86%D8%AF%D8%B1_%DA%A9%D8%B1%D8%AF%D9%86_MDX_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0627\u062c\u0632\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 MDX \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 mdxComponents \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0646\u062d\u0648\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0647\u0631 \u0639\u0646\u0635\u0631 MDX \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ components\/MdxComponents.tsxx<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Link<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/link<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">MDXComponents<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mdx\/types<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Ref<\/span><span class=\"p\">,<\/span> <span class=\"nx\">RefAttributes<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Code<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bright<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">mdxComponents<\/span><span class=\"p\">:<\/span> <span class=\"nx\">MDXComponents<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">pre<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">props<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n    <span class=\"p\"><span class=\"nc\">Code<\/span>\n      <span class=\"na\">theme<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">github-dark<\/span><span class=\"dl\">\"<\/span><span class=\"si\">}<\/span>\n      <span class=\"si\">{<\/span><span class=\"p\">...<\/span><span class=\"nx\">props<\/span><span class=\"si\">}<\/span>\n      <span class=\"na\">style<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">{<\/span>\n        <span class=\"na\">margin<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">}<\/span><span class=\"si\">}<\/span>\n    <span class=\"p\">\/&gt;<\/span>\n  <span class=\"p\">),<\/span>\n  <span class=\"na\">a<\/span><span class=\"p\">:<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">children<\/span><span class=\"p\">,<\/span> <span class=\"nx\">ref<\/span><span class=\"p\">,<\/span> <span class=\"p\">...<\/span><span class=\"nx\">props<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n      <span class=\"p\"><span class=\"nc\">Link<\/span> <span class=\"na\">href<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">props<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.<\/span><span class=\"dl\">\"<\/span><span class=\"si\">}<\/span> <span class=\"na\">ref<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">ref<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">Ref<\/span><span class=\"o\"><span class=\"nx\">HTMLAnchorElement<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">|<\/span> <span class=\"kc\">undefined<\/span><span class=\"si\">}<\/span> <span class=\"si\">{<\/span><span class=\"p\">...<\/span><span class=\"nx\">props<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"si\">{<\/span><span class=\"nx\">children<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\"\/><span class=\"nc\">Link<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span>\n  <span class=\"na\">File<\/span><span class=\"p\">:<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">children<\/span><span class=\"p\">,<\/span> <span class=\"nx\">path<\/span><span class=\"p\">,<\/span> <span class=\"p\">...<\/span><span class=\"nx\">props<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n      <span class=\"p\"><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-gray-950 pt-1 rounded-3xl\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"flex items-center ml-4 my-2 italic font-semibold\"<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">path<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"si\">{<\/span><span class=\"nx\">children<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">mdxComponents<\/span><span class=\"p\">;<\/span>\n<\/span><\/span><\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u062f\u0631 \u06a9\u062f \u0628\u0627\u0644\u0627\u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0639\u0631\u06cc\u0641 \u0686\u06af\u0648\u0646\u06af\u06cc <code>pre<\/code> \u062a\u06af \u0627\u0631\u0627\u0626\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f\u060c \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Code<\/code> \u062c\u0632\u0621 \u0627\u0632 <code>bright<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0628\u0644\u0648\u06a9 \u0647\u0627\u06cc \u06a9\u062f \u0628\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u0633\u0627\u0632\u06cc \u0646\u062d\u0648.  \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0639\u0631\u06cc\u0641 \u0686\u06af\u0648\u0646\u06af\u06cc <code>a<\/code> \u062a\u06af \u0627\u0631\u0627\u0626\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f\u060c \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Link<\/code> \u062c\u0632\u0621 \u0627\u0632 Next.js \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627.  \u0645\u0627 \u0647\u0645 \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0639\u0631\u0641 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>File<\/code> \u062c\u0632\u0621 \u06a9\u0647 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u0628\u0644\u0648\u06a9 \u06a9\u062f \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><em>\u0645\u0624\u0644\u0641\u0647 File \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0644\u0648\u06a9 \u0647\u0627\u06cc \u06a9\u062f \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645!<\/em><\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631 MDX \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645!<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ components\/BlogCard.tsxx<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">MDXRemote<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next-mdx-remote\/rsc<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">remarkGfm<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">remark-gfm<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">rehypeSlug<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">rehype-slug<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">rehypeAutolinkHeadings<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">rehype-autolink-headings<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">remarkA11yEmoji<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@fec\/remark-a11y-emoji<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">remarkToc<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">remark-toc<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">mdxComponents<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/MdxComponents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">BlogPost<\/span><span class=\"p\">({<\/span> <span class=\"nx\">children<\/span> <span class=\"p\">}:<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">children<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\"><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"prose prose-invert min-w-full\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"><span class=\"nc\">MDXRemote<\/span>\n        <span class=\"na\">source<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">children<\/span><span class=\"si\">}<\/span>\n        <span class=\"na\">options<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">{<\/span>\n          <span class=\"na\">mdxOptions<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n            <span class=\"na\">remarkPlugins<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n              <span class=\"c1\">\/\/ Adds support for GitHub Flavored Markdown<\/span>\n              <span class=\"nx\">remarkGfm<\/span><span class=\"p\">,<\/span>\n              <span class=\"c1\">\/\/ Makes emoji accessible ! adding aria-label<\/span>\n              <span class=\"nx\">remarkA11yEmoji<\/span><span class=\"p\">,<\/span>\n              <span class=\"c1\">\/\/ generates a table of contents based on headings<\/span>\n              <span class=\"p\">[<\/span><span class=\"nx\">remarkToc<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">tight<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">}],<\/span>\n            <span class=\"p\">],<\/span>\n            <span class=\"c1\">\/\/ These work together to add IDs and linkify headings<\/span>\n            <span class=\"na\">rehypePlugins<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"nx\">rehypeSlug<\/span><span class=\"p\">,<\/span> <span class=\"nx\">rehypeAutolinkHeadings<\/span><span class=\"p\">],<\/span>\n          <span class=\"p\">},<\/span>\n        <span class=\"p\">}<\/span><span class=\"si\">}<\/span>\n        <span class=\"na\">components<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">mdxComponents<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>MDXRemote<\/code> \u062c\u0632\u0621 \u0627\u0632 <code>next-mdx-remote\/rsc<\/code> \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc MDX.  \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 <code>MDXRemote<\/code> \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 GitHub Flavored Markdown\u060c \u0627\u06cc\u0645\u0648\u062c\u06cc \u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0648 \u062a\u0648\u0644\u06cc\u062f \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628.  \u0627\u06cc\u0646 <code>mdxComponents<\/code> \u0634\u06cc \u0634\u0627\u0645\u0644 \u0627\u062c\u0632\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc MDX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D9%86%D8%B7%D9%82%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%88%D8%A7%DA%A9%D8%B4%DB%8C_%D9%BE%D8%B3%D8%AA_%D9%87%D8%A7%DB%8C_%D9%88%D8%A8%D9%84%D8%A7%DA%AF_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0646\u0637\u0642\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0627 \u0627\u0646\u0648\u0627\u0639 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0647 \u067e\u0633\u062a \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ types.d.ts<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">type<\/span> <span class=\"nx\">IBlogPost<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">date<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">title<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">description<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">slug<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">tags<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">[];<\/span>\n  <span class=\"nl\">body<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u062e\u0648\u062f \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>.mdx<\/code> \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0633\u06cc\u0631 \/posts \u0627\u0633\u062a \u0648 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>gray-matter<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u062a\u062c\u0632\u06cc\u0647 \u0645\u0648\u0636\u0648\u0639 \u062c\u0644\u0648\u06cc\u06cc \u0647\u0631 \u0641\u0627\u06cc\u0644.<br \/>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u062a\u0648\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0647 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ lib\/blog.ts  <\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">matter<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">gray-matter<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">path<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">fs<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">fs\/promises<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">cache<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">IBlogPost<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/types<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">getPosts<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\"><span class=\"nx\">IBlogPost<\/span><span class=\"p\">[]<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">cache<\/span><span class=\"p\">(<\/span><span class=\"k\">async <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">posts<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">fs<\/span><span class=\"p\">.<\/span><span class=\"nf\">readdir<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">.\/posts\/<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"nb\">Promise<\/span><span class=\"p\">.<\/span><span class=\"nf\">all<\/span><span class=\"p\">(<\/span>\n    <span class=\"nx\">posts<\/span>\n      <span class=\"p\">.<\/span><span class=\"nf\">filter<\/span><span class=\"p\">((<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nf\">extname<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.mdx<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n      <span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">(<\/span><span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">filePath<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`.\/posts\/<\/span><span class=\"p\">${<\/span><span class=\"nx\">file<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">;<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">postContent<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">fs<\/span><span class=\"p\">.<\/span><span class=\"nf\">readFile<\/span><span class=\"p\">(<\/span><span class=\"nx\">filePath<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">utf8<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"nx\">content<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">matter<\/span><span class=\"p\">(<\/span><span class=\"nx\">postContent<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"c1\">\/\/ Not published? No problem, don't show it.<\/span>\n        <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">published<\/span> <span class=\"o\">===<\/span> <span class=\"kc\">false<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n          <span class=\"k\">return<\/span> <span class=\"kc\">undefined<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"p\">...<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"na\">body<\/span><span class=\"p\">:<\/span> <span class=\"nx\">content<\/span> <span class=\"p\">}<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IBlogPost<\/span><span class=\"p\">;<\/span>\n      <span class=\"p\">})<\/span>\n      <span class=\"p\">.<\/span><span class=\"nf\">filter<\/span><span class=\"p\">((<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">e<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">)<\/span> <span class=\"k\">as<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\"><span class=\"nx\">IBlogPost<\/span><span class=\"p\">[]<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">getPost<\/span><span class=\"p\">(<\/span><span class=\"nx\">slug<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">posts<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getPosts<\/span><span class=\"p\">();<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">posts<\/span><span class=\"p\">.<\/span><span class=\"nf\">find<\/span><span class=\"p\">((<\/span><span class=\"nx\">post<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">post<\/span><span class=\"p\">?.<\/span><span class=\"nx\">slug<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">slug<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">getPosts<\/span><span class=\"p\">;<\/span>\n\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>getPosts<\/code> \u062a\u0627\u0628\u0639 \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0648\u0634\u0647 \/posts \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u063a\u06cc\u0631 MDX \u0631\u0627 \u0641\u06cc\u0644\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646\u060c \u0645\u0648\u0636\u0648\u0639 \u062c\u0644\u0648\u06cc\u06cc \u0631\u0627 \u062a\u062c\u0632\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. <code>gray-matter<\/code>.  \u0633\u067e\u0633 \u0622\u0631\u0627\u06cc\u0647 \u0627\u06cc \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u062d\u0627\u0648\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u0633\u062a \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0628\u062f\u0646\u0647 \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.  \u0627\u06cc\u0646 <code>getPost<\/code> \u062a\u0627\u0628\u0639 \u06cc\u06a9 \u067e\u0633\u062a \u062e\u0627\u0635 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0633\u0644\u0627\u06af \u062e\u0648\u062f \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%D8%B5%D9%81%D8%AD%D9%87_%D9%88%D8%A8%D9%84%D8%A7%DA%AF_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0648\u0628\u0644\u0627\u06af \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0635\u0641\u062d\u0647 \u0627\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0645\u0647 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c<br \/>\u0645\u0646 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u0645 \u06cc\u06a9 \u0637\u0631\u062d \u0628\u0646\u062f\u06cc \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0627\u062a \u0648\u0628\u0644\u0627\u06af \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u0645\u060c \u0627\u06af\u0631 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0622\u0646 \u0646\u062f\u0627\u0631\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ app\/(blog)\/blog\/page.tsxx<\/span>\n<span class=\"c1\">\/\/ Here's where we will display all the blog posts<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">BlogCard<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/components\/BlogCard<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">getPosts<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/lib\/blog<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">PostPage<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">posts<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getPosts<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\"\/>\n      <span class=\"p\"><span class=\"nt\">h1<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"text-5xl\"<\/span><span class=\"p\">&gt;<\/span>\n        The <span class=\"p\"><span class=\"nt\">span<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"font-bold\"<\/span><span class=\"p\">&gt;<\/span>Blog<span class=\"p\"\/><span class=\"nt\">span<\/span><span class=\"p\">&gt;<\/span>.\n      <span class=\"p\"\/><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"flex flex-col space-y-10 mt-4 p-5\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\"><span class=\"nt\">ol<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"group\/list\"<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"si\">{<\/span><span class=\"nx\">posts<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">post<\/span><span class=\"p\">,<\/span> <span class=\"nx\">i<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n              <span class=\"p\"><span class=\"nt\">li<\/span>\n                <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"s2\">`mb-12 animate-ease-in animate-delay-500 <\/span><span class=\"p\">${<\/span><span class=\"nx\">i<\/span> <span class=\"o\">%<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">?<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">animate-fade-right<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">animate-fade-left<\/span><span class=\"dl\">\"<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"si\">}<\/span>\n                <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">i<\/span><span class=\"si\">}<\/span>\n              <span class=\"p\">&gt;<\/span>\n              <span class=\"si\">{<\/span><span class=\"cm\">\/* Remember to always define a key when doing a map function.*\/<\/span><span class=\"si\">}<\/span>\n                <span class=\"p\"><span class=\"nc\">BlogCard<\/span> <span class=\"si\">{<\/span><span class=\"p\">...<\/span><span class=\"nx\">post<\/span><span class=\"si\">}<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">i<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n              <span class=\"p\"\/><span class=\"nt\">li<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n          <span class=\"p\"\/><span class=\"nt\">ol<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>PostPage<\/code> \u0645\u0624\u0644\u0641\u0647 \u062a\u0645\u0627\u0645 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>getPosts<\/code> \u062a\u0627\u0628\u0639 \u0648 \u0646\u0642\u0634\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0648\u06cc \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 a <code>BlogCard<\/code> \u062c\u0632\u0621 \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0633\u062a  \u0627\u06cc\u0646 <code>BlogCard<\/code> \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0639\u0646\u0648\u0627\u0646 \u067e\u0633\u062a\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 \u0628\u0631\u0686\u0633\u0628 \u0647\u0627 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0648 \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0635\u0641\u062d\u0647 \u0627\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0633\u062a \u062e\u0627\u0635 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ app\/(blog)\/[slug]\/page.tsxx<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">BlogPost<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/components\/BlogPost<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">getPosts<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">getPost<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/lib\/blog<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">notFound<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/navigation<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">export<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">generateStaticParams<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">posts<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getPosts<\/span><span class=\"p\">();<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">posts<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">post<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">({<\/span> <span class=\"na\">slug<\/span><span class=\"p\">:<\/span> <span class=\"nx\">post<\/span><span class=\"p\">?.<\/span><span class=\"nx\">slug<\/span> <span class=\"p\">}));<\/span>\n<span class=\"p\">}<\/span>\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">PostPage<\/span><span class=\"p\">({<\/span>\n  <span class=\"nx\">params<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}:<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nl\">params<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">slug<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">};<\/span>\n<span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">post<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getPost<\/span><span class=\"p\">(<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nx\">slug<\/span><span class=\"p\">);<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">post<\/span><span class=\"p\">)<\/span> <span class=\"k\">return<\/span> <span class=\"nf\">notFound<\/span><span class=\"p\">();<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\"><span class=\"nc\">BlogPost<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">post<\/span><span class=\"p\">?.<\/span><span class=\"nx\">body<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nc\">BlogPost<\/span><span class=\"p\">&gt;;<\/span>\n<span class=\"p\">}<\/span>\n\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>PostPage<\/code> \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u067e\u0633\u062a \u062e\u0627\u0635 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0633\u0644\u06af \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 URL \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06af\u0631 \u067e\u0633\u062a \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u060c \u0635\u0641\u062d\u0647 404 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>notFound<\/code> \u062a\u0627\u0628\u0639 \u0627\u0632 <code>next\/navigation<\/code>.  \u0627\u06cc\u0646 <code>BlogPost<\/code> \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0645\u062d\u062a\u0648\u0627\u06cc \u067e\u0633\u062a \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>MDXRemote<\/code> \u062c\u0632\u0621.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%D9%86%D9%82%D8%B4%D9%87_%D8%B3%D8%A7%DB%8C%D8%AA_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u062c\u0627\u062f \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 (SEO) \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u0648 \u0628\u0647 \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0635\u0641\u062d\u0627\u062a \u0648\u0628 \u0633\u0627\u06cc\u062a \u0634\u0645\u0627 \u0631\u0627 \u06a9\u0634\u0641 \u0648 \u0641\u0647\u0631\u0633\u062a \u06a9\u0646\u0646\u062f.  \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0628\u062f\u0648\u0646 \u0633\u0631\u0648\u0631 \u062f\u0631 Next.js \u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"c1\">\/\/ app\/sitemap.ts<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">getPosts<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/lib\/blog<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">sitemap<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Define the routes that should be included in the sitemap<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">routes<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">\/blog<\/span><span class=\"dl\">\"<\/span><span class=\"p\">].<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">route<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">({<\/span>\n    <span class=\"na\">url<\/span><span class=\"p\">:<\/span> <span class=\"s2\">`https:\/\/ginos.codes<\/span><span class=\"p\">${<\/span><span class=\"nx\">route<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">lastModified<\/span><span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">().<\/span><span class=\"nf\">toISOString<\/span><span class=\"p\">().<\/span><span class=\"nf\">split<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">T<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span>\n  <span class=\"p\">}));<\/span>\n\n  <span class=\"c1\">\/\/ Get all posts and create a sitemap route for each one<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">posts<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getPosts<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">blogs<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">posts<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">post<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">({<\/span>\n    <span class=\"na\">url<\/span><span class=\"p\">:<\/span> <span class=\"s2\">`https:\/\/ginos.codes\/blog\/<\/span><span class=\"p\">${<\/span><span class=\"nx\">post<\/span><span class=\"p\">.<\/span><span class=\"nx\">slug<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">lastModified<\/span><span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">(<\/span><span class=\"nx\">post<\/span><span class=\"p\">.<\/span><span class=\"nx\">date<\/span><span class=\"p\">).<\/span><span class=\"nf\">toISOString<\/span><span class=\"p\">().<\/span><span class=\"nf\">split<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">T<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span>\n  <span class=\"p\">}));<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">[...<\/span><span class=\"nx\">routes<\/span><span class=\"p\">,<\/span> <span class=\"p\">...<\/span><span class=\"nx\">blogs<\/span><span class=\"p\">];<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>sitemap<\/code> \u062a\u0627\u0628\u0639 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0648 \u0635\u0641\u062d\u0647 \u0648\u0628\u0644\u0627\u06af \u0627\u0633\u062a.  \u0633\u067e\u0633 \u062a\u0645\u0627\u0645 \u067e\u0633\u062a \u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u0646\u0642\u0634\u0647 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 URL \u067e\u0633\u062a \u0648 \u0622\u062e\u0631\u06cc\u0646 \u062a\u0627\u0631\u06cc\u062e \u0627\u0635\u0644\u0627\u062d.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0645\u0627 \u0631\u0648\u0646\u062f \u06a9\u0627\u0645\u0644 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NextJS v14 \u0648 MDX \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u06cc\u0645.  \u0627\u0632 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0646\u0645\u0627\u06cc\u0634 \u067e\u0633\u062a\u200c\u0647\u0627\u06cc \u0648\u0628\u0644\u0627\u06af\u060c \u0647\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0632\u06cc\u0628\u0627\u06cc\u06cc\u200c\u0634\u0646\u0627\u062e\u062a\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a.  \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0648\u0628\u0644\u0627\u06af\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0646\u0647 \u062a\u0646\u0647\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u0646 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a\u060c \u0628\u0644\u06a9\u0647 \u0633\u0626\u0648 \u067e\u0633\u0646\u062f \u0646\u06cc\u0632 \u0628\u0627\u0634\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062a\u0648\u0633\u0639\u0647 \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u0628\u0633\u06cc\u0627\u0631 \u0645\u0648\u062b\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0648 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u06a9\u0633\u0628 \u0634\u062f\u0647\u060c \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0645\u0631\u0628\u0648\u0637\u0647 \u0648 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062e\u0627\u0637\u0628\u0627\u0646 \u0628\u0632\u0631\u06af\u062a\u0631 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u062e\u06cc\u0631\u0627\u064b\u060c \u0645\u0646 \u06cc\u06a9 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u062f\u0631 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u062e\u0648\u062f \u0628\u0627 NextJS v14\u060c MDX \u0648 \u062f\u06cc\u06af\u0631 \u0644\u06cc\u0628\u200c\u0647\u0627 \u0627\u062f\u063a\u0627\u0645 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":68784,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-68783","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/68783","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=68783"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/68783\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/68784"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=68783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=68783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=68783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}