import capsize from '.'; export default ( capsizeStyles: ReturnType, ruleName: string, ) => { const { '::before': beforePseudo, '::after': afterPseudo, ...rootStyles } = capsizeStyles; const objToCSSRules = ( stylesObj: Record, psuedoName?: string, ) => ` .${ruleName}${psuedoName ? `::${psuedoName}` : ''} { ${Object.keys(stylesObj) .map( (property) => ` ${property.replace(/[A-Z]/g, '-$&').toLowerCase()}: ${stylesObj[ property as keyof typeof stylesObj ].replace(/'/g, '"')}`, ) .join(';\n')}; }`; return [ objToCSSRules(rootStyles), objToCSSRules(beforePseudo, 'before'), objToCSSRules(afterPseudo, 'after'), ].join('\n'); };