next-markdown-blog
Version:
An npm package that allows Next.js users to create blogs using markdown
69 lines (68 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultStyleClasses = void 0;
exports.extractTailwindClasses = extractTailwindClasses;
exports.generateTailwindSafelist = generateTailwindSafelist;
exports.generateTailwindConfig = generateTailwindConfig;
/**
* Default style classes used by the BlogPost component
*/
exports.defaultStyleClasses = {
h1: 'text-4xl font-bold mb-6',
h2: 'text-3xl font-semibold mb-4 mt-8',
h3: 'text-2xl font-semibold mb-3 mt-6',
h4: 'text-xl font-semibold mb-2 mt-4',
h5: 'text-lg font-semibold mb-2 mt-4',
h6: 'text-base font-semibold mb-2 mt-4',
p: 'mb-4 leading-relaxed',
a: 'text-blue-600 hover:text-blue-800 underline',
img: 'max-w-full h-auto rounded-lg shadow-md',
ul: 'list-disc list-inside mb-4',
ol: 'list-decimal list-inside mb-4',
li: 'mb-1',
blockquote: 'border-l-4 border-gray-300 pl-4 italic my-4',
pre: 'bg-gray-800 p-4 rounded-lg overflow-x-auto my-4',
code: 'px-1 py-0.5 rounded text-sm font-mono text-red-500',
strong: 'font-semibold',
em: 'italic',
};
/**
* Extracts all Tailwind CSS classes from style classes configuration
* @param styleClasses - The style classes configuration
* @returns Array of unique Tailwind CSS classes
*/
function extractTailwindClasses(styleClasses = {}) {
const allClasses = { ...exports.defaultStyleClasses, ...styleClasses };
const classSet = new Set();
// Extract classes from all style definitions
Object.values(allClasses).forEach((classString) => {
if (classString) {
// Split by spaces and filter out empty strings
const classes = classString.split(/\s+/).filter(Boolean);
classes.forEach((cls) => {
classSet.add(cls);
});
}
});
return Array.from(classSet).sort();
}
/**
* Generates a Tailwind safelist configuration for the given style classes
* @param styleClasses - The style classes configuration
* @returns Tailwind safelist configuration
*/
function generateTailwindSafelist(styleClasses = {}) {
return extractTailwindClasses(styleClasses);
}
/**
* Generates a complete Tailwind config snippet that includes the safelist
* @param styleClasses - The style classes configuration
* @returns Tailwind config object with safelist
*/
function generateTailwindConfig(styleClasses = {}) {
const safelist = generateTailwindSafelist(styleClasses);
return {
safelist,
// You can extend this with other Tailwind config options as needed
};
}