@melv1c/ui-kit 0.0.0 → 1.0.1

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 (36) hide show
  1. package/README.md +1 -1
  2. package/dist/base.css +5 -0
  3. package/dist/code-editors/index.cjs +200 -0
  4. package/dist/code-editors/index.cjs.map +1 -0
  5. package/dist/code-editors/index.d.cts +46 -0
  6. package/dist/code-editors/index.d.ts +46 -0
  7. package/dist/code-editors/index.js +197 -0
  8. package/dist/code-editors/index.js.map +1 -0
  9. package/dist/index.cjs +1 -28
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +4 -116
  12. package/dist/index.d.ts +4 -116
  13. package/dist/index.js +3 -27
  14. package/dist/index.js.map +1 -1
  15. package/dist/{rich-text-editor-MOJDWQTI.cjs → rich-text-editor/index.cjs} +5 -5
  16. package/dist/rich-text-editor/index.cjs.map +1 -0
  17. package/dist/rich-text-editor/index.d.cts +50 -0
  18. package/dist/rich-text-editor/index.d.ts +50 -0
  19. package/dist/{rich-text-editor-JUERRDHQ.js → rich-text-editor/index.js} +5 -5
  20. package/dist/rich-text-editor/index.js.map +1 -0
  21. package/package.json +13 -3
  22. package/dist/chunk-2ZWQNZEN.cjs +0 -63
  23. package/dist/chunk-2ZWQNZEN.cjs.map +0 -1
  24. package/dist/chunk-RZJFYAJW.js +0 -60
  25. package/dist/chunk-RZJFYAJW.js.map +0 -1
  26. package/dist/code-diff-editor-IT2RMVDC.js +0 -73
  27. package/dist/code-diff-editor-IT2RMVDC.js.map +0 -1
  28. package/dist/code-diff-editor-J24VGXHL.cjs +0 -75
  29. package/dist/code-diff-editor-J24VGXHL.cjs.map +0 -1
  30. package/dist/code-editor-DK64HVFQ.cjs +0 -84
  31. package/dist/code-editor-DK64HVFQ.cjs.map +0 -1
  32. package/dist/code-editor-EJIJXZLN.js +0 -82
  33. package/dist/code-editor-EJIJXZLN.js.map +0 -1
  34. package/dist/rich-text-editor-JUERRDHQ.js.map +0 -1
  35. package/dist/rich-text-editor-MOJDWQTI.cjs.map +0 -1
  36. package/styles.css +0 -120
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkGQ6Z5A4R_cjs = require('./chunk-GQ6Z5A4R.cjs');
4
- var chunkI7WHASOO_cjs = require('./chunk-I7WHASOO.cjs');
5
- require('./chunk-Q7SFCCGT.cjs');
3
+ var chunkGQ6Z5A4R_cjs = require('../chunk-GQ6Z5A4R.cjs');
4
+ var chunkI7WHASOO_cjs = require('../chunk-I7WHASOO.cjs');
5
+ require('../chunk-Q7SFCCGT.cjs');
6
6
  var Link = require('@tiptap/extension-link');
7
7
  var Placeholder = require('@tiptap/extension-placeholder');
8
8
  var Underline = require('@tiptap/extension-underline');
@@ -447,5 +447,5 @@ function RichTextEditor({
447
447
  }
448
448
 
449
449
  exports.RichTextEditor = RichTextEditor;
450
- //# sourceMappingURL=rich-text-editor-MOJDWQTI.cjs.map
451
- //# sourceMappingURL=rich-text-editor-MOJDWQTI.cjs.map
450
+ //# sourceMappingURL=index.cjs.map
451
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/optionals/rich-text-editor/variants.ts","../../src/components/optionals/rich-text-editor/toolbar/link-popover.tsx","../../src/components/optionals/rich-text-editor/toolbar/editor-toolbar.tsx","../../src/components/optionals/rich-text-editor/rich-text-editor.tsx"],"names":["cva","useState","useRef","useCallback","jsxs","Popover","jsx","PopoverTrigger","Toggle","LinkIcon","PopoverContent","Input","Button","Check","X","Unlink","cn","Fragment","ToggleGroup","ToggleGroupItem","Heading1","Heading2","Heading3","Separator","Bold","Italic","UnderlineIcon","Strikethrough","List","ListOrdered","useEditor","StarterKit","Underline","Link","Placeholder","editor","EditorContent"],"mappings":"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","file":"index.cjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const richTextEditorVariants = cva(\n \"relative overflow-hidden rounded-md border transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"border-input bg-transparent\",\n ghost: \"border-transparent bg-transparent\",\n card: \"border-border bg-card shadow-sm\",\n },\n size: {\n default: \"min-h-[200px]\",\n sm: \"min-h-[120px]\",\n lg: \"min-h-[350px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport const toolbarVariants = cva(\n \"flex flex-wrap items-center gap-1 border-b p-2\",\n {\n variants: {\n variant: {\n default: \"border-input bg-muted/30\",\n ghost: \"border-transparent bg-transparent\",\n card: \"border-border bg-muted/50\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport const editorContentVariants = cva(\n \"prose prose-sm dark:prose-invert max-w-none p-4 focus:outline-none\",\n {\n variants: {\n size: {\n default: \"min-h-[150px]\",\n sm: \"min-h-[80px]\",\n lg: \"min-h-[300px]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n","import { Check, Link as LinkIcon, Unlink, X } from \"lucide-react\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Button } from \"@/components/base/button\";\nimport { Input } from \"@/components/base/input\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/base/popover\";\nimport { Toggle } from \"@/components/base/toggle\";\nimport type { LinkPopoverProps } from \"../types\";\n\nfunction LinkPopover({ editor, disabled }: LinkPopoverProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [url, setUrl] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleOpen = useCallback(\n (open: boolean) => {\n if (open) {\n const previousUrl = editor.getAttributes(\"link\").href || \"\";\n setUrl(previousUrl);\n }\n setIsOpen(open);\n },\n [editor],\n );\n\n const handleSetLink = useCallback(() => {\n if (url === \"\") {\n editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n } else {\n editor\n .chain()\n .focus()\n .extendMarkRange(\"link\")\n .setLink({ href: url, target: \"_blank\" })\n .run();\n }\n setIsOpen(false);\n setUrl(\"\");\n }, [editor, url]);\n\n const handleUnsetLink = useCallback(() => {\n editor.chain().focus().unsetLink().run();\n setIsOpen(false);\n setUrl(\"\");\n }, [editor]);\n\n const isActive = editor.isActive(\"link\");\n\n return (\n <Popover open={isOpen} onOpenChange={handleOpen}>\n <PopoverTrigger asChild>\n <Toggle\n size=\"sm\"\n pressed={isActive}\n disabled={disabled}\n aria-label={isActive ? \"Edit link\" : \"Add link\"}\n variant=\"outline\"\n >\n <LinkIcon className=\"size-4\" />\n </Toggle>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-3\" align=\"start\">\n <div className=\"flex flex-col gap-3\">\n <div className=\"text-sm font-medium\">\n {isActive ? \"Edit Link\" : \"Insert Link\"}\n </div>\n <Input\n ref={inputRef}\n type=\"url\"\n placeholder=\"https://example.com\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleSetLink();\n }\n if (e.key === \"Escape\") {\n setIsOpen(false);\n }\n }}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"flex gap-1\">\n <Button type=\"button\" size=\"sm\" onClick={handleSetLink}>\n <Check className=\"size-3.5\" />\n {isActive ? \"Update\" : \"Insert\"}\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setIsOpen(false);\n setUrl(\"\");\n }}\n >\n <X className=\"size-3.5\" />\n Cancel\n </Button>\n </div>\n {isActive && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleUnsetLink}\n className=\"text-destructive hover:text-destructive\"\n >\n <Unlink className=\"size-3.5\" />\n Remove\n </Button>\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { LinkPopover };\n","import {\n Bold,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Strikethrough,\n Underline as UnderlineIcon,\n} from \"lucide-react\";\nimport { Separator } from \"@/components/base/separator\";\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/base/toggle-group\";\nimport { cn } from \"@/lib/utils\";\nimport type { EditorToolbarProps, ToolbarOptions } from \"../types\";\nimport { toolbarVariants } from \"../variants\";\nimport { LinkPopover } from \"./link-popover\";\n\nconst defaultOptions: Required<ToolbarOptions> = {\n headings: true,\n bold: true,\n italic: true,\n underline: true,\n strikethrough: true,\n bulletList: true,\n orderedList: true,\n link: true,\n};\n\nfunction EditorToolbar({\n editor,\n variant,\n disabled,\n className,\n options,\n}: EditorToolbarProps) {\n const opts = { ...defaultOptions, ...options };\n\n const showHeadings = opts.headings;\n const showFormatting =\n opts.bold || opts.italic || opts.underline || opts.strikethrough;\n const showLists = opts.bulletList || opts.orderedList;\n const showLink = opts.link;\n\n // Determine which separators to show based on active groups\n const activeGroups = [showHeadings, showFormatting, showLists, showLink];\n const needsSeparatorAfter = (groupIndex: number): boolean => {\n // Show separator if there's at least one active group after this one\n return activeGroups.slice(groupIndex + 1).some(Boolean);\n };\n\n return (\n <div\n data-slot=\"rich-text-editor-toolbar\"\n className={cn(toolbarVariants({ variant }), className)}\n >\n {/* Heading Group */}\n {showHeadings && (\n <>\n <ToggleGroup\n type=\"single\"\n value={\n editor?.isActive(\"heading\", { level: 1 })\n ? \"h1\"\n : editor?.isActive(\"heading\", { level: 2 })\n ? \"h2\"\n : editor?.isActive(\"heading\", { level: 3 })\n ? \"h3\"\n : \"\"\n }\n size=\"sm\"\n variant=\"outline\"\n >\n <ToggleGroupItem\n value=\"h1\"\n aria-label=\"Heading 1\"\n disabled={\n disabled ||\n !editor?.can().chain().focus().toggleHeading({ level: 1 }).run()\n }\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 1 }).run()\n }\n >\n <Heading1 className=\"size-4\" />\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"h2\"\n aria-label=\"Heading 2\"\n disabled={\n disabled ||\n !editor?.can().chain().focus().toggleHeading({ level: 2 }).run()\n }\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 2 }).run()\n }\n >\n <Heading2 className=\"size-4\" />\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"h3\"\n aria-label=\"Heading 3\"\n disabled={\n disabled ||\n !editor?.can().chain().focus().toggleHeading({ level: 3 }).run()\n }\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 3 }).run()\n }\n >\n <Heading3 className=\"size-4\" />\n </ToggleGroupItem>\n </ToggleGroup>\n {needsSeparatorAfter(0) && (\n <Separator orientation=\"vertical\" className=\"mx-1 h-6\" />\n )}\n </>\n )}\n\n {/* Text Formatting Group */}\n {showFormatting && (\n <>\n <ToggleGroup\n type=\"multiple\"\n value={[\"bold\", \"italic\", \"underline\", \"strike\"].filter((format) =>\n editor?.isActive(format),\n )}\n size=\"sm\"\n variant=\"outline\"\n >\n {opts.bold && (\n <ToggleGroupItem\n value=\"bold\"\n aria-label=\"Bold\"\n disabled={\n disabled || !editor.can().chain().focus().toggleBold().run()\n }\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <Bold className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.italic && (\n <ToggleGroupItem\n value=\"italic\"\n aria-label=\"Italic\"\n disabled={\n disabled || !editor.can().chain().focus().toggleItalic().run()\n }\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <Italic className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.underline && (\n <ToggleGroupItem\n value=\"underline\"\n aria-label=\"Underline\"\n disabled={\n disabled ||\n !editor.can().chain().focus().toggleUnderline().run()\n }\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n >\n <UnderlineIcon className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.strikethrough && (\n <ToggleGroupItem\n value=\"strike\"\n aria-label=\"Strikethrough\"\n disabled={\n disabled || !editor.can().chain().focus().toggleStrike().run()\n }\n onClick={() => editor.chain().focus().toggleStrike().run()}\n >\n <Strikethrough className=\"size-4\" />\n </ToggleGroupItem>\n )}\n </ToggleGroup>\n {needsSeparatorAfter(1) && (\n <Separator orientation=\"vertical\" className=\"mx-1 h-6\" />\n )}\n </>\n )}\n\n {/* List Group */}\n {showLists && (\n <>\n <ToggleGroup\n type=\"single\"\n value={\n editor.isActive(\"bulletList\")\n ? \"bulletList\"\n : editor.isActive(\"orderedList\")\n ? \"orderedList\"\n : \"\"\n }\n size=\"sm\"\n variant=\"outline\"\n >\n {opts.bulletList && (\n <ToggleGroupItem\n value=\"bulletList\"\n aria-label=\"Bullet list\"\n disabled={disabled}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <List className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.orderedList && (\n <ToggleGroupItem\n value=\"orderedList\"\n aria-label=\"Ordered list\"\n disabled={disabled}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListOrdered className=\"size-4\" />\n </ToggleGroupItem>\n )}\n </ToggleGroup>\n {needsSeparatorAfter(2) && (\n <Separator orientation=\"vertical\" className=\"mx-1 h-6\" />\n )}\n </>\n )}\n\n {/* Link */}\n {showLink && <LinkPopover editor={editor} disabled={disabled} />}\n </div>\n );\n}\n\nexport { EditorToolbar };\n","import Link from \"@tiptap/extension-link\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport Underline from \"@tiptap/extension-underline\";\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport { cn } from \"@/lib/utils\";\nimport { EditorToolbar } from \"./toolbar\";\nimport type { RichTextEditorProps } from \"./types\";\nimport { editorContentVariants, richTextEditorVariants } from \"./variants\";\n\nfunction RichTextEditor({\n value,\n onChange,\n placeholder = \"Start typing...\",\n readOnly = false,\n disabled = false,\n multiline = true,\n className,\n variant,\n size,\n contentClassName,\n toolbarClassName,\n toolbarOptions,\n ...props\n}: RichTextEditorProps) {\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n heading: {\n levels: [1, 2, 3],\n },\n codeBlock: false,\n blockquote: false,\n }),\n Underline,\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n class: \"text-primary underline underline-offset-2 cursor-pointer\",\n },\n }),\n Placeholder.configure({\n placeholder,\n emptyEditorClass:\n \"before:content-[attr(data-placeholder)] before:text-muted-foreground before:float-left before:h-0 before:pointer-events-none\",\n }),\n ],\n content: value,\n onUpdate: ({ editor }) => {\n onChange(editor.isEmpty ? \"\" : editor.getHTML());\n },\n editable: !readOnly && !disabled,\n shouldRerenderOnTransaction: true, // Force a re-render when a transaction is made\n editorProps: {\n attributes: {\n class: cn(\n editorContentVariants({ size: multiline ? size : undefined }),\n \"[&_h1]:text-2xl [&_h1]:font-bold [&_h1]:mb-2\",\n \"[&_h2]:text-xl [&_h2]:font-semibold [&_h2]:mb-2\",\n \"[&_h3]:text-lg [&_h3]:font-medium [&_h3]:mb-1\",\n \"[&_ul]:list-disc [&_ul]:ml-4 [&_ol]:list-decimal [&_ol]:ml-4\",\n \"[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2\",\n !multiline && \"min-h-0 py-2\",\n ),\n },\n handleKeyDown: (_, event) => {\n // Prevent Enter key when multiline is disabled\n if (!multiline && event.key === \"Enter\") {\n return true;\n }\n return false;\n },\n },\n });\n\n return (\n <div\n data-slot=\"rich-text-editor\"\n className={cn(\n richTextEditorVariants({ variant, size: multiline ? size : undefined }),\n !multiline && \"min-h-0\",\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n {...props}\n >\n {!readOnly && (\n <EditorToolbar\n editor={editor}\n variant={variant}\n disabled={disabled}\n className={toolbarClassName}\n options={toolbarOptions}\n />\n )}\n <EditorContent\n editor={editor}\n className={cn(\n \"w-full\",\n disabled && \"pointer-events-none\",\n contentClassName,\n )}\n />\n </div>\n );\n}\n\nexport { RichTextEditor, type RichTextEditorProps };\n"]}
@@ -0,0 +1,50 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { HTMLAttributes } from 'react';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+
6
+ declare const richTextEditorVariants: (props?: ({
7
+ variant?: "default" | "ghost" | "card" | null | undefined;
8
+ size?: "default" | "sm" | "lg" | null | undefined;
9
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+
11
+ type EditorOutput = "html" | "json" | "text";
12
+ /**
13
+ * Configuration options to enable/disable toolbar features.
14
+ * All options default to `true` if not specified.
15
+ */
16
+ interface ToolbarOptions {
17
+ /** Enable heading buttons (H1, H2, H3) */
18
+ headings?: boolean;
19
+ /** Enable bold formatting */
20
+ bold?: boolean;
21
+ /** Enable italic formatting */
22
+ italic?: boolean;
23
+ /** Enable underline formatting */
24
+ underline?: boolean;
25
+ /** Enable strikethrough formatting */
26
+ strikethrough?: boolean;
27
+ /** Enable bullet list */
28
+ bulletList?: boolean;
29
+ /** Enable ordered list */
30
+ orderedList?: boolean;
31
+ /** Enable link insertion */
32
+ link?: boolean;
33
+ }
34
+ interface RichTextEditorProps extends VariantProps<typeof richTextEditorVariants>, Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
35
+ value: string;
36
+ onChange: (value: string) => void;
37
+ placeholder?: string;
38
+ readOnly?: boolean;
39
+ disabled?: boolean;
40
+ /** Allow multiline content (default: true). When false, Enter key is disabled. */
41
+ multiline?: boolean;
42
+ contentClassName?: string;
43
+ toolbarClassName?: string;
44
+ /** Configure which toolbar options are enabled. All enabled by default. */
45
+ toolbarOptions?: ToolbarOptions;
46
+ }
47
+
48
+ declare function RichTextEditor({ value, onChange, placeholder, readOnly, disabled, multiline, className, variant, size, contentClassName, toolbarClassName, toolbarOptions, ...props }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
49
+
50
+ export { type EditorOutput, RichTextEditor, type RichTextEditorProps, type ToolbarOptions };
@@ -0,0 +1,50 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { HTMLAttributes } from 'react';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+
6
+ declare const richTextEditorVariants: (props?: ({
7
+ variant?: "default" | "ghost" | "card" | null | undefined;
8
+ size?: "default" | "sm" | "lg" | null | undefined;
9
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+
11
+ type EditorOutput = "html" | "json" | "text";
12
+ /**
13
+ * Configuration options to enable/disable toolbar features.
14
+ * All options default to `true` if not specified.
15
+ */
16
+ interface ToolbarOptions {
17
+ /** Enable heading buttons (H1, H2, H3) */
18
+ headings?: boolean;
19
+ /** Enable bold formatting */
20
+ bold?: boolean;
21
+ /** Enable italic formatting */
22
+ italic?: boolean;
23
+ /** Enable underline formatting */
24
+ underline?: boolean;
25
+ /** Enable strikethrough formatting */
26
+ strikethrough?: boolean;
27
+ /** Enable bullet list */
28
+ bulletList?: boolean;
29
+ /** Enable ordered list */
30
+ orderedList?: boolean;
31
+ /** Enable link insertion */
32
+ link?: boolean;
33
+ }
34
+ interface RichTextEditorProps extends VariantProps<typeof richTextEditorVariants>, Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
35
+ value: string;
36
+ onChange: (value: string) => void;
37
+ placeholder?: string;
38
+ readOnly?: boolean;
39
+ disabled?: boolean;
40
+ /** Allow multiline content (default: true). When false, Enter key is disabled. */
41
+ multiline?: boolean;
42
+ contentClassName?: string;
43
+ toolbarClassName?: string;
44
+ /** Configure which toolbar options are enabled. All enabled by default. */
45
+ toolbarOptions?: ToolbarOptions;
46
+ }
47
+
48
+ declare function RichTextEditor({ value, onChange, placeholder, readOnly, disabled, multiline, className, variant, size, contentClassName, toolbarClassName, toolbarOptions, ...props }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
49
+
50
+ export { type EditorOutput, RichTextEditor, type RichTextEditorProps, type ToolbarOptions };
@@ -1,6 +1,6 @@
1
- import { ToggleGroup, ToggleGroupItem, Separator, Popover, PopoverTrigger, Toggle, PopoverContent, Input, Button } from './chunk-WTLIXI2B.js';
2
- import { cn } from './chunk-WZ2GOU2J.js';
3
- import './chunk-PZ5AY32C.js';
1
+ import { ToggleGroup, ToggleGroupItem, Separator, Popover, PopoverTrigger, Toggle, PopoverContent, Input, Button } from '../chunk-WTLIXI2B.js';
2
+ import { cn } from '../chunk-WZ2GOU2J.js';
3
+ import '../chunk-PZ5AY32C.js';
4
4
  import Link from '@tiptap/extension-link';
5
5
  import Placeholder from '@tiptap/extension-placeholder';
6
6
  import Underline from '@tiptap/extension-underline';
@@ -438,5 +438,5 @@ function RichTextEditor({
438
438
  }
439
439
 
440
440
  export { RichTextEditor };
441
- //# sourceMappingURL=rich-text-editor-JUERRDHQ.js.map
442
- //# sourceMappingURL=rich-text-editor-JUERRDHQ.js.map
441
+ //# sourceMappingURL=index.js.map
442
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/optionals/rich-text-editor/variants.ts","../../src/components/optionals/rich-text-editor/toolbar/link-popover.tsx","../../src/components/optionals/rich-text-editor/toolbar/editor-toolbar.tsx","../../src/components/optionals/rich-text-editor/rich-text-editor.tsx"],"names":["LinkIcon","jsxs","jsx","UnderlineIcon","editor"],"mappings":";;;;;;;;;;;;;AAEO,IAAM,sBAAA,GAAyB,GAAA;AAAA,EACpC,kKAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,6BAAA;AAAA,QACT,KAAA,EAAO,mCAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,eAAA;AAAA,QACT,EAAA,EAAI,eAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEO,IAAM,eAAA,GAAkB,GAAA;AAAA,EAC7B,gDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,0BAAA;AAAA,QACT,KAAA,EAAO,mCAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,qBAAA,GAAwB,GAAA;AAAA,EACnC,oEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,eAAA;AAAA,QACT,EAAA,EAAI,cAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AC1CA,SAAS,WAAA,CAAY,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAqB;AAC3D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAS,EAAE,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAE9C,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,aAAA,CAAc,MAAM,EAAE,IAAA,IAAQ,EAAA;AACzD,QAAA,MAAA,CAAO,WAAW,CAAA;AAAA,MACpB;AACA,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,IAAI,QAAQ,EAAA,EAAI;AACd,MAAA,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAgB,MAAM,CAAA,CAAE,SAAA,EAAU,CAAE,GAAA,EAAI;AAAA,IACjE,CAAA,MAAO;AACL,MAAA,MAAA,CACG,KAAA,EAAM,CACN,KAAA,EAAM,CACN,gBAAgB,MAAM,CAAA,CACtB,OAAA,CAAQ,EAAE,MAAM,GAAA,EAAK,MAAA,EAAQ,QAAA,EAAU,EACvC,GAAA,EAAI;AAAA,IACT;AACA,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,MAAA,CAAO,EAAE,CAAA;AAAA,EACX,CAAA,EAAG,CAAC,MAAA,EAAQ,GAAG,CAAC,CAAA;AAEhB,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,SAAA,GAAY,GAAA,EAAI;AACvC,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,MAAA,CAAO,EAAE,CAAA;AAAA,EACX,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AAEvC,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ,cAAc,UAAA,EACnC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,QAAA;AAAA,QACT,QAAA;AAAA,QACA,YAAA,EAAY,WAAW,WAAA,GAAc,UAAA;AAAA,QACrC,OAAA,EAAQ,SAAA;AAAA,QAER,QAAA,kBAAA,GAAA,CAACA,MAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,KAC/B,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,kBAAe,SAAA,EAAU,UAAA,EAAW,OAAM,OAAA,EACzC,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA,QAAA,GAAW,cAAc,aAAA,EAC5B,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK,KAAA;AAAA,UACL,WAAA,EAAY,qBAAA;AAAA,UACZ,KAAA,EAAO,GAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UACtC,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,YAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,aAAA,EAAc;AAAA,YAChB;AACA,YAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,cAAA,SAAA,CAAU,KAAK,CAAA;AAAA,YACjB;AAAA,UACF;AAAA;AAAA,OACF;AAAA,sBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,YAAA,EACb,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,UAAO,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,IAAA,EAAK,SAAS,aAAA,EACvC,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,UAAA,EAAW,CAAA;AAAA,YAC3B,WAAW,QAAA,GAAW;AAAA,WAAA,EACzB,CAAA;AAAA,0BACA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,SAAS,MAAM;AACb,gBAAA,SAAA,CAAU,KAAK,CAAA;AACf,gBAAA,MAAA,CAAO,EAAE,CAAA;AAAA,cACX,CAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,CAAA,EAAA,EAAE,WAAU,UAAA,EAAW,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA;AAE5B,SAAA,EACF,CAAA;AAAA,QACC,QAAA,oBACC,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,eAAA;AAAA,YACT,SAAA,EAAU,yCAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,MAAA,EAAA,EAAO,WAAU,UAAA,EAAW,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA;AAEjC,OAAA,EAEJ;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;ACvGA,IAAM,cAAA,GAA2C;AAAA,EAC/C,QAAA,EAAU,IAAA;AAAA,EACV,IAAA,EAAM,IAAA;AAAA,EACN,MAAA,EAAQ,IAAA;AAAA,EACR,SAAA,EAAW,IAAA;AAAA,EACX,aAAA,EAAe,IAAA;AAAA,EACf,UAAA,EAAY,IAAA;AAAA,EACZ,WAAA,EAAa,IAAA;AAAA,EACb,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,OAAA,EAAQ;AAE7C,EAAA,MAAM,eAAe,IAAA,CAAK,QAAA;AAC1B,EAAA,MAAM,iBACJ,IAAA,CAAK,IAAA,IAAQ,KAAK,MAAA,IAAU,IAAA,CAAK,aAAa,IAAA,CAAK,aAAA;AACrD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,WAAA;AAC1C,EAAA,MAAM,WAAW,IAAA,CAAK,IAAA;AAGtB,EAAA,MAAM,YAAA,GAAe,CAAC,YAAA,EAAc,cAAA,EAAgB,WAAW,QAAQ,CAAA;AACvE,EAAA,MAAM,mBAAA,GAAsB,CAAC,UAAA,KAAgC;AAE3D,IAAA,OAAO,aAAa,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA,CAAE,KAAK,OAAO,CAAA;AAAA,EACxD,CAAA;AAEA,EAAA,uBACEC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,0BAAA;AAAA,MACV,WAAW,EAAA,CAAG,eAAA,CAAgB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MAGpD,QAAA,EAAA;AAAA,QAAA,YAAA,oBACCA,KAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EACE,MAAA,EAAQ,QAAA,CAAS,SAAA,EAAW,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,GACpC,IAAA,GACA,MAAA,EAAQ,QAAA,CAAS,SAAA,EAAW,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,GACtC,IAAA,GACA,MAAA,EAAQ,QAAA,CAAS,SAAA,EAAW,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,GACtC,IAAA,GACA,EAAA;AAAA,cAEV,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cAER,QAAA,EAAA;AAAA,gCAAAC,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,IAAA;AAAA,oBACN,YAAA,EAAW,WAAA;AAAA,oBACX,UACE,QAAA,IACA,CAAC,MAAA,EAAQ,GAAA,GAAM,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,cAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,oBAEjE,OAAA,EAAS,MACP,MAAA,EAAQ,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,oBAG1D,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,iBAC/B;AAAA,gCACAA,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,IAAA;AAAA,oBACN,YAAA,EAAW,WAAA;AAAA,oBACX,UACE,QAAA,IACA,CAAC,MAAA,EAAQ,GAAA,GAAM,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,cAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,oBAEjE,OAAA,EAAS,MACP,MAAA,EAAQ,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,oBAG1D,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,iBAC/B;AAAA,gCACAA,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,IAAA;AAAA,oBACN,YAAA,EAAW,WAAA;AAAA,oBACX,UACE,QAAA,IACA,CAAC,MAAA,EAAQ,GAAA,GAAM,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,cAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,oBAEjE,OAAA,EAAS,MACP,MAAA,EAAQ,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,oBAG1D,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAC/B;AAAA;AAAA,WACF;AAAA,UACC,mBAAA,CAAoB,CAAC,CAAA,oBACpBA,IAAC,SAAA,EAAA,EAAU,WAAA,EAAY,UAAA,EAAW,SAAA,EAAU,UAAA,EAAW;AAAA,SAAA,EAE3D,CAAA;AAAA,QAID,cAAA,oBACCD,IAAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,UAAA;AAAA,cACL,OAAO,CAAC,MAAA,EAAQ,QAAA,EAAU,WAAA,EAAa,QAAQ,CAAA,CAAE,MAAA;AAAA,gBAAO,CAAC,MAAA,KACvD,MAAA,EAAQ,QAAA,CAAS,MAAM;AAAA,eACzB;AAAA,cACA,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cAEP,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,wBACJC,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,MAAA;AAAA,oBACN,YAAA,EAAW,MAAA;AAAA,oBACX,QAAA,EACE,QAAA,IAAY,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,oBAE7D,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,oBAEvD,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,iBAC3B;AAAA,gBAED,IAAA,CAAK,0BACJA,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,QAAA;AAAA,oBACN,YAAA,EAAW,QAAA;AAAA,oBACX,QAAA,EACE,QAAA,IAAY,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,oBAE/D,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,oBAEzD,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,iBAC7B;AAAA,gBAED,IAAA,CAAK,6BACJA,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,WAAA;AAAA,oBACN,YAAA,EAAW,WAAA;AAAA,oBACX,QAAA,EACE,QAAA,IACA,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,eAAA,EAAgB,CAAE,GAAA,EAAI;AAAA,oBAEtD,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,eAAA,EAAgB,CAAE,GAAA,EAAI;AAAA,oBAE5D,QAAA,kBAAAA,GAAAA,CAACC,WAAA,EAAA,EAAc,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,iBACpC;AAAA,gBAED,IAAA,CAAK,iCACJD,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,QAAA;AAAA,oBACN,YAAA,EAAW,eAAA;AAAA,oBACX,QAAA,EACE,QAAA,IAAY,CAAC,MAAA,CAAO,GAAA,EAAI,CAAE,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,oBAE/D,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,oBAEzD,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AACpC;AAAA;AAAA,WAEJ;AAAA,UACC,mBAAA,CAAoB,CAAC,CAAA,oBACpBA,IAAC,SAAA,EAAA,EAAU,WAAA,EAAY,UAAA,EAAW,SAAA,EAAU,UAAA,EAAW;AAAA,SAAA,EAE3D,CAAA;AAAA,QAID,SAAA,oBACCD,IAAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EACE,MAAA,CAAO,QAAA,CAAS,YAAY,CAAA,GACxB,eACA,MAAA,CAAO,QAAA,CAAS,aAAa,CAAA,GAC3B,aAAA,GACA,EAAA;AAAA,cAER,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cAEP,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,8BACJC,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,YAAA;AAAA,oBACN,YAAA,EAAW,aAAA;AAAA,oBACX,QAAA;AAAA,oBACA,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAA,EAAiB,CAAE,GAAA,EAAI;AAAA,oBAE7D,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,iBAC3B;AAAA,gBAED,IAAA,CAAK,+BACJA,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,aAAA;AAAA,oBACN,YAAA,EAAW,cAAA;AAAA,oBACX,QAAA;AAAA,oBACA,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,EAAM,CAAE,iBAAA,EAAkB,CAAE,GAAA,EAAI;AAAA,oBAE9D,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAClC;AAAA;AAAA,WAEJ;AAAA,UACC,mBAAA,CAAoB,CAAC,CAAA,oBACpBA,IAAC,SAAA,EAAA,EAAU,WAAA,EAAY,UAAA,EAAW,SAAA,EAAU,UAAA,EAAW;AAAA,SAAA,EAE3D,CAAA;AAAA,QAID,QAAA,oBAAYA,GAAAA,CAAC,WAAA,EAAA,EAAY,QAAgB,QAAA,EAAoB;AAAA;AAAA;AAAA,GAChE;AAEJ;AC9NA,SAAS,cAAA,CAAe;AAAA,EACtB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,iBAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,IAAA;AAAA,EACZ,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,MAAM,SAAS,SAAA,CAAU;AAAA,IACvB,UAAA,EAAY;AAAA,MACV,WAAW,SAAA,CAAU;AAAA,QACnB,OAAA,EAAS;AAAA,UACP,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC;AAAA,SAClB;AAAA,QACA,SAAA,EAAW,KAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,MACD,SAAA;AAAA,MACA,KAAK,SAAA,CAAU;AAAA,QACb,WAAA,EAAa,KAAA;AAAA,QACb,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO;AAAA;AACT,OACD,CAAA;AAAA,MACD,YAAY,SAAA,CAAU;AAAA,QACpB,WAAA;AAAA,QACA,gBAAA,EACE;AAAA,OACH;AAAA,KACH;AAAA,IACA,OAAA,EAAS,KAAA;AAAA,IACT,QAAA,EAAU,CAAC,EAAE,MAAA,EAAAE,SAAO,KAAM;AACxB,MAAA,QAAA,CAASA,OAAAA,CAAO,OAAA,GAAU,EAAA,GAAKA,OAAAA,CAAO,SAAS,CAAA;AAAA,IACjD,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,QAAA,IAAY,CAAC,QAAA;AAAA,IACxB,2BAAA,EAA6B,IAAA;AAAA;AAAA,IAC7B,WAAA,EAAa;AAAA,MACX,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,EAAA;AAAA,UACL,sBAAsB,EAAE,IAAA,EAAM,SAAA,GAAY,IAAA,GAAO,QAAW,CAAA;AAAA,UAC5D,8CAAA;AAAA,UACA,iDAAA;AAAA,UACA,+CAAA;AAAA,UACA,8DAAA;AAAA,UACA,6DAAA;AAAA,UACA,CAAC,SAAA,IAAa;AAAA;AAChB,OACF;AAAA,MACA,aAAA,EAAe,CAAC,CAAA,EAAG,KAAA,KAAU;AAE3B,QAAA,IAAI,CAAC,SAAA,IAAa,KAAA,CAAM,GAAA,KAAQ,OAAA,EAAS;AACvC,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA;AACF,GACD,CAAA;AAED,EAAA,uBACEH,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uBAAuB,EAAE,OAAA,EAAS,MAAM,SAAA,GAAY,IAAA,GAAO,QAAW,CAAA;AAAA,QACtE,CAAC,SAAA,IAAa,SAAA;AAAA,QACd,QAAA,IAAY,+BAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,CAAC,4BACAC,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,MAAA;AAAA,YACA,OAAA;AAAA,YACA,QAAA;AAAA,YACA,SAAA,EAAW,gBAAA;AAAA,YACX,OAAA,EAAS;AAAA;AAAA,SACX;AAAA,wBAEFA,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,MAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,QAAA;AAAA,cACA,QAAA,IAAY,qBAAA;AAAA,cACZ;AAAA;AACF;AAAA;AACF;AAAA;AAAA,GACF;AAEJ","file":"index.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const richTextEditorVariants = cva(\n \"relative overflow-hidden rounded-md border transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"border-input bg-transparent\",\n ghost: \"border-transparent bg-transparent\",\n card: \"border-border bg-card shadow-sm\",\n },\n size: {\n default: \"min-h-[200px]\",\n sm: \"min-h-[120px]\",\n lg: \"min-h-[350px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport const toolbarVariants = cva(\n \"flex flex-wrap items-center gap-1 border-b p-2\",\n {\n variants: {\n variant: {\n default: \"border-input bg-muted/30\",\n ghost: \"border-transparent bg-transparent\",\n card: \"border-border bg-muted/50\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport const editorContentVariants = cva(\n \"prose prose-sm dark:prose-invert max-w-none p-4 focus:outline-none\",\n {\n variants: {\n size: {\n default: \"min-h-[150px]\",\n sm: \"min-h-[80px]\",\n lg: \"min-h-[300px]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n","import { Check, Link as LinkIcon, Unlink, X } from \"lucide-react\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Button } from \"@/components/base/button\";\nimport { Input } from \"@/components/base/input\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/base/popover\";\nimport { Toggle } from \"@/components/base/toggle\";\nimport type { LinkPopoverProps } from \"../types\";\n\nfunction LinkPopover({ editor, disabled }: LinkPopoverProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [url, setUrl] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleOpen = useCallback(\n (open: boolean) => {\n if (open) {\n const previousUrl = editor.getAttributes(\"link\").href || \"\";\n setUrl(previousUrl);\n }\n setIsOpen(open);\n },\n [editor],\n );\n\n const handleSetLink = useCallback(() => {\n if (url === \"\") {\n editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n } else {\n editor\n .chain()\n .focus()\n .extendMarkRange(\"link\")\n .setLink({ href: url, target: \"_blank\" })\n .run();\n }\n setIsOpen(false);\n setUrl(\"\");\n }, [editor, url]);\n\n const handleUnsetLink = useCallback(() => {\n editor.chain().focus().unsetLink().run();\n setIsOpen(false);\n setUrl(\"\");\n }, [editor]);\n\n const isActive = editor.isActive(\"link\");\n\n return (\n <Popover open={isOpen} onOpenChange={handleOpen}>\n <PopoverTrigger asChild>\n <Toggle\n size=\"sm\"\n pressed={isActive}\n disabled={disabled}\n aria-label={isActive ? \"Edit link\" : \"Add link\"}\n variant=\"outline\"\n >\n <LinkIcon className=\"size-4\" />\n </Toggle>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-3\" align=\"start\">\n <div className=\"flex flex-col gap-3\">\n <div className=\"text-sm font-medium\">\n {isActive ? \"Edit Link\" : \"Insert Link\"}\n </div>\n <Input\n ref={inputRef}\n type=\"url\"\n placeholder=\"https://example.com\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleSetLink();\n }\n if (e.key === \"Escape\") {\n setIsOpen(false);\n }\n }}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"flex gap-1\">\n <Button type=\"button\" size=\"sm\" onClick={handleSetLink}>\n <Check className=\"size-3.5\" />\n {isActive ? \"Update\" : \"Insert\"}\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setIsOpen(false);\n setUrl(\"\");\n }}\n >\n <X className=\"size-3.5\" />\n Cancel\n </Button>\n </div>\n {isActive && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleUnsetLink}\n className=\"text-destructive hover:text-destructive\"\n >\n <Unlink className=\"size-3.5\" />\n Remove\n </Button>\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { LinkPopover };\n","import {\n Bold,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Strikethrough,\n Underline as UnderlineIcon,\n} from \"lucide-react\";\nimport { Separator } from \"@/components/base/separator\";\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/base/toggle-group\";\nimport { cn } from \"@/lib/utils\";\nimport type { EditorToolbarProps, ToolbarOptions } from \"../types\";\nimport { toolbarVariants } from \"../variants\";\nimport { LinkPopover } from \"./link-popover\";\n\nconst defaultOptions: Required<ToolbarOptions> = {\n headings: true,\n bold: true,\n italic: true,\n underline: true,\n strikethrough: true,\n bulletList: true,\n orderedList: true,\n link: true,\n};\n\nfunction EditorToolbar({\n editor,\n variant,\n disabled,\n className,\n options,\n}: EditorToolbarProps) {\n const opts = { ...defaultOptions, ...options };\n\n const showHeadings = opts.headings;\n const showFormatting =\n opts.bold || opts.italic || opts.underline || opts.strikethrough;\n const showLists = opts.bulletList || opts.orderedList;\n const showLink = opts.link;\n\n // Determine which separators to show based on active groups\n const activeGroups = [showHeadings, showFormatting, showLists, showLink];\n const needsSeparatorAfter = (groupIndex: number): boolean => {\n // Show separator if there's at least one active group after this one\n return activeGroups.slice(groupIndex + 1).some(Boolean);\n };\n\n return (\n <div\n data-slot=\"rich-text-editor-toolbar\"\n className={cn(toolbarVariants({ variant }), className)}\n >\n {/* Heading Group */}\n {showHeadings && (\n <>\n <ToggleGroup\n type=\"single\"\n value={\n editor?.isActive(\"heading\", { level: 1 })\n ? \"h1\"\n : editor?.isActive(\"heading\", { level: 2 })\n ? \"h2\"\n : editor?.isActive(\"heading\", { level: 3 })\n ? \"h3\"\n : \"\"\n }\n size=\"sm\"\n variant=\"outline\"\n >\n <ToggleGroupItem\n value=\"h1\"\n aria-label=\"Heading 1\"\n disabled={\n disabled ||\n !editor?.can().chain().focus().toggleHeading({ level: 1 }).run()\n }\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 1 }).run()\n }\n >\n <Heading1 className=\"size-4\" />\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"h2\"\n aria-label=\"Heading 2\"\n disabled={\n disabled ||\n !editor?.can().chain().focus().toggleHeading({ level: 2 }).run()\n }\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 2 }).run()\n }\n >\n <Heading2 className=\"size-4\" />\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"h3\"\n aria-label=\"Heading 3\"\n disabled={\n disabled ||\n !editor?.can().chain().focus().toggleHeading({ level: 3 }).run()\n }\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 3 }).run()\n }\n >\n <Heading3 className=\"size-4\" />\n </ToggleGroupItem>\n </ToggleGroup>\n {needsSeparatorAfter(0) && (\n <Separator orientation=\"vertical\" className=\"mx-1 h-6\" />\n )}\n </>\n )}\n\n {/* Text Formatting Group */}\n {showFormatting && (\n <>\n <ToggleGroup\n type=\"multiple\"\n value={[\"bold\", \"italic\", \"underline\", \"strike\"].filter((format) =>\n editor?.isActive(format),\n )}\n size=\"sm\"\n variant=\"outline\"\n >\n {opts.bold && (\n <ToggleGroupItem\n value=\"bold\"\n aria-label=\"Bold\"\n disabled={\n disabled || !editor.can().chain().focus().toggleBold().run()\n }\n onClick={() => editor.chain().focus().toggleBold().run()}\n >\n <Bold className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.italic && (\n <ToggleGroupItem\n value=\"italic\"\n aria-label=\"Italic\"\n disabled={\n disabled || !editor.can().chain().focus().toggleItalic().run()\n }\n onClick={() => editor.chain().focus().toggleItalic().run()}\n >\n <Italic className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.underline && (\n <ToggleGroupItem\n value=\"underline\"\n aria-label=\"Underline\"\n disabled={\n disabled ||\n !editor.can().chain().focus().toggleUnderline().run()\n }\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n >\n <UnderlineIcon className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.strikethrough && (\n <ToggleGroupItem\n value=\"strike\"\n aria-label=\"Strikethrough\"\n disabled={\n disabled || !editor.can().chain().focus().toggleStrike().run()\n }\n onClick={() => editor.chain().focus().toggleStrike().run()}\n >\n <Strikethrough className=\"size-4\" />\n </ToggleGroupItem>\n )}\n </ToggleGroup>\n {needsSeparatorAfter(1) && (\n <Separator orientation=\"vertical\" className=\"mx-1 h-6\" />\n )}\n </>\n )}\n\n {/* List Group */}\n {showLists && (\n <>\n <ToggleGroup\n type=\"single\"\n value={\n editor.isActive(\"bulletList\")\n ? \"bulletList\"\n : editor.isActive(\"orderedList\")\n ? \"orderedList\"\n : \"\"\n }\n size=\"sm\"\n variant=\"outline\"\n >\n {opts.bulletList && (\n <ToggleGroupItem\n value=\"bulletList\"\n aria-label=\"Bullet list\"\n disabled={disabled}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n >\n <List className=\"size-4\" />\n </ToggleGroupItem>\n )}\n {opts.orderedList && (\n <ToggleGroupItem\n value=\"orderedList\"\n aria-label=\"Ordered list\"\n disabled={disabled}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n >\n <ListOrdered className=\"size-4\" />\n </ToggleGroupItem>\n )}\n </ToggleGroup>\n {needsSeparatorAfter(2) && (\n <Separator orientation=\"vertical\" className=\"mx-1 h-6\" />\n )}\n </>\n )}\n\n {/* Link */}\n {showLink && <LinkPopover editor={editor} disabled={disabled} />}\n </div>\n );\n}\n\nexport { EditorToolbar };\n","import Link from \"@tiptap/extension-link\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport Underline from \"@tiptap/extension-underline\";\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport { cn } from \"@/lib/utils\";\nimport { EditorToolbar } from \"./toolbar\";\nimport type { RichTextEditorProps } from \"./types\";\nimport { editorContentVariants, richTextEditorVariants } from \"./variants\";\n\nfunction RichTextEditor({\n value,\n onChange,\n placeholder = \"Start typing...\",\n readOnly = false,\n disabled = false,\n multiline = true,\n className,\n variant,\n size,\n contentClassName,\n toolbarClassName,\n toolbarOptions,\n ...props\n}: RichTextEditorProps) {\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n heading: {\n levels: [1, 2, 3],\n },\n codeBlock: false,\n blockquote: false,\n }),\n Underline,\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n class: \"text-primary underline underline-offset-2 cursor-pointer\",\n },\n }),\n Placeholder.configure({\n placeholder,\n emptyEditorClass:\n \"before:content-[attr(data-placeholder)] before:text-muted-foreground before:float-left before:h-0 before:pointer-events-none\",\n }),\n ],\n content: value,\n onUpdate: ({ editor }) => {\n onChange(editor.isEmpty ? \"\" : editor.getHTML());\n },\n editable: !readOnly && !disabled,\n shouldRerenderOnTransaction: true, // Force a re-render when a transaction is made\n editorProps: {\n attributes: {\n class: cn(\n editorContentVariants({ size: multiline ? size : undefined }),\n \"[&_h1]:text-2xl [&_h1]:font-bold [&_h1]:mb-2\",\n \"[&_h2]:text-xl [&_h2]:font-semibold [&_h2]:mb-2\",\n \"[&_h3]:text-lg [&_h3]:font-medium [&_h3]:mb-1\",\n \"[&_ul]:list-disc [&_ul]:ml-4 [&_ol]:list-decimal [&_ol]:ml-4\",\n \"[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2\",\n !multiline && \"min-h-0 py-2\",\n ),\n },\n handleKeyDown: (_, event) => {\n // Prevent Enter key when multiline is disabled\n if (!multiline && event.key === \"Enter\") {\n return true;\n }\n return false;\n },\n },\n });\n\n return (\n <div\n data-slot=\"rich-text-editor\"\n className={cn(\n richTextEditorVariants({ variant, size: multiline ? size : undefined }),\n !multiline && \"min-h-0\",\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n {...props}\n >\n {!readOnly && (\n <EditorToolbar\n editor={editor}\n variant={variant}\n disabled={disabled}\n className={toolbarClassName}\n options={toolbarOptions}\n />\n )}\n <EditorContent\n editor={editor}\n className={cn(\n \"w-full\",\n disabled && \"pointer-events-none\",\n contentClassName,\n )}\n />\n </div>\n );\n}\n\nexport { RichTextEditor, type RichTextEditorProps };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@melv1c/ui-kit",
3
- "version": "0.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A collection of reusable UI components built around Tailwind CSS, shadcn components, and other popular libraries.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -12,6 +12,16 @@
12
12
  "import": "./dist/index.js",
13
13
  "require": "./dist/index.cjs"
14
14
  },
15
+ "./code-editors": {
16
+ "types": "./dist/code-editors/index.d.ts",
17
+ "import": "./dist/code-editors/index.js",
18
+ "require": "./dist/code-editors/index.cjs"
19
+ },
20
+ "./rich-text-editor": {
21
+ "types": "./dist/rich-text-editor/index.d.ts",
22
+ "import": "./dist/rich-text-editor/index.js",
23
+ "require": "./dist/rich-text-editor/index.cjs"
24
+ },
15
25
  "./base.css": "./dist/base.css",
16
26
  "./themes/*.css": "./dist/themes/*.css",
17
27
  "./styles.css": "./styles.css",
@@ -31,13 +41,13 @@
31
41
  "dev": "storybook dev -p 6006",
32
42
  "build": "tsup",
33
43
  "build:watch": "tsup --watch",
44
+ "build:storybook": "storybook build",
34
45
  "clean": "rm -rf dist",
35
46
  "lint": "eslint .",
36
47
  "lint:fix": "eslint . --fix",
37
48
  "format": "prettier --write .",
38
49
  "format:check": "prettier --check .",
39
- "storybook": "storybook dev -p 6006",
40
- "build-storybook": "storybook build"
50
+ "storybook": "storybook dev -p 6006"
41
51
  },
42
52
  "peerDependencies": {
43
53
  "@monaco-editor/react": "^4.7.0",
@@ -1,63 +0,0 @@
1
- 'use strict';
2
-
3
- var classVarianceAuthority = require('class-variance-authority');
4
-
5
- // src/components/editors/code/qualifio-themes.ts
6
- async function defineQualifioThemes(monaco) {
7
- monaco.editor.defineTheme("qualifio", {
8
- base: "vs",
9
- inherit: true,
10
- rules: [],
11
- colors: {
12
- "editor.foreground": "#666666",
13
- "editor.background": "#f8fafb",
14
- "editor.lineHighlightBackground": "#f8fafb",
15
- "editorCursor.foreground": "#666666",
16
- "editorLineNumber.foreground": "#D8D8D8",
17
- "editorLineNumber.activeForeground": "#D8D8D8",
18
- "editor.selectionBackground": "#dff5fb",
19
- "editor.selectionHighlightBackground": "#dff5fb",
20
- "editor.wordHighlightBackground": "#dff5fb",
21
- "editor.wordHighlightStrongBackground": "#dff5fb",
22
- "editor.findMatchBackground": "#FFF7E2",
23
- "editor.findMatchHighlightBackground": "#FFF7E2",
24
- "editorBracketMatch.background": "#f2f2f2",
25
- "editorBracketMatch.border": "#D8D8D8",
26
- "editorIndentGuide.background": "#D8D8D8",
27
- "editorIndentGuide.activeBackground": "#666666",
28
- "editorWidget.background": "#FFFFFF",
29
- "editorWidget.border": "#D8D8D8",
30
- "editorSuggestWidget.background": "#FFFFFF",
31
- "editorSuggestWidget.border": "#D8D8D8",
32
- "editorSuggestWidget.selectedBackground": "#dff5fb",
33
- "editorHoverWidget.background": "#FFFFFF",
34
- "editorHoverWidget.border": "#D8D8D8"
35
- }
36
- });
37
- }
38
- var codeEditorVariants = classVarianceAuthority.cva(
39
- "relative overflow-hidden rounded-md border transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]",
40
- {
41
- variants: {
42
- variant: {
43
- default: "border-input bg-transparent dark:bg-input/30",
44
- ghost: "border-transparent bg-transparent",
45
- card: "border-border bg-card shadow-sm"
46
- },
47
- size: {
48
- default: "h-[300px]",
49
- sm: "h-[150px]",
50
- lg: "h-[500px]"
51
- }
52
- },
53
- defaultVariants: {
54
- variant: "default",
55
- size: "default"
56
- }
57
- }
58
- );
59
-
60
- exports.codeEditorVariants = codeEditorVariants;
61
- exports.defineQualifioThemes = defineQualifioThemes;
62
- //# sourceMappingURL=chunk-2ZWQNZEN.cjs.map
63
- //# sourceMappingURL=chunk-2ZWQNZEN.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/editors/code/qualifio-themes.ts","../src/components/editors/code/variants.ts"],"names":["cva"],"mappings":";;;;;AAMA,eAAsB,qBAAqB,MAAA,EAAgB;AACzD,EAAA,MAAA,CAAO,MAAA,CAAO,YAAY,UAAA,EAAY;AAAA,IACpC,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,OAAO,EAAC;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,mBAAA,EAAqB,SAAA;AAAA,MACrB,mBAAA,EAAqB,SAAA;AAAA,MACrB,gCAAA,EAAkC,SAAA;AAAA,MAClC,yBAAA,EAA2B,SAAA;AAAA,MAC3B,6BAAA,EAA+B,SAAA;AAAA,MAC/B,mCAAA,EAAqC,SAAA;AAAA,MACrC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,qCAAA,EAAuC,SAAA;AAAA,MACvC,gCAAA,EAAkC,SAAA;AAAA,MAClC,sCAAA,EAAwC,SAAA;AAAA,MACxC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,qCAAA,EAAuC,SAAA;AAAA,MACvC,+BAAA,EAAiC,SAAA;AAAA,MACjC,2BAAA,EAA6B,SAAA;AAAA,MAC7B,8BAAA,EAAgC,SAAA;AAAA,MAChC,oCAAA,EAAsC,SAAA;AAAA,MACtC,yBAAA,EAA2B,SAAA;AAAA,MAC3B,qBAAA,EAAuB,SAAA;AAAA,MACvB,gCAAA,EAAkC,SAAA;AAAA,MAClC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,wCAAA,EAA0C,SAAA;AAAA,MAC1C,8BAAA,EAAgC,SAAA;AAAA,MAChC,0BAAA,EAA4B;AAAA;AAC9B,GACD,CAAA;AACH;ACnCO,IAAM,kBAAA,GAAqBA,0BAAA;AAAA,EAChC,kKAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,8CAAA;AAAA,QACT,KAAA,EAAO,mCAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,WAAA;AAAA,QACT,EAAA,EAAI,WAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ","file":"chunk-2ZWQNZEN.cjs","sourcesContent":["import type { Monaco } from \"@monaco-editor/react\";\n\n/**\n * Defines the Qualifio theme for Monaco Editor\n * This function should be called once when Monaco is loaded\n */\nexport async function defineQualifioThemes(monaco: Monaco) {\n monaco.editor.defineTheme(\"qualifio\", {\n base: \"vs\",\n inherit: true,\n rules: [],\n colors: {\n \"editor.foreground\": \"#666666\",\n \"editor.background\": \"#f8fafb\",\n \"editor.lineHighlightBackground\": \"#f8fafb\",\n \"editorCursor.foreground\": \"#666666\",\n \"editorLineNumber.foreground\": \"#D8D8D8\",\n \"editorLineNumber.activeForeground\": \"#D8D8D8\",\n \"editor.selectionBackground\": \"#dff5fb\",\n \"editor.selectionHighlightBackground\": \"#dff5fb\",\n \"editor.wordHighlightBackground\": \"#dff5fb\",\n \"editor.wordHighlightStrongBackground\": \"#dff5fb\",\n \"editor.findMatchBackground\": \"#FFF7E2\",\n \"editor.findMatchHighlightBackground\": \"#FFF7E2\",\n \"editorBracketMatch.background\": \"#f2f2f2\",\n \"editorBracketMatch.border\": \"#D8D8D8\",\n \"editorIndentGuide.background\": \"#D8D8D8\",\n \"editorIndentGuide.activeBackground\": \"#666666\",\n \"editorWidget.background\": \"#FFFFFF\",\n \"editorWidget.border\": \"#D8D8D8\",\n \"editorSuggestWidget.background\": \"#FFFFFF\",\n \"editorSuggestWidget.border\": \"#D8D8D8\",\n \"editorSuggestWidget.selectedBackground\": \"#dff5fb\",\n \"editorHoverWidget.background\": \"#FFFFFF\",\n \"editorHoverWidget.border\": \"#D8D8D8\",\n },\n });\n}\n","import { cva } from \"class-variance-authority\";\n\nexport const codeEditorVariants = cva(\n \"relative overflow-hidden rounded-md border transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"border-input bg-transparent dark:bg-input/30\",\n ghost: \"border-transparent bg-transparent\",\n card: \"border-border bg-card shadow-sm\",\n },\n size: {\n default: \"h-[300px]\",\n sm: \"h-[150px]\",\n lg: \"h-[500px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n"]}
@@ -1,60 +0,0 @@
1
- import { cva } from 'class-variance-authority';
2
-
3
- // src/components/editors/code/qualifio-themes.ts
4
- async function defineQualifioThemes(monaco) {
5
- monaco.editor.defineTheme("qualifio", {
6
- base: "vs",
7
- inherit: true,
8
- rules: [],
9
- colors: {
10
- "editor.foreground": "#666666",
11
- "editor.background": "#f8fafb",
12
- "editor.lineHighlightBackground": "#f8fafb",
13
- "editorCursor.foreground": "#666666",
14
- "editorLineNumber.foreground": "#D8D8D8",
15
- "editorLineNumber.activeForeground": "#D8D8D8",
16
- "editor.selectionBackground": "#dff5fb",
17
- "editor.selectionHighlightBackground": "#dff5fb",
18
- "editor.wordHighlightBackground": "#dff5fb",
19
- "editor.wordHighlightStrongBackground": "#dff5fb",
20
- "editor.findMatchBackground": "#FFF7E2",
21
- "editor.findMatchHighlightBackground": "#FFF7E2",
22
- "editorBracketMatch.background": "#f2f2f2",
23
- "editorBracketMatch.border": "#D8D8D8",
24
- "editorIndentGuide.background": "#D8D8D8",
25
- "editorIndentGuide.activeBackground": "#666666",
26
- "editorWidget.background": "#FFFFFF",
27
- "editorWidget.border": "#D8D8D8",
28
- "editorSuggestWidget.background": "#FFFFFF",
29
- "editorSuggestWidget.border": "#D8D8D8",
30
- "editorSuggestWidget.selectedBackground": "#dff5fb",
31
- "editorHoverWidget.background": "#FFFFFF",
32
- "editorHoverWidget.border": "#D8D8D8"
33
- }
34
- });
35
- }
36
- var codeEditorVariants = cva(
37
- "relative overflow-hidden rounded-md border transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]",
38
- {
39
- variants: {
40
- variant: {
41
- default: "border-input bg-transparent dark:bg-input/30",
42
- ghost: "border-transparent bg-transparent",
43
- card: "border-border bg-card shadow-sm"
44
- },
45
- size: {
46
- default: "h-[300px]",
47
- sm: "h-[150px]",
48
- lg: "h-[500px]"
49
- }
50
- },
51
- defaultVariants: {
52
- variant: "default",
53
- size: "default"
54
- }
55
- }
56
- );
57
-
58
- export { codeEditorVariants, defineQualifioThemes };
59
- //# sourceMappingURL=chunk-RZJFYAJW.js.map
60
- //# sourceMappingURL=chunk-RZJFYAJW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/editors/code/qualifio-themes.ts","../src/components/editors/code/variants.ts"],"names":[],"mappings":";;;AAMA,eAAsB,qBAAqB,MAAA,EAAgB;AACzD,EAAA,MAAA,CAAO,MAAA,CAAO,YAAY,UAAA,EAAY;AAAA,IACpC,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,OAAO,EAAC;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,mBAAA,EAAqB,SAAA;AAAA,MACrB,mBAAA,EAAqB,SAAA;AAAA,MACrB,gCAAA,EAAkC,SAAA;AAAA,MAClC,yBAAA,EAA2B,SAAA;AAAA,MAC3B,6BAAA,EAA+B,SAAA;AAAA,MAC/B,mCAAA,EAAqC,SAAA;AAAA,MACrC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,qCAAA,EAAuC,SAAA;AAAA,MACvC,gCAAA,EAAkC,SAAA;AAAA,MAClC,sCAAA,EAAwC,SAAA;AAAA,MACxC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,qCAAA,EAAuC,SAAA;AAAA,MACvC,+BAAA,EAAiC,SAAA;AAAA,MACjC,2BAAA,EAA6B,SAAA;AAAA,MAC7B,8BAAA,EAAgC,SAAA;AAAA,MAChC,oCAAA,EAAsC,SAAA;AAAA,MACtC,yBAAA,EAA2B,SAAA;AAAA,MAC3B,qBAAA,EAAuB,SAAA;AAAA,MACvB,gCAAA,EAAkC,SAAA;AAAA,MAClC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,wCAAA,EAA0C,SAAA;AAAA,MAC1C,8BAAA,EAAgC,SAAA;AAAA,MAChC,0BAAA,EAA4B;AAAA;AAC9B,GACD,CAAA;AACH;ACnCO,IAAM,kBAAA,GAAqB,GAAA;AAAA,EAChC,kKAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,8CAAA;AAAA,QACT,KAAA,EAAO,mCAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,WAAA;AAAA,QACT,EAAA,EAAI,WAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ","file":"chunk-RZJFYAJW.js","sourcesContent":["import type { Monaco } from \"@monaco-editor/react\";\n\n/**\n * Defines the Qualifio theme for Monaco Editor\n * This function should be called once when Monaco is loaded\n */\nexport async function defineQualifioThemes(monaco: Monaco) {\n monaco.editor.defineTheme(\"qualifio\", {\n base: \"vs\",\n inherit: true,\n rules: [],\n colors: {\n \"editor.foreground\": \"#666666\",\n \"editor.background\": \"#f8fafb\",\n \"editor.lineHighlightBackground\": \"#f8fafb\",\n \"editorCursor.foreground\": \"#666666\",\n \"editorLineNumber.foreground\": \"#D8D8D8\",\n \"editorLineNumber.activeForeground\": \"#D8D8D8\",\n \"editor.selectionBackground\": \"#dff5fb\",\n \"editor.selectionHighlightBackground\": \"#dff5fb\",\n \"editor.wordHighlightBackground\": \"#dff5fb\",\n \"editor.wordHighlightStrongBackground\": \"#dff5fb\",\n \"editor.findMatchBackground\": \"#FFF7E2\",\n \"editor.findMatchHighlightBackground\": \"#FFF7E2\",\n \"editorBracketMatch.background\": \"#f2f2f2\",\n \"editorBracketMatch.border\": \"#D8D8D8\",\n \"editorIndentGuide.background\": \"#D8D8D8\",\n \"editorIndentGuide.activeBackground\": \"#666666\",\n \"editorWidget.background\": \"#FFFFFF\",\n \"editorWidget.border\": \"#D8D8D8\",\n \"editorSuggestWidget.background\": \"#FFFFFF\",\n \"editorSuggestWidget.border\": \"#D8D8D8\",\n \"editorSuggestWidget.selectedBackground\": \"#dff5fb\",\n \"editorHoverWidget.background\": \"#FFFFFF\",\n \"editorHoverWidget.border\": \"#D8D8D8\",\n },\n });\n}\n","import { cva } from \"class-variance-authority\";\n\nexport const codeEditorVariants = cva(\n \"relative overflow-hidden rounded-md border transition-[color,box-shadow] outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"border-input bg-transparent dark:bg-input/30\",\n ghost: \"border-transparent bg-transparent\",\n card: \"border-border bg-card shadow-sm\",\n },\n size: {\n default: \"h-[300px]\",\n sm: \"h-[150px]\",\n lg: \"h-[500px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n"]}
@@ -1,73 +0,0 @@
1
- import { defineQualifioThemes, codeEditorVariants } from './chunk-RZJFYAJW.js';
2
- import { Skeleton } from './chunk-PYHBC3IQ.js';
3
- import { cn } from './chunk-WZ2GOU2J.js';
4
- import './chunk-PZ5AY32C.js';
5
- import { DiffEditor } from '@monaco-editor/react';
6
- import { useMemo } from 'react';
7
- import { jsx } from 'react/jsx-runtime';
8
-
9
- function LoadingFallback() {
10
- return /* @__PURE__ */ jsx(Skeleton, { className: "h-full w-full" });
11
- }
12
- function CodeDiffEditor({
13
- original,
14
- modified,
15
- language,
16
- theme = "qualifio",
17
- readOnly = false,
18
- disabled = false,
19
- className,
20
- variant,
21
- size,
22
- onMount,
23
- options,
24
- ...props
25
- }) {
26
- const editorOptions = useMemo(
27
- () => ({
28
- readOnly: readOnly || disabled,
29
- fontSize: 14,
30
- fontFamily: "'Menlo', 'Monaco', Consolas, monospace",
31
- scrollBeyondLastLine: false,
32
- automaticLayout: true,
33
- padding: { top: 12, bottom: 12 },
34
- renderSideBySide: true,
35
- enableSplitViewResizing: true,
36
- ...options
37
- }),
38
- [readOnly, disabled, options]
39
- );
40
- return /* @__PURE__ */ jsx(
41
- "div",
42
- {
43
- "data-slot": "code-diff-editor",
44
- className: cn(
45
- codeEditorVariants({ variant, size }),
46
- disabled && "cursor-not-allowed opacity-50",
47
- className
48
- ),
49
- ...props,
50
- children: /* @__PURE__ */ jsx(
51
- DiffEditor,
52
- {
53
- language,
54
- theme,
55
- original,
56
- modified,
57
- beforeMount: (monaco) => {
58
- defineQualifioThemes(monaco).catch((error) => {
59
- console.error("Failed to define Qualifio themes:", error);
60
- });
61
- },
62
- onMount,
63
- options: editorOptions,
64
- loading: /* @__PURE__ */ jsx(LoadingFallback, {})
65
- }
66
- )
67
- }
68
- );
69
- }
70
-
71
- export { CodeDiffEditor };
72
- //# sourceMappingURL=code-diff-editor-IT2RMVDC.js.map
73
- //# sourceMappingURL=code-diff-editor-IT2RMVDC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/editors/code/code-diff-editor.tsx"],"names":[],"mappings":";;;;;;;;AAwBA,SAAS,eAAA,GAAkB;AACzB,EAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,eAAA,EAAgB,CAAA;AAC7C;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,UAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,aAAA,GAAgB,OAAA;AAAA,IACpB,OAAO;AAAA,MACL,UAAU,QAAA,IAAY,QAAA;AAAA,MACtB,QAAA,EAAU,EAAA;AAAA,MACV,UAAA,EAAY,wCAAA;AAAA,MACZ,oBAAA,EAAsB,KAAA;AAAA,MACtB,eAAA,EAAiB,IAAA;AAAA,MACjB,OAAA,EAAS,EAAE,GAAA,EAAK,EAAA,EAAI,QAAQ,EAAA,EAAG;AAAA,MAC/B,gBAAA,EAAkB,IAAA;AAAA,MAClB,uBAAA,EAAyB,IAAA;AAAA,MACzB,GAAG;AAAA,KACL,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,QAAA,EAAU,OAAO;AAAA,GAC9B;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,kBAAA,CAAmB,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QACpC,QAAA,IAAY,+BAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,QAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA;AAAA,UACA,QAAA;AAAA,UACA,WAAA,EAAa,CAAC,MAAA,KAAW;AACvB,YAAA,oBAAA,CAAqB,MAAM,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAU;AAC5C,cAAA,OAAA,CAAQ,KAAA,CAAM,qCAAqC,KAAK,CAAA;AAAA,YAC1D,CAAC,CAAA;AAAA,UACH,CAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA,EAAS,aAAA;AAAA,UACT,OAAA,sBAAU,eAAA,EAAA,EAAgB;AAAA;AAAA;AAC5B;AAAA,GACF;AAEJ","file":"code-diff-editor-IT2RMVDC.js","sourcesContent":["import { DiffEditor, type Monaco } from \"@monaco-editor/react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport type { editor } from \"monaco-editor\";\nimport { type HTMLAttributes, useMemo } from \"react\";\nimport { Skeleton } from \"@/components/base/skeleton\";\nimport { cn } from \"@/lib/utils\";\nimport { defineQualifioThemes } from \"./qualifio-themes\";\nimport type { EditorTheme, SupportedLanguage } from \"./types\";\nimport { codeEditorVariants } from \"./variants\";\n\ninterface DiffEditorProps\n extends\n VariantProps<typeof codeEditorVariants>,\n Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n original?: string;\n modified?: string;\n language: SupportedLanguage;\n theme?: EditorTheme;\n readOnly?: boolean;\n disabled?: boolean;\n onMount?: (editor: editor.IStandaloneDiffEditor, monaco: Monaco) => void;\n options?: editor.IDiffEditorConstructionOptions;\n}\n\nfunction LoadingFallback() {\n return <Skeleton className=\"h-full w-full\" />;\n}\n\nfunction CodeDiffEditor({\n original,\n modified,\n language,\n theme = \"qualifio\",\n readOnly = false,\n disabled = false,\n className,\n variant,\n size,\n onMount,\n options,\n ...props\n}: DiffEditorProps) {\n const editorOptions = useMemo(\n () => ({\n readOnly: readOnly || disabled,\n fontSize: 14,\n fontFamily: \"'Menlo', 'Monaco', Consolas, monospace\",\n scrollBeyondLastLine: false,\n automaticLayout: true,\n padding: { top: 12, bottom: 12 },\n renderSideBySide: true,\n enableSplitViewResizing: true,\n ...options,\n }),\n [readOnly, disabled, options],\n );\n\n return (\n <div\n data-slot=\"code-diff-editor\"\n className={cn(\n codeEditorVariants({ variant, size }),\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n {...props}\n >\n <DiffEditor\n language={language}\n theme={theme}\n original={original}\n modified={modified}\n beforeMount={(monaco) => {\n defineQualifioThemes(monaco).catch((error) => {\n console.error(\"Failed to define Qualifio themes:\", error);\n });\n }}\n onMount={onMount}\n options={editorOptions}\n loading={<LoadingFallback />}\n />\n </div>\n );\n}\n\nexport { CodeDiffEditor, type DiffEditorProps };\n"]}
@@ -1,75 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk2ZWQNZEN_cjs = require('./chunk-2ZWQNZEN.cjs');
4
- var chunkQ4GFV3J3_cjs = require('./chunk-Q4GFV3J3.cjs');
5
- var chunkI7WHASOO_cjs = require('./chunk-I7WHASOO.cjs');
6
- require('./chunk-Q7SFCCGT.cjs');
7
- var react$1 = require('@monaco-editor/react');
8
- var react = require('react');
9
- var jsxRuntime = require('react/jsx-runtime');
10
-
11
- function LoadingFallback() {
12
- return /* @__PURE__ */ jsxRuntime.jsx(chunkQ4GFV3J3_cjs.Skeleton, { className: "h-full w-full" });
13
- }
14
- function CodeDiffEditor({
15
- original,
16
- modified,
17
- language,
18
- theme = "qualifio",
19
- readOnly = false,
20
- disabled = false,
21
- className,
22
- variant,
23
- size,
24
- onMount,
25
- options,
26
- ...props
27
- }) {
28
- const editorOptions = react.useMemo(
29
- () => ({
30
- readOnly: readOnly || disabled,
31
- fontSize: 14,
32
- fontFamily: "'Menlo', 'Monaco', Consolas, monospace",
33
- scrollBeyondLastLine: false,
34
- automaticLayout: true,
35
- padding: { top: 12, bottom: 12 },
36
- renderSideBySide: true,
37
- enableSplitViewResizing: true,
38
- ...options
39
- }),
40
- [readOnly, disabled, options]
41
- );
42
- return /* @__PURE__ */ jsxRuntime.jsx(
43
- "div",
44
- {
45
- "data-slot": "code-diff-editor",
46
- className: chunkI7WHASOO_cjs.cn(
47
- chunk2ZWQNZEN_cjs.codeEditorVariants({ variant, size }),
48
- disabled && "cursor-not-allowed opacity-50",
49
- className
50
- ),
51
- ...props,
52
- children: /* @__PURE__ */ jsxRuntime.jsx(
53
- react$1.DiffEditor,
54
- {
55
- language,
56
- theme,
57
- original,
58
- modified,
59
- beforeMount: (monaco) => {
60
- chunk2ZWQNZEN_cjs.defineQualifioThemes(monaco).catch((error) => {
61
- console.error("Failed to define Qualifio themes:", error);
62
- });
63
- },
64
- onMount,
65
- options: editorOptions,
66
- loading: /* @__PURE__ */ jsxRuntime.jsx(LoadingFallback, {})
67
- }
68
- )
69
- }
70
- );
71
- }
72
-
73
- exports.CodeDiffEditor = CodeDiffEditor;
74
- //# sourceMappingURL=code-diff-editor-J24VGXHL.cjs.map
75
- //# sourceMappingURL=code-diff-editor-J24VGXHL.cjs.map