UNPKG

@brutalcomponent/react

Version:
1 lines 71 kB
{"version":3,"sources":["../../../src/modules/editor/MarkdownToolbar/MarkdownToolbar.tsx","../../../src/modules/editor/MarkdownEditor/MarkdownEditor.tsx","../../../src/modules/editor/MarkdownPreview/MarkdownPreview.tsx","../../../src/modules/editor/BlogEditor/BlogEditor.tsx","../../../src/modules/editor/EditorToolbar/EditorToolbar.tsx"],"names":["React","clsx","useState","FaImage","useRef","FaBold","FaItalic","FaHeading","FaListUl","FaListOl","FaQuoteLeft","FaCode","FaLink","actions"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @file src/modules/editor/MarkdownToolbar/MarkdownToolbar.tsx\n * @author David (https://dvh.sh)\n * @license MIT\n *\n * @created Fri Sep 12 2025\n * @updated Fri Sep 12 2025\n *\n * @description\n * Toolbar for markdown editor with common formatting actions\n * @client This component requires client-side JavaScript\n */\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { IconType } from \"react-icons\";\nimport {\n FaBold,\n FaItalic,\n FaHeading,\n FaListUl,\n FaListOl,\n FaQuoteLeft,\n FaCode,\n FaLink,\n FaImage,\n FaChevronDown,\n} from \"react-icons/fa\";\nimport { Icon } from \"../../../components/core/Icon/\";\n\nexport interface ToolbarAction {\n icon: IconType;\n label: string;\n markdown: string;\n group?: string;\n}\n\n/**\n * @interface MarkdownToolbarProps\n * @description Props for markdown toolbar\n */\nexport interface MarkdownToolbarProps {\n onAction: (markdown: string) => void;\n brutal?: boolean;\n showMobile?: boolean;\n className?: string;\n}\n\n/**\n * @component MarkdownToolbar\n * @description Toolbar with markdown formatting actions\n * @client Uses useState for mobile menu\n */\nexport const MarkdownToolbar: React.FC<MarkdownToolbarProps> = ({\n onAction,\n brutal = true,\n showMobile = true,\n className,\n}) => {\n const [showMore, setShowMore] = useState(false);\n\n const primaryActions: ToolbarAction[] = [\n { icon: FaBold, label: \"Bold\", markdown: \"**text**\" },\n { icon: FaItalic, label: \"Italic\", markdown: \"*text*\" },\n { icon: FaHeading, label: \"Heading\", markdown: \"## \" },\n { icon: FaListUl, label: \"List\", markdown: \"- \" },\n { icon: FaLink, label: \"Link\", markdown: \"[text](url)\" },\n ];\n\n const secondaryActions: ToolbarAction[] = [\n { icon: FaListOl, label: \"Numbered\", markdown: \"1. \" },\n { icon: FaQuoteLeft, label: \"Quote\", markdown: \"> \" },\n { icon: FaCode, label: \"Code\", markdown: \"`code`\" },\n { icon: FaImage, label: \"Image\", markdown: \"![alt](url)\" },\n ];\n\n return (\n <div\n className={clsx(\n \"border-b-2 border-brutal-black bg-brutal-gray-50\",\n className,\n )}\n >\n <div className=\"flex items-center\">\n {/* Primary actions */}\n <div className=\"flex items-center\">\n {primaryActions.map((action, index) => (\n <button\n key={index}\n type=\"button\"\n onClick={() => onAction(action.markdown)}\n className={clsx(\n \"p-3 hover:bg-brutal-gray-200 transition-colors\",\n \"border-r border-brutal-gray-300\",\n )}\n title={action.label}\n >\n <Icon icon={action.icon} size=\"sm\" />\n </button>\n ))}\n </div>\n\n {/* Mobile more button */}\n {showMobile && (\n <button\n type=\"button\"\n onClick={() => setShowMore(!showMore)}\n className={clsx(\n \"p-3 hover:bg-brutal-gray-200 transition-colors\",\n \"flex items-center gap-1 lg:hidden\",\n )}\n >\n <span className=\"text-xs font-bold uppercase\">More</span>\n <Icon\n icon={FaChevronDown}\n size=\"xs\"\n className={clsx(\"transition-transform\", showMore && \"rotate-180\")}\n />\n </button>\n )}\n\n {/* Secondary actions - desktop */}\n <div className=\"hidden lg:flex items-center border-l-2 border-brutal-black\">\n {secondaryActions.map((action, index) => (\n <button\n key={index}\n type=\"button\"\n onClick={() => onAction(action.markdown)}\n className={clsx(\n \"p-3 hover:bg-brutal-gray-200 transition-colors\",\n \"border-r border-brutal-gray-300\",\n )}\n title={action.label}\n >\n <Icon icon={action.icon} size=\"sm\" />\n </button>\n ))}\n </div>\n </div>\n\n {/* Mobile dropdown */}\n {showMore && showMobile && (\n <div className=\"flex items-center border-t border-brutal-gray-300 lg:hidden\">\n {secondaryActions.map((action, index) => (\n <button\n key={index}\n type=\"button\"\n onClick={() => onAction(action.markdown)}\n className={clsx(\n \"p-3 hover:bg-brutal-gray-200 transition-colors\",\n \"border-r border-brutal-gray-300\",\n )}\n title={action.label}\n >\n <Icon icon={action.icon} size=\"sm\" />\n </button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","/**\n * @file src/modules/editor/MarkdownEditor/MarkdownEditor.tsx\n * @author David (https://dvh.sh)\n * @license MIT\n *\n * @created Fri Sep 12 2025\n * @updated Fri Sep 12 2025\n *\n * @description\n * Lightweight markdown editor component without preview\n * @client This component requires client-side JavaScript\n */\n\"use client\";\n\nimport React, { useRef, useCallback } from \"react\";\nimport { clsx } from \"clsx\";\nimport { MarkdownToolbar } from \"../MarkdownToolbar/MarkdownToolbar\";\n\nexport interface MarkdownEditorProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n minHeight?: string;\n showToolbar?: boolean;\n brutal?: boolean;\n className?: string;\n textareaClassName?: string;\n}\n\n/**\n * @component MarkdownEditor\n * @description Simple markdown editor with optional toolbar\n * @client Uses useRef and callbacks\n */\nexport const MarkdownEditor: React.FC<MarkdownEditorProps> = ({\n value,\n onChange,\n placeholder = \"Write your content in Markdown...\",\n minHeight = \"400px\",\n showToolbar = true,\n brutal = true,\n className,\n textareaClassName,\n}) => {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n /**\n * @function insertMarkdown\n * @description Insert markdown at cursor position\n */\n const insertMarkdown = useCallback(\n (markdown: string) => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n\n const start = textarea.selectionStart;\n const end = textarea.selectionEnd;\n const newContent =\n value.substring(0, start) + markdown + value.substring(end);\n\n onChange(newContent);\n\n // Reset cursor position\n setTimeout(() => {\n textarea.focus();\n textarea.setSelectionRange(\n start + markdown.length,\n start + markdown.length,\n );\n }, 0);\n },\n [value, onChange],\n );\n\n return (\n <div\n className={clsx(\n brutal && \"border-4 border-brutal-black\",\n !brutal && \"border-2 border-brutal-gray-300\",\n \"bg-brutal-white\",\n className,\n )}\n >\n {showToolbar && (\n <MarkdownToolbar onAction={insertMarkdown} brutal={brutal} />\n )}\n\n <div className=\"relative\" style={{ minHeight }}>\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n className={clsx(\n \"w-full h-full p-4 resize-none\",\n \"font-mono text-sm bg-transparent\",\n \"focus:outline-none\",\n textareaClassName,\n )}\n style={{ minHeight }}\n />\n\n {/* Character count */}\n <div className=\"absolute bottom-2 right-2 text-xs text-brutal-gray-500\">\n {value.length} characters\n </div>\n </div>\n </div>\n );\n};\n","/**\n * @file src/modules/editor/MarkdownPreview/MarkdownPreview.tsx\n * @author David (https://dvh.sh)\n * @license MIT\n *\n * @created Fri Sep 12 2025\n * @updated Fri Sep 12 2025\n *\n * @description\n * Markdown preview component (requires marked or similar parser)\n * @client This component requires client-side JavaScript\n */\n\"use client\";\n\nimport React, { useState, useEffect } from \"react\";\nimport { clsx } from \"clsx\";\n\nexport interface MarkdownPreviewProps {\n content: string;\n className?: string;\n parser?: (content: string) => string | Promise<string>;\n}\n\n/**\n * @component MarkdownPreview\n * @description Preview rendered markdown content\n * @client Uses useEffect for parsing\n *\n * Note: This component requires a markdown parser like 'marked' to be installed\n * Example: npm install marked @types/marked\n */\nexport const MarkdownPreview: React.FC<MarkdownPreviewProps> = ({\n content,\n className,\n parser,\n}) => {\n const [html, setHtml] = useState<string>(\"\");\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n const parseContent = async () => {\n if (!content) {\n setHtml(\"\");\n return;\n }\n\n try {\n if (parser) {\n const parsed = await parser(content);\n setHtml(parsed);\n } else {\n // Default: just show the raw markdown\n // In real usage, you'd use a parser like marked\n setHtml(`<pre>${content}</pre>`);\n console.warn(\n \"No markdown parser provided. Install marked: npm install marked\",\n );\n }\n setError(null);\n } catch (err) {\n console.error(\"Error parsing markdown:\", err);\n setError(\"Error rendering markdown\");\n }\n };\n\n parseContent();\n }, [content, parser]);\n\n if (!content) {\n return (\n <div className=\"text-brutal-gray-400 text-sm italic p-4\">\n Preview will appear here...\n </div>\n );\n }\n\n if (error) {\n return <div className=\"text-brutal-coral text-sm p-4\">{error}</div>;\n }\n\n return (\n <div\n className={clsx(\n \"prose prose-brutal max-w-none\",\n // Brutal prose styles\n \"prose-headings:font-black prose-headings:uppercase prose-headings:tracking-wider\",\n \"prose-h1:text-4xl prose-h1:text-brutal-black prose-h1:transform prose-h1:-skew-x-2\",\n \"prose-h2:text-3xl prose-h2:text-brutal-black\",\n \"prose-h3:text-2xl prose-h3:text-brutal-black\",\n // Paragraphs\n \"prose-p:text-brutal-gray-700 prose-p:font-mono prose-p:leading-relaxed\",\n // Links\n \"prose-a:text-brutal-pink prose-a:no-underline prose-a:font-bold\",\n \"prose-a:border-b-2 prose-a:border-brutal-pink\",\n \"prose-a:hover:text-brutal-peach prose-a:hover:border-brutal-peach\",\n // Lists\n \"prose-ul:list-none prose-ul:space-y-2\",\n 'prose-li:before:content-[\"→\"] prose-li:before:text-brutal-pink',\n \"prose-li:before:font-black prose-li:before:mr-2\",\n // Code\n \"prose-code:bg-brutal-gray-200 prose-code:text-brutal-black\",\n \"prose-code:px-2 prose-code:py-1\",\n \"prose-pre:bg-brutal-black prose-pre:text-brutal-white\",\n \"prose-pre:border-4 prose-pre:border-brutal-black\",\n className,\n )}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n};\n","/**\n * @file src/modules/editor/BlogEditor/BlogEditor.tsx\n * @author David (https://dvh.sh)\n * @license MIT\n *\n * @created Fri Sep 12 2025\n * @updated Fri Sep 12 2025\n *\n * @description\n * Complete blog editor with tabs for write/preview/settings\n * @client This component requires client-side JavaScript\n */\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n} from \"../../../components/core/Tabs\";\nimport { Card } from \"../../../components/core/Card/Card\";\nimport { Button } from \"../../../components/core/Button/Button\";\nimport { Input } from \"../../../components/core/Input\";\nimport { Textarea } from \"../../../components/core/Input\";\nimport { Select } from \"../../../components/core/Input\";\nimport { Toggle } from \"../../../components/core/Toggle\";\nimport { MarkdownEditor } from \"../MarkdownEditor/MarkdownEditor\";\nimport { MarkdownPreview } from \"../MarkdownPreview/MarkdownPreview\";\nimport { FaPen, FaEye, FaCog, FaSave, FaImage, FaClock } from \"react-icons/fa\";\n\nexport interface BlogEditorData {\n title: string;\n slug: string;\n content: string;\n excerpt: string;\n status: \"draft\" | \"published\";\n tags: string;\n category: string;\n featuredImage?: string;\n publishedAt?: string;\n isFeatured: boolean;\n author?: string;\n}\n\n/**\n * @interface BlogEditorProps\n * @description Props for blog editor component\n */\nexport interface BlogEditorProps {\n initialData?: Partial<BlogEditorData>;\n onSave?: (data: BlogEditorData) => void | Promise<void>;\n onCancel?: () => void;\n categories?: Array<{ value: string; label: string }>;\n authors?: Array<{ value: string; label: string }>;\n loading?: boolean;\n brutal?: boolean;\n className?: string;\n markdownParser?: (content: string) => string | Promise<string>;\n}\n\n/**\n * @component BlogEditor\n * @description Full-featured blog editor with tabs\n * @client Uses useState and various form inputs\n */\nexport const BlogEditor: React.FC<BlogEditorProps> = ({\n initialData = {},\n onSave,\n onCancel,\n categories = [],\n authors = [],\n loading = false,\n brutal = true,\n className,\n markdownParser,\n}) => {\n const [formData, setFormData] = useState<BlogEditorData>({\n title: initialData.title || \"\",\n slug: initialData.slug || \"\",\n content: initialData.content || \"\",\n excerpt: initialData.excerpt || \"\",\n status: initialData.status || \"draft\",\n tags: initialData.tags || \"\",\n category: initialData.category || \"\",\n featuredImage: initialData.featuredImage || \"\",\n publishedAt: initialData.publishedAt || \"\",\n isFeatured: initialData.isFeatured || false,\n author: initialData.author || \"\",\n });\n\n const [autoSave, setAutoSave] = useState(true);\n const [lastSaved, setLastSaved] = useState<Date | null>(null);\n\n /**\n * @function generateSlug\n * @description Generate URL-friendly slug from title\n */\n const generateSlug = (title: string): string => {\n return title\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .trim();\n };\n\n /**\n * @function handleTitleChange\n * @description Update title and auto-generate slug\n */\n const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const title = e.target.value;\n setFormData((prev) => ({\n ...prev,\n title,\n slug: initialData.slug ? prev.slug : generateSlug(title),\n }));\n };\n\n /**\n * @function handleSave\n * @description Save the blog post\n */\n const handleSave = async () => {\n if (onSave) {\n await onSave(formData);\n setLastSaved(new Date());\n }\n };\n\n /**\n * @function getWordCount\n * @description Calculate word count for content\n */\n const getWordCount = (): number => {\n return formData.content.split(/\\s+/).filter(Boolean).length;\n };\n\n return (\n <div className={clsx(\"min-h-screen bg-brutal-white\", className)}>\n <Tabs defaultValue=\"editor\" brutal={brutal}>\n {/* Header */}\n <div\n className={clsx(\n \"sticky top-0 z-40\",\n \"border-b-4 border-brutal-black bg-brutal-white\",\n \"px-4 py-3\",\n )}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex-1 min-w-0 mr-4\">\n <h1 className=\"text-sm lg:text-base font-bold uppercase truncate\">\n {initialData.title ? \"Edit Post\" : \"New Post\"}\n {formData.title && (\n <span className=\"hidden sm:inline text-brutal-gray-600\">\n {\" \"}\n — {formData.title}\n </span>\n )}\n </h1>\n <div className=\"flex items-center gap-2 mt-1 text-xs\">\n <span\n className={clsx(\n \"flex items-center gap-1\",\n formData.status === \"published\"\n ? \"text-brutal-mint\"\n : \"text-brutal-yellow\",\n )}\n >\n <span className=\"w-2 h-2 rounded-full bg-current\" />\n {formData.status}\n </span>\n {lastSaved && (\n <span className=\"text-brutal-gray-500\">\n Saved {lastSaved.toLocaleTimeString()}\n </span>\n )}\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center gap-2\">\n {onCancel && (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={onCancel}\n disabled={loading}\n brutal={brutal}\n className=\"hidden sm:flex\"\n >\n Cancel\n </Button>\n )}\n\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={handleSave}\n disabled={loading}\n loading={loading}\n brutal={brutal}\n leftIcon={() => <FaSave />}\n >\n <span className=\"hidden sm:inline\">Save</span>\n </Button>\n </div>\n </div>\n </div>\n\n {/* Tab Navigation */}\n <TabsList brutal={brutal} stretch>\n <TabsTrigger value=\"editor\" icon={FaPen} stretch>\n Write\n </TabsTrigger>\n <TabsTrigger value=\"preview\" icon={FaEye} stretch>\n Preview\n </TabsTrigger>\n <TabsTrigger value=\"settings\" icon={FaCog} stretch>\n Settings\n </TabsTrigger>\n </TabsList>\n\n {/* Editor Tab */}\n <TabsContent value=\"editor\" className=\"p-4 lg:p-6\">\n <div className=\"max-w-4xl mx-auto space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Input\n label=\"Title\"\n value={formData.title}\n onChange={handleTitleChange}\n placeholder=\"Post title...\"\n brutal={brutal}\n required\n />\n\n <Input\n label=\"Slug\"\n value={formData.slug}\n onChange={(e: { target: { value: any } }) =>\n setFormData((prev) => ({\n ...prev,\n slug: e.target.value,\n }))\n }\n placeholder=\"post-slug\"\n brutal={brutal}\n required\n />\n </div>\n\n <Textarea\n label=\"Excerpt\"\n value={formData.excerpt}\n onChange={(e: { target: { value: any } }) =>\n setFormData((prev) => ({\n ...prev,\n excerpt: e.target.value,\n }))\n }\n placeholder=\"Brief description of your post...\"\n rows={3}\n brutal={brutal}\n hint={`${formData.excerpt.length}/300 characters`}\n />\n\n <div>\n <label className=\"block text-xs font-bold uppercase mb-2\">\n Content\n </label>\n <MarkdownEditor\n value={formData.content}\n onChange={(content) =>\n setFormData((prev) => ({\n ...prev,\n content,\n }))\n }\n brutal={brutal}\n minHeight=\"500px\"\n />\n </div>\n </div>\n </TabsContent>\n\n {/* Preview Tab */}\n <TabsContent value=\"preview\" className=\"p-4 lg:p-6\">\n <div className=\"max-w-4xl mx-auto\">\n <Card brutal={brutal} variant=\"raised\">\n <article>\n <header className=\"mb-8\">\n <h1 className=\"text-4xl font-black uppercase tracking-wider mb-4\">\n {formData.title || \"Untitled Post\"}\n </h1>\n <p className=\"text-lg text-brutal-gray-600 font-mono\">\n {formData.excerpt || \"No excerpt provided\"}\n </p>\n <div className=\"flex items-center gap-4 mt-4 text-xs text-brutal-gray-500\">\n {formData.author && (\n <span>\n By{\" \"}\n {\n authors.find((a) => a.value === formData.author)\n ?.label\n }\n </span>\n )}\n {formData.category && (\n <span>\n {\n categories.find((c) => c.value === formData.category)\n ?.label\n }\n </span>\n )}\n <span>{getWordCount()} words</span>\n </div>\n </header>\n\n <MarkdownPreview\n content={formData.content}\n parser={markdownParser}\n />\n </article>\n </Card>\n </div>\n </TabsContent>\n\n {/* Settings Tab */}\n <TabsContent value=\"settings\" className=\"p-4 lg:p-6\">\n <div className=\"max-w-4xl mx-auto grid grid-cols-1 md:grid-cols-2 gap-6\">\n {/* Post Settings */}\n <Card brutal={brutal}>\n <h3 className=\"text-sm font-bold uppercase mb-4\">\n Post Settings\n </h3>\n\n <div className=\"space-y-4\">\n <Select\n label=\"Category\"\n options={[\n { value: \"\", label: \"Select Category\" },\n ...categories,\n ]}\n value={formData.category}\n onChange={(e: { target: { value: any } }) =>\n setFormData((prev) => ({\n ...prev,\n category: e.target.value,\n }))\n }\n brutal={brutal}\n />\n\n <Select\n label=\"Author\"\n options={[{ value: \"\", label: \"Select Author\" }, ...authors]}\n value={formData.author}\n onChange={(e: { target: { value: any } }) =>\n setFormData((prev) => ({\n ...prev,\n