@lindle/linoardo 1.0.49 → 1.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/button.cjs +2 -4
  2. package/dist/button.cjs.map +1 -1
  3. package/dist/button.js +1 -1
  4. package/dist/chunk-3J6Y3EQW.js +538 -0
  5. package/dist/chunk-3J6Y3EQW.js.map +1 -0
  6. package/dist/{chunk-TRR7TDVA.js → chunk-4C6XQI62.js} +72 -40
  7. package/dist/chunk-4C6XQI62.js.map +1 -0
  8. package/dist/{chunk-HVGCLUW2.js → chunk-NJN7T34X.js} +4 -6
  9. package/dist/chunk-NJN7T34X.js.map +1 -0
  10. package/dist/{chunk-LRWM4ZWZ.js → chunk-QCRQUSET.js} +4 -4
  11. package/dist/chunk-QCRQUSET.js.map +1 -0
  12. package/dist/{chunk-Z5A2OIDI.js → chunk-SM2VNSPP.js} +4 -7
  13. package/dist/chunk-SM2VNSPP.js.map +1 -0
  14. package/dist/{chunk-LSIAP7ZZ.js → chunk-XLA2NCDF.js} +3 -9
  15. package/dist/chunk-XLA2NCDF.js.map +1 -0
  16. package/dist/expansion-panel.cjs +1 -7
  17. package/dist/expansion-panel.cjs.map +1 -1
  18. package/dist/expansion-panel.js +1 -1
  19. package/dist/index.cjs +643 -561
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +6 -7
  24. package/dist/index.js.map +1 -1
  25. package/dist/profileCard.cjs +3 -5
  26. package/dist/profileCard.cjs.map +1 -1
  27. package/dist/profileCard.js +2 -2
  28. package/dist/progress.cjs +2 -5
  29. package/dist/progress.cjs.map +1 -1
  30. package/dist/progress.js +1 -1
  31. package/dist/select.cjs +60 -37
  32. package/dist/select.cjs.map +1 -1
  33. package/dist/select.d.cts +4 -0
  34. package/dist/select.d.ts +4 -0
  35. package/dist/select.js +1 -2
  36. package/dist/styles.css +254 -187
  37. package/dist/textarea.cjs +484 -423
  38. package/dist/textarea.cjs.map +1 -1
  39. package/dist/textarea.d.cts +27 -23
  40. package/dist/textarea.d.ts +27 -23
  41. package/dist/textarea.js +1 -2
  42. package/dist/timeline.d.cts +1 -1
  43. package/dist/timeline.d.ts +1 -1
  44. package/package.json +7 -1
  45. package/dist/chunk-67TAA2MA.js +0 -470
  46. package/dist/chunk-67TAA2MA.js.map +0 -1
  47. package/dist/chunk-6SKW43XI.js +0 -14
  48. package/dist/chunk-6SKW43XI.js.map +0 -1
  49. package/dist/chunk-HVGCLUW2.js.map +0 -1
  50. package/dist/chunk-LRWM4ZWZ.js.map +0 -1
  51. package/dist/chunk-LSIAP7ZZ.js.map +0 -1
  52. package/dist/chunk-TRR7TDVA.js.map +0 -1
  53. package/dist/chunk-Z5A2OIDI.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/helpers/randomStr.ts","../src/Form/TextArea/index.tsx"],"names":["marked","React","TurndownService","twMerge","useEditor","StarterKit","jsxs","Fragment","jsx","EditorContent"],"mappings":"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","file":"textarea.cjs","sourcesContent":["const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\nexport function generateString(length = 5) {\n let result: string = '';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n}\n","'use client';\n\nimport React from 'react';\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { marked } from 'marked';\nimport TurndownService from 'turndown';\nimport { twMerge } from 'tailwind-merge';\nimport { generateString } from '../../utils/helpers/randomStr';\nimport type { TextAreaMode, TextAreaProps, TextAreaVariant, TextAreaView } from './types.textarea';\n\nconst baseClass =\n 'textarea-base px-3 py-2 focus-visible:outline-none transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400';\n\nconst variantClasses: Record<TextAreaVariant, string> = {\n outlined:\n 'rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-slate-900 dark:focus-visible:border-black dark:focus-visible:ring-black/40',\n filled:\n 'rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30',\n standard:\n 'rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 dark:border-b-gray-700 dark:focus-visible:border-primary/70'\n};\n\nconst labelBackground: Record<TextAreaVariant, string> = {\n outlined: 'bg-white/90 dark:bg-slate-900',\n filled: 'bg-gray-100 dark:bg-slate-800',\n standard: 'bg-transparent'\n};\n\nconst advancedContainerVariant: Record<TextAreaVariant, string> = {\n outlined: 'rounded border-2 border-black bg-white dark:border-black dark:bg-slate-900',\n filled: 'rounded border border-gray-200 bg-gray-100 dark:border-gray-700 dark:bg-slate-800',\n standard: 'border-b border-gray-300 bg-transparent dark:border-gray-700'\n};\n\nconst renderMarkdown = (value: string) => marked.parse(value || '', { async: false }) as string;\n\nconst dispatchInputEvent = (element: HTMLTextAreaElement) => {\n const event = new Event('input', { bubbles: true });\n element.dispatchEvent(event);\n};\n\nconst toolbarButtonBase =\n 'px-3 py-1 text-gray-700 transition-colors hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-slate-700 disabled:cursor-not-allowed disabled:opacity-50';\nconst toolbarButtonActive = 'bg-white text-gray-900 dark:bg-slate-900 dark:text-gray-100';\n\nconst handleModeToggle = (\n wrapperId: string,\n mode: TextAreaMode,\n textareaName: string,\n simpleId: string,\n advancedInputId: string\n) => {\n if (typeof document === 'undefined') return;\n const wrapper = document.getElementById(wrapperId);\n const simple = document.getElementById(simpleId) as HTMLTextAreaElement | null;\n const advancedInput = document.getElementById(advancedInputId) as HTMLTextAreaElement | null;\n\n if (wrapper) {\n wrapper.dataset.mode = mode;\n }\n\n if (simple) {\n simple.classList.toggle('hidden', mode !== 'simple');\n simple.name = mode === 'simple' ? textareaName : '';\n }\n\n if (advancedInput) {\n advancedInput.classList.toggle('hidden', mode !== 'advanced');\n advancedInput.name = mode === 'advanced' ? textareaName : '';\n }\n};\n\nconst TextArea: React.FC<TextAreaProps> = ({\n variant = 'outlined',\n label,\n className,\n wrapperClassName,\n id,\n name,\n placeholder,\n rows = 4,\n allowModeSwitch = true,\n mode,\n view = 'editor',\n value,\n defaultValue,\n disabled,\n readOnly,\n onChange,\n onInput,\n ...props\n}) => {\n const textareaId = id || name || generateString();\n const textareaName = name || textareaId;\n const wrapperId = `${textareaId}-wrapper`;\n const simpleTextareaId = `${textareaId}-simple`;\n const advancedInputId = `${textareaId}-advanced-input`;\n const advancedEditorId = `${textareaId}-advanced-editor`;\n const advancedLabelId = `${textareaId}-advanced-label`;\n const previewId = `${textareaId}-preview`;\n const variantClass = variantClasses[variant] ?? variantClasses.outlined;\n const labelPadding = label ? 'pt-6' : undefined;\n const placeholderValue = placeholder ?? (label ? ' ' : undefined);\n const placeholderClass = label ? 'placeholder-transparent' : undefined;\n const labelBg = labelBackground[variant] ?? labelBackground.outlined;\n const focusLabelBg =\n variant === 'filled'\n ? 'peer-focus:bg-gray-100 dark:peer-focus:bg-slate-800'\n : variant === 'standard'\n ? 'peer-focus:bg-transparent'\n : 'peer-focus:bg-white/90 dark:peer-focus:bg-slate-900';\n\n const resolvedMode: TextAreaMode = allowModeSwitch ? mode ?? 'simple' : 'simple';\n const resolvedView: TextAreaView = view ?? 'editor';\n const showEditor = resolvedView === 'editor';\n const showPreview = resolvedView === 'view';\n const contentValue =\n typeof value === 'string' ? value : typeof defaultValue === 'string' ? defaultValue : '';\n const isControlled = typeof value === 'string';\n const editorEditable = !(disabled || readOnly);\n const modeToggleName = `${textareaId}-mode-toggle`;\n const simpleToggleId = `${modeToggleName}-simple`;\n const advancedToggleId = `${modeToggleName}-advanced`;\n\n const turndownService = React.useMemo(() => {\n const service = new TurndownService({\n codeBlockStyle: 'fenced',\n emDelimiter: '*',\n strongDelimiter: '**',\n bulletListMarker: '-'\n });\n service.addRule('strikethrough', {\n filter: node => ['DEL', 'S', 'STRIKE'].includes(node.nodeName),\n replacement: content => `~~${content}~~`\n });\n return service;\n }, []);\n\n const hiddenTextareaRef = React.useRef<HTMLTextAreaElement | null>(null);\n const lastMarkdownRef = React.useRef<string>(contentValue);\n const editorContentClass = twMerge(\n baseClass,\n 'min-h-45 rounded border-0 bg-transparent outline-none whitespace-pre-wrap wrap-break-words',\n '[&_p]:m-0 [&_p]:leading-6',\n '[&_ul]:my-0 [&_ul]:list-disc [&_ul]:pl-5',\n '[&_ol]:my-0 [&_ol]:list-decimal [&_ol]:pl-5',\n '[&_li]:my-0',\n '[&_blockquote]:border-l-2 [&_blockquote]:border-gray-300 [&_blockquote]:pl-3 [&_blockquote]:text-gray-600',\n 'dark:[&_blockquote]:border-gray-600 dark:[&_blockquote]:text-gray-300',\n '[&_pre]:bg-gray-100 [&_pre]:rounded [&_pre]:p-3 [&_pre]:text-sm [&_pre]:overflow-x-auto',\n 'dark:[&_pre]:bg-slate-800',\n '[&_code]:font-mono',\n className,\n !editorEditable ? 'cursor-not-allowed opacity-50' : undefined\n );\n\n const editor = useEditor({\n extensions: [StarterKit],\n content: renderMarkdown(contentValue),\n immediatelyRender: false,\n editable: editorEditable,\n editorProps: {\n attributes: {\n class: editorContentClass,\n role: 'textbox',\n 'aria-multiline': 'true',\n ...(label ? { 'aria-labelledby': advancedLabelId } : {})\n }\n },\n onUpdate: ({ editor: currentEditor }) => {\n const markdown = turndownService.turndown(currentEditor.getHTML());\n if (markdown === lastMarkdownRef.current) return;\n lastMarkdownRef.current = markdown;\n if (!hiddenTextareaRef.current) return;\n hiddenTextareaRef.current.value = markdown;\n dispatchInputEvent(hiddenTextareaRef.current);\n }\n });\n\n React.useEffect(() => {\n if (!editor) return;\n editor.setEditable(editorEditable);\n }, [editor, editorEditable]);\n\n React.useEffect(() => {\n if (!editor) return;\n editor.setOptions({\n editorProps: {\n ...editor.options.editorProps,\n attributes: {\n ...editor.options.editorProps?.attributes,\n class: editorContentClass,\n role: 'textbox',\n 'aria-multiline': 'true',\n ...(label ? { 'aria-labelledby': advancedLabelId } : {})\n }\n }\n });\n }, [editor, editorContentClass, label, advancedLabelId]);\n\n React.useEffect(() => {\n if (!editor || typeof value !== 'string') return;\n if (value === lastMarkdownRef.current) return;\n editor.commands.setContent(renderMarkdown(value), { emitUpdate: false });\n lastMarkdownRef.current = value;\n if (hiddenTextareaRef.current) {\n hiddenTextareaRef.current.value = value;\n }\n }, [editor, value]);\n\n React.useEffect(() => {\n if (!hiddenTextareaRef.current) return;\n if (hiddenTextareaRef.current.value === contentValue) return;\n hiddenTextareaRef.current.value = contentValue;\n }, [contentValue]);\n\n const textareaProps = {\n ...props,\n onChange,\n onInput,\n disabled,\n readOnly\n };\n\n const minHeightStyle = rows ? { minHeight: `${rows * 20}px` } : undefined;\n\n return (\n <div\n id={wrapperId}\n data-mode={resolvedMode}\n className={twMerge('flex flex-col gap-1', wrapperClassName)}\n >\n {allowModeSwitch && (\n <>\n <input\n type='radio'\n name={modeToggleName}\n id={simpleToggleId}\n value='simple'\n defaultChecked={resolvedMode === 'simple'}\n className='peer/simple sr-only'\n onChange={() =>\n handleModeToggle(wrapperId, 'simple', textareaName, simpleTextareaId, advancedInputId)\n }\n />\n <input\n type='radio'\n name={modeToggleName}\n id={advancedToggleId}\n value='advanced'\n defaultChecked={resolvedMode === 'advanced'}\n className='peer/advanced sr-only'\n onChange={() =>\n handleModeToggle(\n wrapperId,\n 'advanced',\n textareaName,\n simpleTextareaId,\n advancedInputId\n )\n }\n />\n <div className='flex justify-end'>\n <div className='inline-flex overflow-hidden rounded-md border border-gray-200 bg-gray-50 text-xs font-medium dark:border-gray-700 dark:bg-slate-800'>\n <label\n htmlFor={simpleToggleId}\n className={twMerge(\n 'cursor-pointer px-3 py-1 transition-colors',\n 'text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-slate-700',\n 'peer-checked/simple:bg-white peer-checked/simple:text-gray-900 peer-checked/simple:dark:bg-slate-900 peer-checked/simple:dark:text-gray-100'\n )}\n >\n Jednoduchý\n </label>\n <label\n htmlFor={advancedToggleId}\n className={twMerge(\n 'cursor-pointer px-3 py-1 transition-colors',\n 'text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-slate-700',\n 'peer-checked/advanced:bg-white peer-checked/advanced:text-gray-900 peer-checked/advanced:dark:bg-slate-900 peer-checked/advanced:dark:text-gray-100'\n )}\n >\n Pokročilý\n </label>\n </div>\n </div>\n </>\n )}\n\n {(resolvedMode === 'simple' || allowModeSwitch) && (\n <div\n className={twMerge(\n 'relative flex items-start',\n allowModeSwitch\n ? 'hidden peer-checked/simple:flex peer-checked/advanced:hidden'\n : undefined\n )}\n >\n <textarea\n {...textareaProps}\n id={simpleTextareaId}\n name={!allowModeSwitch || resolvedMode === 'simple' ? textareaName : ''}\n rows={rows}\n placeholder={placeholderValue}\n value={value}\n defaultValue={defaultValue}\n className={twMerge(\n 'peer',\n baseClass,\n variantClass,\n labelPadding,\n placeholderClass,\n className\n )}\n />\n\n {label && (\n <label\n htmlFor={simpleTextareaId}\n className={twMerge(\n 'absolute transition-all duration-150 pointer-events-none left-3 text-gray-700 dark:text-gray-200',\n 'top-0 -translate-y-2/3 text-xs px-1',\n labelBg,\n focusLabelBg,\n 'peer-focus:top-0 peer-focus:-translate-y-1/2 peer-focus:text-xs peer-focus:px-1 peer-focus:text-gray-600 dark:peer-focus:text-gray-300',\n 'peer-placeholder-shown:top-3 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:text-sm peer-placeholder-shown:bg-transparent peer-placeholder-shown:text-gray-500 dark:peer-placeholder-shown:text-gray-400'\n )}\n >\n {label}\n </label>\n )}\n </div>\n )}\n\n {(resolvedMode === 'advanced' || allowModeSwitch) && (\n <div\n className={twMerge(\n 'flex flex-col gap-2',\n allowModeSwitch\n ? 'hidden peer-checked/advanced:flex peer-checked/simple:hidden'\n : undefined\n )}\n >\n {label && (\n <label\n id={advancedLabelId}\n className='text-sm font-medium text-gray-700 dark:text-gray-200'\n >\n {label}\n </label>\n )}\n\n {showEditor && (\n <div className='flex flex-wrap items-center justify-between gap-2'>\n <div className='inline-flex overflow-hidden rounded-md border border-gray-200 bg-gray-50 text-xs font-medium dark:border-gray-700 dark:bg-slate-800'>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('bold') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleBold().run()}\n disabled={!editor || !editorEditable}\n >\n B\n </button>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('italic') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleItalic().run()}\n disabled={!editor || !editorEditable}\n >\n I\n </button>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('strike') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleStrike().run()}\n disabled={!editor || !editorEditable}\n >\n S\n </button>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('bulletList') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleBulletList().run()}\n disabled={!editor || !editorEditable}\n >\n • List\n </button>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('orderedList') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleOrderedList().run()}\n disabled={!editor || !editorEditable}\n >\n 1. List\n </button>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('blockquote') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleBlockquote().run()}\n disabled={!editor || !editorEditable}\n >\n Quote\n </button>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('code') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleCode().run()}\n disabled={!editor || !editorEditable}\n >\n Code\n </button>\n <button\n type='button'\n className={twMerge(\n toolbarButtonBase,\n editor?.isActive('codeBlock') ? toolbarButtonActive : undefined\n )}\n onClick={() => editor?.chain().focus().toggleCodeBlock().run()}\n disabled={!editor || !editorEditable}\n >\n Code block\n </button>\n </div>\n </div>\n )}\n\n <div className={twMerge('overflow-hidden', advancedContainerVariant[variant])}>\n <div className='px-3 py-3 space-y-3'>\n {showEditor && (\n <EditorContent\n editor={editor}\n id={advancedEditorId}\n className='w-full'\n style={minHeightStyle}\n />\n )}\n\n <textarea\n {...textareaProps}\n ref={hiddenTextareaRef}\n id={advancedInputId}\n name={!allowModeSwitch || resolvedMode === 'advanced' ? textareaName : ''}\n rows={rows}\n placeholder={placeholderValue}\n className='sr-only'\n {...(isControlled ? { value } : { defaultValue: contentValue })}\n />\n\n {showPreview && (\n <div\n id={previewId}\n className={twMerge(\n baseClass,\n 'min-h-45 rounded border-0 px-0 focus:outline-none whitespace-pre-wrap wrap-break-words',\n className\n )}\n style={minHeightStyle}\n dangerouslySetInnerHTML={{\n __html: renderMarkdown(contentValue)\n }}\n />\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default TextArea;\n"]}
1
+ {"version":3,"sources":["../src/Form/TextArea/index.tsx"],"names":["createLowlight","common","TurndownService","marked","jsx","twMerge","React","useEditor","StarterKit","CodeBlockLowlight","Underline","nextValue","nextPosition","jsxs","Fragment","EditorContent"],"mappings":"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","file":"textarea.cjs","sourcesContent":["import React from 'react';\nimport CodeBlockLowlight from '@tiptap/extension-code-block-lowlight';\nimport StarterKit from '@tiptap/starter-kit';\nimport Underline from '@tiptap/extension-underline';\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport { common, createLowlight } from 'lowlight';\nimport TurndownService from 'turndown';\nimport { marked } from 'marked';\nimport { twMerge } from 'tailwind-merge';\nimport type { InputRounded, InputSize, InputVariant } from '../Input/types';\nimport type { TextAreaFormattingToolbar, TextAreaProps } from './types.textarea';\n\nconst variantClasses = {\n solid:\n 'rounded border border-gray-400 bg-white shadow-sm focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-within:border-primary/70 dark:focus-within:ring-primary/40',\n sharp:\n 'rounded-none border border-gray-400 bg-white shadow-sm focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-within:border-primary/70 dark:focus-within:ring-primary/40',\n outline:\n 'rounded border-2 border-black bg-white focus-within:border-black focus-within:ring-2 focus-within:ring-black/30 dark:border-black dark:bg-transparent dark:focus-within:border-black dark:focus-within:ring-black/40',\n text: 'rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-within:border-primary focus-within:ring-0 focus-within:ring-transparent dark:border-b-gray-600 dark:focus-within:border-primary/70',\n ghost:\n 'rounded border border-transparent bg-gray-50 text-gray-900 focus-within:bg-white focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-within:bg-slate-700 dark:focus-within:border-primary/60 dark:focus-within:ring-primary/25',\n filled:\n 'rounded border border-gray-200 bg-gray-100 focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-within:border-primary/60 dark:focus-within:ring-primary/30',\n underlined:\n 'rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-within:border-primary focus-within:ring-0 focus-within:ring-transparent dark:border-b-gray-600 dark:focus-within:border-primary/70'\n} satisfies Record<InputVariant, string>;\n\nconst roundedClasses = {\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n '3xl': 'rounded-3xl'\n} satisfies Record<InputRounded, string>;\n\nconst sizeClasses = {\n 'x-small': {\n paddingY: 'py-2',\n paddingX: 'px-2',\n text: 'text-xs'\n },\n small: {\n paddingY: 'py-2.5',\n paddingX: 'px-2.5',\n text: 'text-sm'\n },\n medium: {\n paddingY: 'py-3',\n paddingX: 'px-3',\n text: 'text-base'\n },\n large: {\n paddingY: 'py-3.5',\n paddingX: 'px-3.5',\n text: 'text-lg'\n },\n 'x-large': {\n paddingY: 'py-4',\n paddingX: 'px-4',\n text: 'text-xl'\n }\n} satisfies Record<\n InputSize,\n {\n paddingY: string;\n paddingX: string;\n text: string;\n }\n>;\n\nconst statusClasses = {\n error: 'border-red-500 focus:border-red-500 focus:ring-red-400',\n warn: 'border-amber-500 focus:border-amber-500 focus:ring-amber-400',\n success: 'border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400'\n} as const;\n\nconst statusMessageClasses = {\n error: 'text-red-600 dark:text-red-300',\n warn: 'text-amber-600 dark:text-amber-300',\n success: 'text-emerald-600 dark:text-emerald-300'\n} as const;\n\nconst DEFAULT_TOOLBAR: TextAreaFormattingToolbar[] = ['bold', 'italic', 'underline', 'strike', 'heading', 'bulletList', 'orderedList', 'blockquote', 'codeBlock'];\nconst CODE_BLOCK_LANGUAGES = ['ts', 'json', 'python', 'bash'] as const;\nconst DEFAULT_CODE_BLOCK_LANGUAGE = CODE_BLOCK_LANGUAGES[0];\nconst TEXTAREA_TAB_CHARACTER = '\\t';\nconst lowlight = createLowlight(common);\nlowlight.registerAlias({ ts: 'typescript' });\nconst turndown = new TurndownService({\n codeBlockStyle: 'fenced',\n headingStyle: 'atx',\n bulletListMarker: '-'\n});\n\nconst markdownToHtml = (markdown?: string) => {\n if (!markdown) {\n return '<p></p>';\n }\n\n return marked.parse(markdown) as string;\n};\n\nconst htmlToMarkdown = (html: string) => turndown.turndown(html).trim();\n\nconst createChangeEvent = (element: HTMLTextAreaElement): React.ChangeEvent<HTMLTextAreaElement> =>\n ({\n target: element,\n currentTarget: element\n }) as React.ChangeEvent<HTMLTextAreaElement>;\n\nconst assignRef = <T,>(ref: React.ForwardedRef<T>, value: T | null) => {\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n\n if (ref) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n};\n\nconst updateTextareaValue = (element: HTMLTextAreaElement, nextValue: string, selectionStart: number, selectionEnd: number) => {\n element.value = nextValue;\n element.setSelectionRange(selectionStart, selectionEnd);\n};\n\nconst indentSelectedLines = (value: string, selectionStart: number, selectionEnd: number) => {\n const lineStart = value.lastIndexOf('\\n', Math.max(0, selectionStart - 1)) + 1;\n const lineEndIndex = value.indexOf('\\n', selectionEnd);\n const lineEnd = lineEndIndex === -1 ? value.length : lineEndIndex;\n const selectedBlock = value.slice(lineStart, lineEnd);\n const lines = selectedBlock.split('\\n');\n const indentedBlock = lines.map(line => `${TEXTAREA_TAB_CHARACTER}${line}`).join('\\n');\n\n return {\n nextValue: `${value.slice(0, lineStart)}${indentedBlock}${value.slice(lineEnd)}`,\n selectionStart: selectionStart + TEXTAREA_TAB_CHARACTER.length,\n selectionEnd: selectionEnd + lines.length * TEXTAREA_TAB_CHARACTER.length\n };\n};\n\nconst outdentSelectedLines = (value: string, selectionStart: number, selectionEnd: number) => {\n const lineStart = value.lastIndexOf('\\n', Math.max(0, selectionStart - 1)) + 1;\n const lineEndIndex = value.indexOf('\\n', selectionEnd);\n const lineEnd = lineEndIndex === -1 ? value.length : lineEndIndex;\n const selectedBlock = value.slice(lineStart, lineEnd);\n const lines = selectedBlock.split('\\n');\n const updatedLines = lines.map(line => (line.startsWith(TEXTAREA_TAB_CHARACTER) ? line.slice(TEXTAREA_TAB_CHARACTER.length) : line));\n const removedBeforeSelectionStart = selectionStart === lineStart && !lines[0].startsWith(TEXTAREA_TAB_CHARACTER) ? 0 : lines[0].startsWith(TEXTAREA_TAB_CHARACTER) ? TEXTAREA_TAB_CHARACTER.length : 0;\n const removedTotal = lines.reduce((count, line) => count + (line.startsWith(TEXTAREA_TAB_CHARACTER) ? TEXTAREA_TAB_CHARACTER.length : 0), 0);\n\n return {\n nextValue: `${value.slice(0, lineStart)}${updatedLines.join('\\n')}${value.slice(lineEnd)}`,\n selectionStart: Math.max(lineStart, selectionStart - removedBeforeSelectionStart),\n selectionEnd: Math.max(lineStart, selectionEnd - removedTotal)\n };\n};\n\ntype ToolbarButtonProps = {\n label: string;\n active?: boolean;\n disabled?: boolean;\n onMouseDown: React.MouseEventHandler<HTMLButtonElement>;\n};\n\ntype CodeBlockLanguage = (typeof CODE_BLOCK_LANGUAGES)[number];\n\nconst isCodeBlockLanguage = (value: string): value is CodeBlockLanguage => CODE_BLOCK_LANGUAGES.includes(value as CodeBlockLanguage);\n\nconst ToolbarButton = ({ label, active, disabled, onMouseDown }: ToolbarButtonProps) => (\n <button\n type='button'\n disabled={disabled}\n onMouseDown={onMouseDown}\n className={twMerge(\n 'inline-flex min-w-8 items-center justify-center rounded border px-2 py-1 text-xs font-medium transition-colors',\n active\n ? 'border-primary bg-primary text-white'\n : 'border-gray-300 bg-white text-gray-700 hover:border-gray-400 hover:bg-gray-50 dark:border-slate-600 dark:bg-slate-900 dark:text-gray-200 dark:hover:bg-slate-800',\n disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n {label}\n </button>\n);\n\n/**\n * Multiline text input matching Input variants, sizing and status messaging.\n */\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n { variant = 'outline', size = 'medium', rounded = 'md', success, error, warn, className, wrapperClassName, label, prepend, append, rows = 4, richText = false, toolbar = DEFAULT_TOOLBAR, ...props },\n ref\n ) => {\n const { placeholder, onFocus, onBlur, onChange, onKeyDown, value, defaultValue, disabled, readOnly, ...textareaProps } = props;\n const reactId = React.useId();\n const hasLabel = Boolean(label);\n const hasProvidedPlaceholder = typeof placeholder === 'string' && placeholder.trim().length > 0;\n const hidePlaceholderUntilFocus = hasLabel && hasProvidedPlaceholder;\n const [isFocused, setIsFocused] = React.useState(false);\n const classBase = 'textarea-base transition-colors duration-200 w-full has-[textarea:disabled]:opacity-50 has-[textarea:disabled]:cursor-not-allowed';\n const textareaBase =\n 'peer block w-full min-w-0 resize-y border-0 bg-transparent p-0 text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400 focus:outline-none focus:ring-0';\n const proseBase =\n 'ProseMirror min-h-[7rem] w-full border-0 bg-transparent p-0 text-gray-900 dark:text-gray-100 focus:outline-none [&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:pl-3 [&_blockquote]:italic dark:[&_blockquote]:border-slate-600 [&_:not(pre)>code]:rounded [&_:not(pre)>code]:bg-black [&_:not(pre)>code]:px-1 [&_:not(pre)>code]:py-0.5 [&_:not(pre)>code]:text-white dark:[&_:not(pre)>code]:bg-black dark:[&_:not(pre)>code]:text-white [&_pre]:overflow-x-auto [&_pre]:rounded [&_pre]:bg-black [&_pre]:p-3 [&_pre]:text-white [&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_pre_code]:text-white [&_ul]:list-disc [&_ul]:pl-5 [&_ol]:list-decimal [&_ol]:pl-5 [&_h1]:text-2xl [&_h1]:font-semibold [&_h2]:text-xl [&_h2]:font-semibold';\n const hiddenTextareaRef = React.useRef<HTMLTextAreaElement | null>(null);\n const forwardedRef = React.useRef<HTMLTextAreaElement | null>(null);\n const isControlled = value !== undefined;\n const markdownValue = typeof value === 'string' ? value : typeof defaultValue === 'string' ? defaultValue : '';\n const [internalMarkdown, setInternalMarkdown] = React.useState(markdownValue);\n const resolvedMarkdownValue = isControlled ? (typeof value === 'string' ? value : '') : internalMarkdown;\n\n const status = error\n ? { tone: 'error' as const, message: error }\n : warn\n ? { tone: 'warn' as const, message: warn }\n : success\n ? { tone: 'success' as const, message: success }\n : undefined;\n\n const variantClass = variantClasses[variant] ?? variantClasses.outline;\n const toneClass = status ? statusClasses[status.tone] : undefined;\n const hasPrepend = typeof prepend === 'string' ? prepend.trim().length > 0 : Boolean(prepend);\n const hasAppend = typeof append === 'string' ? append.trim().length > 0 : Boolean(append);\n const sizeConfig = sizeClasses[size] ?? sizeClasses.medium;\n const sizeClass = [sizeConfig.paddingY, sizeConfig.paddingX, sizeConfig.text].join(' ');\n const roundedClass = variant === 'sharp' || variant === 'text' || variant === 'underlined' ? 'rounded-none' : roundedClasses[rounded];\n\n const inputName = textareaProps.name || reactId;\n const basePlaceholder = placeholder ?? (hasLabel ? ' ' : undefined);\n const placeholderValue = hidePlaceholderUntilFocus ? (isFocused ? placeholder : ' ') : basePlaceholder;\n const placeholderClass = hidePlaceholderUntilFocus\n ? 'placeholder-transparent focus:placeholder-gray-500 focus:dark:placeholder-gray-400'\n : undefined;\n const editor = useEditor({\n extensions: [\n StarterKit.configure({ heading: { levels: [1, 2] }, codeBlock: false }),\n CodeBlockLowlight.configure({\n defaultLanguage: DEFAULT_CODE_BLOCK_LANGUAGE,\n enableTabIndentation: true,\n lowlight,\n HTMLAttributes: {\n class: 'hljs'\n }\n }),\n Underline\n ],\n content: markdownToHtml(resolvedMarkdownValue),\n editable: richText && !disabled && !readOnly,\n immediatelyRender: false,\n editorProps: {\n attributes: {\n class: twMerge(proseBase, placeholderClass),\n 'data-placeholder': placeholderValue ?? ''\n }\n },\n onFocus: () => {\n if (!richText) {\n return;\n }\n\n if (hidePlaceholderUntilFocus) {\n setIsFocused(true);\n }\n const target = hiddenTextareaRef.current;\n if (target) {\n onFocus?.(createChangeEvent(target) as unknown as React.FocusEvent<HTMLTextAreaElement>);\n }\n },\n onBlur: () => {\n if (!richText) {\n return;\n }\n\n if (hidePlaceholderUntilFocus) {\n setIsFocused(false);\n }\n const target = hiddenTextareaRef.current;\n if (target) {\n onBlur?.(createChangeEvent(target) as unknown as React.FocusEvent<HTMLTextAreaElement>);\n }\n },\n onUpdate: ({ editor: currentEditor }) => {\n if (!richText) {\n return;\n }\n\n const nextMarkdown = htmlToMarkdown(currentEditor.getHTML());\n const target = hiddenTextareaRef.current;\n\n setInternalMarkdown(nextMarkdown);\n\n if (!target) {\n return;\n }\n\n target.value = nextMarkdown;\n onChange?.(createChangeEvent(target));\n }\n });\n const activeCodeBlockLanguage = (() => {\n const language = editor?.getAttributes('codeBlock').language;\n if (typeof language === 'string' && isCodeBlockLanguage(language)) {\n return language;\n }\n\n return DEFAULT_CODE_BLOCK_LANGUAGE;\n })();\n\n React.useEffect(() => {\n if (!richText) {\n return;\n }\n\n const target = hiddenTextareaRef.current;\n if (!target) {\n return;\n }\n\n target.value = resolvedMarkdownValue;\n forwardedRef.current = target;\n assignRef(ref, target);\n }, [ref, resolvedMarkdownValue, richText]);\n\n React.useEffect(() => {\n if (!editor || !richText || !isControlled) {\n return;\n }\n\n const nextMarkdown = typeof value === 'string' ? value : '';\n const currentMarkdown = htmlToMarkdown(editor.getHTML());\n if (currentMarkdown === nextMarkdown) {\n return;\n }\n\n editor.commands.setContent(markdownToHtml(nextMarkdown), { emitUpdate: false });\n }, [editor, isControlled, richText, value]);\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalMarkdown(typeof defaultValue === 'string' ? defaultValue : '');\n }\n }, [defaultValue, isControlled]);\n\n React.useEffect(() => {\n if (!editor || !richText) {\n return;\n }\n\n editor.setEditable(!disabled && !readOnly);\n }, [disabled, editor, readOnly, richText]);\n\n const renderPrepend = hasPrepend ? (\n typeof prepend === 'string' ? (\n <span className={twMerge('text-gray-500 dark:text-gray-400', sizeConfig.text)}>{prepend}</span>\n ) : (\n prepend\n )\n ) : null;\n const renderAppend = hasAppend ? (\n typeof append === 'string' ? (\n <span className={twMerge('text-gray-500 dark:text-gray-400', sizeConfig.text)}>{append}</span>\n ) : (\n append\n )\n ) : null;\n\n const handleFocus: React.FocusEventHandler<HTMLTextAreaElement> = event => {\n if (hidePlaceholderUntilFocus) setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur: React.FocusEventHandler<HTMLTextAreaElement> = event => {\n if (hidePlaceholderUntilFocus) setIsFocused(false);\n onBlur?.(event);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLTextAreaElement> = event => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || event.key !== 'Tab' || disabled || readOnly) {\n return;\n }\n\n const target = event.currentTarget;\n const { selectionStart, selectionEnd, value: currentValue } = target;\n\n event.preventDefault();\n\n if (selectionStart !== selectionEnd && currentValue.slice(selectionStart, selectionEnd).includes('\\n')) {\n const nextState = event.shiftKey\n ? outdentSelectedLines(currentValue, selectionStart, selectionEnd)\n : indentSelectedLines(currentValue, selectionStart, selectionEnd);\n\n updateTextareaValue(target, nextState.nextValue, nextState.selectionStart, nextState.selectionEnd);\n onChange?.(createChangeEvent(target));\n return;\n }\n\n if (event.shiftKey) {\n const lineStart = currentValue.lastIndexOf('\\n', Math.max(0, selectionStart - 1)) + 1;\n if (currentValue.slice(lineStart, selectionStart).endsWith(TEXTAREA_TAB_CHARACTER)) {\n const nextValue = `${currentValue.slice(0, selectionStart - TEXTAREA_TAB_CHARACTER.length)}${currentValue.slice(selectionEnd)}`;\n const nextPosition = selectionStart - TEXTAREA_TAB_CHARACTER.length;\n\n updateTextareaValue(target, nextValue, nextPosition, nextPosition);\n onChange?.(createChangeEvent(target));\n }\n return;\n }\n\n const nextValue = `${currentValue.slice(0, selectionStart)}${TEXTAREA_TAB_CHARACTER}${currentValue.slice(selectionEnd)}`;\n const nextPosition = selectionStart + TEXTAREA_TAB_CHARACTER.length;\n\n updateTextareaValue(target, nextValue, nextPosition, nextPosition);\n onChange?.(createChangeEvent(target));\n };\n\n return (\n <div className={twMerge('flex flex-col gap-1', wrapperClassName)}>\n <div className={twMerge('flex w-full items-start gap-2', classBase, variantClass, roundedClass, toneClass, sizeClass, className)}>\n {hasPrepend && <span className='flex shrink-0 items-start pt-0.5'>{renderPrepend}</span>}\n\n <div className='relative min-w-0 flex-1'>\n {richText ? (\n <>\n <textarea\n {...textareaProps}\n ref={node => {\n hiddenTextareaRef.current = node;\n forwardedRef.current = node;\n if (node) {\n assignRef(ref, node);\n }\n }}\n id={inputName}\n name={inputName}\n rows={rows}\n value={isControlled ? value : undefined}\n defaultValue={!isControlled ? defaultValue : undefined}\n disabled={disabled}\n readOnly\n tabIndex={-1}\n aria-hidden\n className='sr-only'\n />\n <div className='flex flex-wrap gap-1 border-b border-gray-200 pb-2 dark:border-slate-700'>\n {toolbar.includes('bold') && (\n <ToolbarButton\n label='B'\n disabled={!editor?.isEditable}\n active={editor?.isActive('bold')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleBold().run();\n }}\n />\n )}\n {toolbar.includes('italic') && (\n <ToolbarButton\n label='I'\n disabled={!editor?.isEditable}\n active={editor?.isActive('italic')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleItalic().run();\n }}\n />\n )}\n {toolbar.includes('underline') && (\n <ToolbarButton\n label='U'\n disabled={!editor?.isEditable}\n active={editor?.isActive('underline')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleUnderline().run();\n }}\n />\n )}\n {toolbar.includes('strike') && (\n <ToolbarButton\n label='S'\n disabled={!editor?.isEditable}\n active={editor?.isActive('strike')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleStrike().run();\n }}\n />\n )}\n {toolbar.includes('heading') && (\n <>\n <ToolbarButton\n label='H1'\n disabled={!editor?.isEditable}\n active={editor?.isActive('heading', { level: 1 })}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleHeading({ level: 1 }).run();\n }}\n />\n <ToolbarButton\n label='H2'\n disabled={!editor?.isEditable}\n active={editor?.isActive('heading', { level: 2 })}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleHeading({ level: 2 }).run();\n }}\n />\n </>\n )}\n {toolbar.includes('bulletList') && (\n <ToolbarButton\n label='List'\n disabled={!editor?.isEditable}\n active={editor?.isActive('bulletList')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleBulletList().run();\n }}\n />\n )}\n {toolbar.includes('orderedList') && (\n <ToolbarButton\n label='1.'\n disabled={!editor?.isEditable}\n active={editor?.isActive('orderedList')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleOrderedList().run();\n }}\n />\n )}\n {toolbar.includes('blockquote') && (\n <ToolbarButton\n label='Quote'\n disabled={!editor?.isEditable}\n active={editor?.isActive('blockquote')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleBlockquote().run();\n }}\n />\n )}\n {toolbar.includes('codeBlock') && (\n <>\n <ToolbarButton\n label='Code'\n disabled={!editor?.isEditable}\n active={editor?.isActive('codeBlock')}\n onMouseDown={event => {\n event.preventDefault();\n editor?.chain().focus().toggleCodeBlock({ language: activeCodeBlockLanguage }).run();\n }}\n />\n <label className='sr-only' htmlFor={`${inputName}-code-language`}>\n Code language\n </label>\n <select\n id={`${inputName}-code-language`}\n value={activeCodeBlockLanguage}\n disabled={!editor?.isEditable}\n className='min-w-24 rounded border border-gray-300 bg-white px-2 py-1 text-xs text-gray-700 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-600 dark:bg-slate-900 dark:text-gray-200'\n onChange={event => {\n const language = event.target.value;\n if (!isCodeBlockLanguage(language)) {\n return;\n }\n\n editor?.chain().focus().setCodeBlock({ language }).run();\n }}\n >\n {CODE_BLOCK_LANGUAGES.map(language => (\n <option key={language} value={language}>\n {language}\n </option>\n ))}\n </select>\n </>\n )}\n </div>\n <EditorContent editor={editor} className='pt-3' />\n </>\n ) : (\n <textarea\n {...textareaProps}\n ref={node => {\n forwardedRef.current = node;\n assignRef(ref, node);\n }}\n id={inputName}\n name={inputName}\n rows={rows}\n placeholder={placeholderValue}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={onChange}\n disabled={disabled}\n readOnly={readOnly}\n value={value}\n defaultValue={defaultValue}\n className={twMerge(textareaBase, placeholderClass)}\n />\n )}\n\n {label && (\n <label\n htmlFor={inputName}\n className={twMerge(\n 'absolute left-0 z-10 transition-all duration-150 pointer-events-none text-gray-700 dark:text-gray-200',\n '-top-2 -translate-y-full text-xs bg-white px-1 dark:bg-slate-900',\n !richText && 'peer-focus:left-0 peer-focus:-top-5 peer-focus:-translate-y-full peer-focus:text-xs peer-focus:text-gray-600 dark:peer-focus:text-gray-300',\n !richText &&\n 'peer-placeholder-shown:top-3 peer-placeholder-shown:translate-y-0 peer-placeholder-shown:text-sm peer-placeholder-shown:bg-transparent peer-placeholder-shown:px-0 peer-placeholder-shown:text-gray-500 dark:peer-placeholder-shown:text-gray-400',\n !richText &&\n 'peer-[&:not(:placeholder-shown)]:left-0 peer-[&:not(:placeholder-shown)]:-top-2 peer-[&:not(:placeholder-shown)]:-translate-y-full peer-[&:not(:placeholder-shown)]:text-xs peer-[&:not(:placeholder-shown)]:bg-white peer-[&:not(:placeholder-shown)]:px-1 peer-[&:not(:placeholder-shown)]:text-gray-700 dark:peer-[&:not(:placeholder-shown)]:bg-slate-900 dark:peer-[&:not(:placeholder-shown)]:text-gray-200',\n richText && (isFocused || resolvedMarkdownValue) && '-top-2 -translate-y-full text-xs',\n richText && !(isFocused || resolvedMarkdownValue) && 'top-3 translate-y-0 text-sm bg-transparent px-0 text-gray-500 dark:text-gray-400'\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {hasAppend && <span className='flex shrink-0 items-start pt-0.5'>{renderAppend}</span>}\n </div>\n {status?.message && <span className={twMerge('text-sm', statusMessageClasses[status.tone])}>{status.message}</span>}\n </div>\n );\n }\n);\n\nTextArea.displayName = 'TextArea';\n\nexport type { TextAreaProps } from './types.textarea';\nexport default TextArea;\n"]}
@@ -1,29 +1,33 @@
1
+ import { I as InputStatusProps, a as InputVariant, b as InputSize, c as InputRounded } from './types-B4puM-zr.cjs';
1
2
  import react__default from 'react';
3
+ import './global.types-CjO3VRWu.cjs';
2
4
 
3
- type TextAreaVariant = 'standard' | 'filled' | 'outlined';
4
- type TextAreaMode = 'simple' | 'advanced';
5
- type TextAreaView = 'editor' | 'view';
6
- type TextAreaProps = react__default.TextareaHTMLAttributes<HTMLTextAreaElement> & {
7
- variant?: TextAreaVariant;
8
- label?: react__default.ReactNode;
9
- /**
10
- * Class applied to the outer wrapper around the textarea + label.
11
- */
5
+ type TextAreaFormattingToolbar = 'bold' | 'italic' | 'underline' | 'strike' | 'bulletList' | 'orderedList' | 'blockquote' | 'codeBlock' | 'heading';
6
+ type TextAreaProps = Omit<react__default.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> & InputStatusProps & {
7
+ variant?: InputVariant;
8
+ size?: InputSize;
9
+ rounded?: InputRounded;
12
10
  wrapperClassName?: string;
13
- /**
14
- * Allow switching between simple / advanced modes (if false, component stays in simple mode).
15
- */
16
- allowModeSwitch?: boolean;
17
- /**
18
- * Mode used when rendering (simple vs advanced). Defaults to simple when switching is disabled.
19
- */
20
- mode?: TextAreaMode;
21
- /**
22
- * Viewing state for the advanced area.
23
- */
24
- view?: TextAreaView;
11
+ label?: react__default.ReactNode;
12
+ prepend?: react__default.ReactNode;
13
+ append?: react__default.ReactNode;
14
+ richText?: boolean;
15
+ toolbar?: TextAreaFormattingToolbar[];
25
16
  };
26
17
 
27
- declare const TextArea: react__default.FC<TextAreaProps>;
18
+ /**
19
+ * Multiline text input matching Input variants, sizing and status messaging.
20
+ */
21
+ declare const TextArea: react__default.ForwardRefExoticComponent<Omit<react__default.TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> & InputStatusProps & {
22
+ variant?: InputVariant;
23
+ size?: InputSize;
24
+ rounded?: InputRounded;
25
+ wrapperClassName?: string;
26
+ label?: react__default.ReactNode;
27
+ prepend?: react__default.ReactNode;
28
+ append?: react__default.ReactNode;
29
+ richText?: boolean;
30
+ toolbar?: TextAreaFormattingToolbar[];
31
+ } & react__default.RefAttributes<HTMLTextAreaElement>>;
28
32
 
29
- export { TextArea as default };
33
+ export { type TextAreaProps, TextArea as default };
@@ -1,29 +1,33 @@
1
+ import { I as InputStatusProps, a as InputVariant, b as InputSize, c as InputRounded } from './types-BDisBwnf.js';
1
2
  import react__default from 'react';
3
+ import './global.types-CjO3VRWu.js';
2
4
 
3
- type TextAreaVariant = 'standard' | 'filled' | 'outlined';
4
- type TextAreaMode = 'simple' | 'advanced';
5
- type TextAreaView = 'editor' | 'view';
6
- type TextAreaProps = react__default.TextareaHTMLAttributes<HTMLTextAreaElement> & {
7
- variant?: TextAreaVariant;
8
- label?: react__default.ReactNode;
9
- /**
10
- * Class applied to the outer wrapper around the textarea + label.
11
- */
5
+ type TextAreaFormattingToolbar = 'bold' | 'italic' | 'underline' | 'strike' | 'bulletList' | 'orderedList' | 'blockquote' | 'codeBlock' | 'heading';
6
+ type TextAreaProps = Omit<react__default.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> & InputStatusProps & {
7
+ variant?: InputVariant;
8
+ size?: InputSize;
9
+ rounded?: InputRounded;
12
10
  wrapperClassName?: string;
13
- /**
14
- * Allow switching between simple / advanced modes (if false, component stays in simple mode).
15
- */
16
- allowModeSwitch?: boolean;
17
- /**
18
- * Mode used when rendering (simple vs advanced). Defaults to simple when switching is disabled.
19
- */
20
- mode?: TextAreaMode;
21
- /**
22
- * Viewing state for the advanced area.
23
- */
24
- view?: TextAreaView;
11
+ label?: react__default.ReactNode;
12
+ prepend?: react__default.ReactNode;
13
+ append?: react__default.ReactNode;
14
+ richText?: boolean;
15
+ toolbar?: TextAreaFormattingToolbar[];
25
16
  };
26
17
 
27
- declare const TextArea: react__default.FC<TextAreaProps>;
18
+ /**
19
+ * Multiline text input matching Input variants, sizing and status messaging.
20
+ */
21
+ declare const TextArea: react__default.ForwardRefExoticComponent<Omit<react__default.TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> & InputStatusProps & {
22
+ variant?: InputVariant;
23
+ size?: InputSize;
24
+ rounded?: InputRounded;
25
+ wrapperClassName?: string;
26
+ label?: react__default.ReactNode;
27
+ prepend?: react__default.ReactNode;
28
+ append?: react__default.ReactNode;
29
+ richText?: boolean;
30
+ toolbar?: TextAreaFormattingToolbar[];
31
+ } & react__default.RefAttributes<HTMLTextAreaElement>>;
28
32
 
29
- export { TextArea as default };
33
+ export { type TextAreaProps, TextArea as default };
package/dist/textarea.js CHANGED
@@ -1,4 +1,3 @@
1
- export { TextArea_default as default } from './chunk-67TAA2MA.js';
2
- import './chunk-6SKW43XI.js';
1
+ export { TextArea_default as default } from './chunk-3J6Y3EQW.js';
3
2
  //# sourceMappingURL=textarea.js.map
4
3
  //# sourceMappingURL=textarea.js.map
@@ -20,7 +20,7 @@ interface TimeLineProps extends react.HTMLAttributes<HTMLDivElement> {
20
20
  interface TimeLineItemProps extends Omit<react.HTMLAttributes<HTMLDivElement>, 'title'> {
21
21
  title?: react.ReactNode;
22
22
  subtitle?: react.ReactNode;
23
- opposite?: string | react.ReactNode;
23
+ opposite?: react.ReactNode;
24
24
  icon?: PropIcon;
25
25
  dot?: react.ReactNode;
26
26
  color?: Palette;
@@ -20,7 +20,7 @@ interface TimeLineProps extends react.HTMLAttributes<HTMLDivElement> {
20
20
  interface TimeLineItemProps extends Omit<react.HTMLAttributes<HTMLDivElement>, 'title'> {
21
21
  title?: react.ReactNode;
22
22
  subtitle?: react.ReactNode;
23
- opposite?: string | react.ReactNode;
23
+ opposite?: react.ReactNode;
24
24
  icon?: PropIcon;
25
25
  dot?: react.ReactNode;
26
26
  color?: Palette;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lindle/linoardo",
3
- "version": "1.0.49",
3
+ "version": "1.0.51",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "",
@@ -16,6 +16,7 @@
16
16
  "@storybook/testing-library": "^0.2.2",
17
17
  "@tailwindcss/postcss": "^4.1.13",
18
18
  "@tailwindcss/vite": "^4.1.18",
19
+ "@tiptap/extension-code-block-lowlight": "^3.20.1",
19
20
  "@tiptap/extension-underline": "^3.13.0",
20
21
  "@tiptap/react": "^3.13.0",
21
22
  "@tiptap/starter-kit": "^3.13.0",
@@ -23,6 +24,7 @@
23
24
  "@types/react": "^19.1.13",
24
25
  "@types/react-dom": "^19.1.9",
25
26
  "@vitejs/plugin-react": "^5.0.4",
27
+ "lowlight": "^3.3.0",
26
28
  "marked": "^17.0.1",
27
29
  "postcss": "^8.5.6",
28
30
  "postcss-cli": "^11.0.1",
@@ -206,12 +208,16 @@
206
208
  "react-dom": ">=18"
207
209
  },
208
210
  "devDependencies": {
211
+ "@eslint/js": "^9.39.3",
209
212
  "@storybook/addon-vitest": "^10.1.3",
210
213
  "@types/turndown": "^5.0.6",
214
+ "@typescript-eslint/eslint-plugin": "^8.56.1",
211
215
  "@typescript-eslint/parser": "^8.49.0",
212
216
  "@vitest/browser-playwright": "^4.0.15",
213
217
  "@vitest/coverage-v8": "^4.0.15",
214
218
  "eslint": "^9.39.2",
219
+ "eslint-plugin-react-hooks": "^7.0.0",
220
+ "globals": "^16.4.0",
215
221
  "playwright": "^1.57.0",
216
222
  "react-hook-form": "^7.71.1",
217
223
  "vitest": "^4.0.15"