'use client'; import { HTMLAttributes } from 'react'; import styles from './brutal-manifest.module.css'; export interface PhraseSegment { text: string; color?: string; borderColor?: string; } export interface BrutalManifestProps extends HTMLAttributes { phrases: PhraseSegment[][]; colors?: string[]; borderWidth?: number; padding?: string; fontSize?: 'small' | 'medium' | 'large' | 'massive'; chaosLevel?: number; textShadow?: boolean; uppercase?: boolean; italic?: boolean; } export const BrutalManifest = ({ phrases, colors = ['#ff0000', '#ffff00', '#000000', '#ffffff'], borderWidth = 6, fontSize = 'large', chaosLevel = 0.5, textShadow = true, uppercase = true, italic = true, className = '', ...props }: BrutalManifestProps) => { const sizes = { small: '1.5rem', medium: '2.5rem', large: '4rem', massive: '6rem' }; return (
{phrases.map((phrase, pi) => (
{phrase.map((segment, si) => { const colorIdx = (pi + si) % colors.length; const rotation = (Math.random() - 0.5) * chaosLevel * 10; return ( {segment.text} ); })}
))}
); }; export default BrutalManifest;