@melv1c/ui-kit 1.0.0 → 1.1.0
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.
- package/dist/base.css +5 -0
- package/dist/chunk-5SGT7Y7J.js +172 -0
- package/dist/chunk-5SGT7Y7J.js.map +1 -0
- package/dist/chunk-RKE7ZPNV.cjs +180 -0
- package/dist/chunk-RKE7ZPNV.cjs.map +1 -0
- package/dist/code-editors/index.cjs +157 -0
- package/dist/code-editors/index.cjs.map +1 -0
- package/dist/code-editors/index.d.cts +46 -0
- package/dist/code-editors/index.d.ts +46 -0
- package/dist/code-editors/index.js +154 -0
- package/dist/code-editors/index.js.map +1 -0
- package/dist/index.cjs +426 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +66 -116
- package/dist/index.d.ts +66 -116
- package/dist/index.js +414 -27
- package/dist/index.js.map +1 -1
- package/dist/locales/index.cjs +7 -7
- package/dist/locales/index.d.cts +132 -6
- package/dist/locales/index.d.ts +132 -6
- package/dist/locales/index.js +1 -1
- package/dist/{rich-text-editor-MOJDWQTI.cjs → rich-text-editor/index.cjs} +5 -5
- package/dist/rich-text-editor/index.cjs.map +1 -0
- package/dist/rich-text-editor/index.d.cts +50 -0
- package/dist/rich-text-editor/index.d.ts +50 -0
- package/dist/{rich-text-editor-JUERRDHQ.js → rich-text-editor/index.js} +5 -5
- package/dist/rich-text-editor/index.js.map +1 -0
- package/package.json +11 -1
- package/dist/chunk-2ZWQNZEN.cjs +0 -63
- package/dist/chunk-2ZWQNZEN.cjs.map +0 -1
- package/dist/chunk-4H5OSMBC.js +0 -52
- package/dist/chunk-4H5OSMBC.js.map +0 -1
- package/dist/chunk-QV4CTFLS.cjs +0 -60
- package/dist/chunk-QV4CTFLS.cjs.map +0 -1
- package/dist/chunk-RZJFYAJW.js +0 -60
- package/dist/chunk-RZJFYAJW.js.map +0 -1
- package/dist/code-diff-editor-IT2RMVDC.js +0 -73
- package/dist/code-diff-editor-IT2RMVDC.js.map +0 -1
- package/dist/code-diff-editor-J24VGXHL.cjs +0 -75
- package/dist/code-diff-editor-J24VGXHL.cjs.map +0 -1
- package/dist/code-editor-DK64HVFQ.cjs +0 -84
- package/dist/code-editor-DK64HVFQ.cjs.map +0 -1
- package/dist/code-editor-EJIJXZLN.js +0 -82
- package/dist/code-editor-EJIJXZLN.js.map +0 -1
- package/dist/rich-text-editor-JUERRDHQ.js.map +0 -1
- package/dist/rich-text-editor-MOJDWQTI.cjs.map +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Monaco } from '@monaco-editor/react';
|
|
3
|
+
export { DiffEditorProps } from '@monaco-editor/react';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
import { editor } from 'monaco-editor';
|
|
6
|
+
import { HTMLAttributes } from 'react';
|
|
7
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
8
|
+
|
|
9
|
+
type SupportedLanguage = "javascript" | "typescript" | "json" | "html" | "css" | "markdown" | "python" | "sql" | "xml" | "yaml" | "plaintext";
|
|
10
|
+
type EditorTheme = "light" | "vs-dark" | "qualifio";
|
|
11
|
+
|
|
12
|
+
declare const codeEditorVariants: (props?: ({
|
|
13
|
+
variant?: "default" | "ghost" | "card" | null | undefined;
|
|
14
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
15
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
16
|
+
|
|
17
|
+
interface CodeDiffEditorProps extends VariantProps<typeof codeEditorVariants>, Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
18
|
+
original?: string;
|
|
19
|
+
modified?: string;
|
|
20
|
+
language: SupportedLanguage;
|
|
21
|
+
theme?: EditorTheme;
|
|
22
|
+
readOnly?: boolean;
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
onMount?: (editor: editor.IStandaloneDiffEditor, monaco: Monaco) => void;
|
|
25
|
+
options?: editor.IDiffEditorConstructionOptions;
|
|
26
|
+
}
|
|
27
|
+
declare function CodeDiffEditor({ original, modified, language, theme, readOnly, disabled, className, variant, size, onMount, options, ...props }: CodeDiffEditorProps): react_jsx_runtime.JSX.Element;
|
|
28
|
+
|
|
29
|
+
interface CodeEditorProps extends VariantProps<typeof codeEditorVariants>, Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
30
|
+
value?: string;
|
|
31
|
+
defaultValue?: string;
|
|
32
|
+
language: SupportedLanguage;
|
|
33
|
+
theme?: EditorTheme;
|
|
34
|
+
readOnly?: boolean;
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
lineNumbers?: boolean;
|
|
37
|
+
wordWrap?: boolean;
|
|
38
|
+
minimap?: boolean;
|
|
39
|
+
onChange?: (value: string | undefined) => void;
|
|
40
|
+
onMount?: (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => void;
|
|
41
|
+
onValidate?: (markers: editor.IMarker[]) => void;
|
|
42
|
+
options?: editor.IStandaloneEditorConstructionOptions;
|
|
43
|
+
}
|
|
44
|
+
declare function CodeEditor({ value, defaultValue, language, theme, readOnly, disabled, lineNumbers, wordWrap, minimap, className, variant, size, onChange, onMount, onValidate, options, ...props }: CodeEditorProps): react_jsx_runtime.JSX.Element;
|
|
45
|
+
|
|
46
|
+
export { CodeDiffEditor, CodeEditor, type CodeEditorProps, type EditorTheme, type SupportedLanguage };
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Skeleton } from '../chunk-PYHBC3IQ.js';
|
|
2
|
+
import { cn } from '../chunk-WZ2GOU2J.js';
|
|
3
|
+
import '../chunk-PZ5AY32C.js';
|
|
4
|
+
import { DiffEditor, Editor } from '@monaco-editor/react';
|
|
5
|
+
import { useMemo } from 'react';
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
|
+
import { jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var codeEditorVariants = cva(
|
|
10
|
+
"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]",
|
|
11
|
+
{
|
|
12
|
+
variants: {
|
|
13
|
+
variant: {
|
|
14
|
+
default: "border-input bg-transparent dark:bg-input/30",
|
|
15
|
+
ghost: "border-transparent bg-transparent",
|
|
16
|
+
card: "border-border bg-card shadow-sm"
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
default: "h-[300px]",
|
|
20
|
+
sm: "h-[150px]",
|
|
21
|
+
lg: "h-[500px]"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
defaultVariants: {
|
|
25
|
+
variant: "default",
|
|
26
|
+
size: "default"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
function LoadingFallback() {
|
|
31
|
+
return /* @__PURE__ */ jsx(Skeleton, { className: "h-full w-full" });
|
|
32
|
+
}
|
|
33
|
+
function CodeDiffEditor({
|
|
34
|
+
original,
|
|
35
|
+
modified,
|
|
36
|
+
language,
|
|
37
|
+
theme = "qualifio",
|
|
38
|
+
readOnly = false,
|
|
39
|
+
disabled = false,
|
|
40
|
+
className,
|
|
41
|
+
variant,
|
|
42
|
+
size,
|
|
43
|
+
onMount,
|
|
44
|
+
options,
|
|
45
|
+
...props
|
|
46
|
+
}) {
|
|
47
|
+
const editorOptions = useMemo(
|
|
48
|
+
() => ({
|
|
49
|
+
readOnly: readOnly || disabled,
|
|
50
|
+
fontSize: 14,
|
|
51
|
+
fontFamily: "'Menlo', 'Monaco', Consolas, monospace",
|
|
52
|
+
scrollBeyondLastLine: false,
|
|
53
|
+
automaticLayout: true,
|
|
54
|
+
padding: { top: 12, bottom: 12 },
|
|
55
|
+
renderSideBySide: true,
|
|
56
|
+
enableSplitViewResizing: true,
|
|
57
|
+
...options
|
|
58
|
+
}),
|
|
59
|
+
[readOnly, disabled, options]
|
|
60
|
+
);
|
|
61
|
+
return /* @__PURE__ */ jsx(
|
|
62
|
+
"div",
|
|
63
|
+
{
|
|
64
|
+
"data-slot": "code-diff-editor",
|
|
65
|
+
className: cn(
|
|
66
|
+
codeEditorVariants({ variant, size }),
|
|
67
|
+
disabled && "cursor-not-allowed opacity-50",
|
|
68
|
+
className
|
|
69
|
+
),
|
|
70
|
+
...props,
|
|
71
|
+
children: /* @__PURE__ */ jsx(
|
|
72
|
+
DiffEditor,
|
|
73
|
+
{
|
|
74
|
+
language,
|
|
75
|
+
theme,
|
|
76
|
+
original,
|
|
77
|
+
modified,
|
|
78
|
+
onMount,
|
|
79
|
+
options: editorOptions,
|
|
80
|
+
loading: /* @__PURE__ */ jsx(LoadingFallback, {})
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
function LoadingFallback2() {
|
|
87
|
+
return /* @__PURE__ */ jsx(Skeleton, { className: "h-full w-full" });
|
|
88
|
+
}
|
|
89
|
+
function CodeEditor({
|
|
90
|
+
value,
|
|
91
|
+
defaultValue,
|
|
92
|
+
language,
|
|
93
|
+
theme = "qualifio",
|
|
94
|
+
readOnly = false,
|
|
95
|
+
disabled = false,
|
|
96
|
+
lineNumbers = true,
|
|
97
|
+
wordWrap = false,
|
|
98
|
+
minimap = false,
|
|
99
|
+
className,
|
|
100
|
+
variant,
|
|
101
|
+
size,
|
|
102
|
+
onChange,
|
|
103
|
+
onMount,
|
|
104
|
+
onValidate,
|
|
105
|
+
options,
|
|
106
|
+
...props
|
|
107
|
+
}) {
|
|
108
|
+
const editorOptions = useMemo(
|
|
109
|
+
() => ({
|
|
110
|
+
readOnly: readOnly || disabled,
|
|
111
|
+
lineNumbers: lineNumbers ? "on" : "off",
|
|
112
|
+
wordWrap: wordWrap ? "on" : "off",
|
|
113
|
+
minimap: { enabled: minimap },
|
|
114
|
+
fontSize: 14,
|
|
115
|
+
fontFamily: "'Menlo', 'Monaco', Consolas, monospace",
|
|
116
|
+
scrollBeyondLastLine: false,
|
|
117
|
+
automaticLayout: true,
|
|
118
|
+
padding: { top: 12, bottom: 12 },
|
|
119
|
+
bracketPairColorization: { enabled: true },
|
|
120
|
+
...options
|
|
121
|
+
}),
|
|
122
|
+
[readOnly, disabled, lineNumbers, wordWrap, minimap, options]
|
|
123
|
+
);
|
|
124
|
+
return /* @__PURE__ */ jsx(
|
|
125
|
+
"div",
|
|
126
|
+
{
|
|
127
|
+
"data-slot": "code-editor",
|
|
128
|
+
className: cn(
|
|
129
|
+
codeEditorVariants({ variant, size }),
|
|
130
|
+
disabled && "cursor-not-allowed opacity-50",
|
|
131
|
+
className
|
|
132
|
+
),
|
|
133
|
+
...props,
|
|
134
|
+
children: /* @__PURE__ */ jsx(
|
|
135
|
+
Editor,
|
|
136
|
+
{
|
|
137
|
+
language,
|
|
138
|
+
theme,
|
|
139
|
+
value,
|
|
140
|
+
defaultValue,
|
|
141
|
+
onChange,
|
|
142
|
+
onMount,
|
|
143
|
+
onValidate,
|
|
144
|
+
options: editorOptions,
|
|
145
|
+
loading: /* @__PURE__ */ jsx(LoadingFallback2, {})
|
|
146
|
+
}
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export { CodeDiffEditor, CodeEditor };
|
|
153
|
+
//# sourceMappingURL=index.js.map
|
|
154
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/optionals/code-editors/variants.ts","../../src/components/optionals/code-editors/code-diff-editor.tsx","../../src/components/optionals/code-editors/code-editor.tsx"],"names":["LoadingFallback","jsx","useMemo"],"mappings":"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","file":"index.js","sourcesContent":["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","import { Skeleton } from \"@/components/base/skeleton\";\nimport { cn } from \"@/lib/utils\";\nimport {\n DiffEditor,\n type DiffEditorProps,\n type Monaco,\n} from \"@monaco-editor/react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport type { editor } from \"monaco-editor\";\nimport { type HTMLAttributes, useMemo } from \"react\";\nimport type { EditorTheme, SupportedLanguage } from \"./types\";\nimport { codeEditorVariants } from \"./variants\";\n\ninterface CodeDiffEditorProps\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}: CodeDiffEditorProps) {\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 onMount={onMount}\n options={editorOptions}\n loading={<LoadingFallback />}\n />\n </div>\n );\n}\n\nexport { CodeDiffEditor, type DiffEditorProps };\n","import { Skeleton } from \"@/components/base/skeleton\";\nimport { cn } from \"@/lib/utils\";\nimport { Editor, 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 type { EditorTheme, SupportedLanguage } from \"./types\";\nimport { codeEditorVariants } from \"./variants\";\n\ninterface CodeEditorProps\n extends\n VariantProps<typeof codeEditorVariants>,\n Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n value?: string;\n defaultValue?: string;\n language: SupportedLanguage;\n theme?: EditorTheme;\n readOnly?: boolean;\n disabled?: boolean;\n lineNumbers?: boolean;\n wordWrap?: boolean;\n minimap?: boolean;\n onChange?: (value: string | undefined) => void;\n onMount?: (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => void;\n onValidate?: (markers: editor.IMarker[]) => void;\n options?: editor.IStandaloneEditorConstructionOptions;\n}\n\nfunction LoadingFallback() {\n return <Skeleton className=\"h-full w-full\" />;\n}\n\nfunction CodeEditor({\n value,\n defaultValue,\n language,\n theme = \"qualifio\",\n readOnly = false,\n disabled = false,\n lineNumbers = true,\n wordWrap = false,\n minimap = false,\n className,\n variant,\n size,\n onChange,\n onMount,\n onValidate,\n options,\n ...props\n}: CodeEditorProps) {\n const editorOptions = useMemo(\n () => ({\n readOnly: readOnly || disabled,\n lineNumbers: lineNumbers ? (\"on\" as const) : (\"off\" as const),\n wordWrap: wordWrap ? (\"on\" as const) : (\"off\" as const),\n minimap: { enabled: minimap },\n fontSize: 14,\n fontFamily: \"'Menlo', 'Monaco', Consolas, monospace\",\n scrollBeyondLastLine: false,\n automaticLayout: true,\n padding: { top: 12, bottom: 12 },\n bracketPairColorization: { enabled: true },\n ...options,\n }),\n [readOnly, disabled, lineNumbers, wordWrap, minimap, options],\n );\n\n return (\n <div\n data-slot=\"code-editor\"\n className={cn(\n codeEditorVariants({ variant, size }),\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n {...props}\n >\n <Editor\n language={language}\n theme={theme}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n onMount={onMount}\n onValidate={onValidate}\n options={editorOptions}\n loading={<LoadingFallback />}\n />\n </div>\n );\n}\n\nexport type { EditorTheme, SupportedLanguage } from \"./types\";\nexport { CodeEditor, type CodeEditorProps };\n"]}
|