@ginia/ui 0.1.18 → 0.1.20

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.
@@ -1,13 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- interface RichTextEditorProps {
4
- value: string;
5
- onChange: (content: string) => void;
6
- placeholder?: string;
7
- height?: number;
8
- className?: string;
9
- readOnly?: boolean;
10
- }
11
- declare function RichTextEditor({ value, onChange, placeholder, height, className, readOnly, }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
12
-
13
- export { RichTextEditor, type RichTextEditorProps };
@@ -1,262 +0,0 @@
1
- "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import React from "react";
4
- import { useEditor, EditorContent } from "@tiptap/react";
5
- import StarterKit from "@tiptap/starter-kit";
6
- import TextAlign from "@tiptap/extension-text-align";
7
- import Color from "@tiptap/extension-color";
8
- import { TextStyle } from "@tiptap/extension-text-style";
9
- import ImageExtension from "@tiptap/extension-image";
10
- import LinkExtension from "@tiptap/extension-link";
11
- import Placeholder from "@tiptap/extension-placeholder";
12
- import {
13
- Bold,
14
- Italic,
15
- Strikethrough,
16
- List,
17
- ListOrdered,
18
- Link,
19
- AlignLeft,
20
- AlignCenter,
21
- AlignRight,
22
- Image as ImageIcon,
23
- Heading1,
24
- Heading2,
25
- Heading3
26
- } from "lucide-react";
27
- import { cn } from "../../../lib/utils";
28
- function ToolbarButton({
29
- onClick,
30
- children,
31
- title,
32
- isActive = false
33
- }) {
34
- return /* @__PURE__ */ jsx(
35
- "button",
36
- {
37
- type: "button",
38
- onClick,
39
- title,
40
- className: cn(
41
- "rounded p-2 transition-colors",
42
- isActive ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-muted"
43
- ),
44
- children
45
- }
46
- );
47
- }
48
- function RichTextEditor({
49
- value,
50
- onChange,
51
- placeholder = "Escribe aqu\xED...",
52
- height = 200,
53
- className = "",
54
- readOnly = false
55
- }) {
56
- const editor = useEditor({
57
- extensions: [
58
- StarterKit,
59
- TextAlign.configure({
60
- types: ["heading", "paragraph"]
61
- }),
62
- Color.configure({ types: [TextStyle.name] }),
63
- TextStyle,
64
- ImageExtension.configure({
65
- HTMLAttributes: {
66
- class: "max-w-full h-auto rounded-lg"
67
- }
68
- }),
69
- LinkExtension.configure({
70
- openOnClick: false
71
- }),
72
- Placeholder.configure({
73
- placeholder
74
- })
75
- ],
76
- content: value,
77
- editable: !readOnly,
78
- immediatelyRender: false,
79
- onUpdate: ({ editor: e }) => {
80
- onChange(e.getHTML());
81
- },
82
- editorProps: {
83
- attributes: {
84
- class: "prose prose-sm mx-auto focus:outline-none max-w-none",
85
- style: `min-height: ${height}px;`
86
- }
87
- }
88
- });
89
- React.useEffect(() => {
90
- if (editor && editor.getHTML() !== value) {
91
- editor.commands.setContent(value);
92
- }
93
- }, [value, editor]);
94
- if (!editor) {
95
- return /* @__PURE__ */ jsx("div", { className: cn("overflow-hidden rounded-lg border border-border", className), children: /* @__PURE__ */ jsx("div", { className: "flex h-32 animate-pulse items-center justify-center rounded bg-muted text-muted-foreground", children: "Cargando editor..." }) });
96
- }
97
- return /* @__PURE__ */ jsxs(
98
- "div",
99
- {
100
- "data-slot": "rich-text-editor",
101
- className: cn("overflow-hidden rounded-lg border border-border", className),
102
- children: [
103
- !readOnly && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-1 border-b border-border bg-muted/50 p-2", children: [
104
- /* @__PURE__ */ jsx(
105
- ToolbarButton,
106
- {
107
- onClick: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),
108
- title: "T\xEDtulo 1",
109
- isActive: editor.isActive("heading", { level: 1 }),
110
- children: /* @__PURE__ */ jsx(Heading1, { className: "h-4 w-4" })
111
- }
112
- ),
113
- /* @__PURE__ */ jsx(
114
- ToolbarButton,
115
- {
116
- onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),
117
- title: "T\xEDtulo 2",
118
- isActive: editor.isActive("heading", { level: 2 }),
119
- children: /* @__PURE__ */ jsx(Heading2, { className: "h-4 w-4" })
120
- }
121
- ),
122
- /* @__PURE__ */ jsx(
123
- ToolbarButton,
124
- {
125
- onClick: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),
126
- title: "T\xEDtulo 3",
127
- isActive: editor.isActive("heading", { level: 3 }),
128
- children: /* @__PURE__ */ jsx(Heading3, { className: "h-4 w-4" })
129
- }
130
- ),
131
- /* @__PURE__ */ jsx("div", { className: "mx-1 h-6 w-px bg-border" }),
132
- /* @__PURE__ */ jsx(
133
- ToolbarButton,
134
- {
135
- onClick: () => editor.chain().focus().toggleBold().run(),
136
- title: "Negrita",
137
- isActive: editor.isActive("bold"),
138
- children: /* @__PURE__ */ jsx(Bold, { className: "h-4 w-4" })
139
- }
140
- ),
141
- /* @__PURE__ */ jsx(
142
- ToolbarButton,
143
- {
144
- onClick: () => editor.chain().focus().toggleItalic().run(),
145
- title: "Cursiva",
146
- isActive: editor.isActive("italic"),
147
- children: /* @__PURE__ */ jsx(Italic, { className: "h-4 w-4" })
148
- }
149
- ),
150
- /* @__PURE__ */ jsx(
151
- ToolbarButton,
152
- {
153
- onClick: () => editor.chain().focus().toggleStrike().run(),
154
- title: "Tachado",
155
- isActive: editor.isActive("strike"),
156
- children: /* @__PURE__ */ jsx(Strikethrough, { className: "h-4 w-4" })
157
- }
158
- ),
159
- /* @__PURE__ */ jsx("div", { className: "mx-1 h-6 w-px bg-border" }),
160
- /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
161
- "input",
162
- {
163
- type: "color",
164
- className: "h-8 w-8 cursor-pointer rounded border border-border",
165
- onChange: (e) => {
166
- editor.chain().focus().setColor(e.target.value).run();
167
- },
168
- title: "Color del texto"
169
- }
170
- ) }),
171
- /* @__PURE__ */ jsx("div", { className: "mx-1 h-6 w-px bg-border" }),
172
- /* @__PURE__ */ jsx(
173
- ToolbarButton,
174
- {
175
- onClick: () => editor.chain().focus().toggleBulletList().run(),
176
- title: "Lista con vi\xF1etas",
177
- isActive: editor.isActive("bulletList"),
178
- children: /* @__PURE__ */ jsx(List, { className: "h-4 w-4" })
179
- }
180
- ),
181
- /* @__PURE__ */ jsx(
182
- ToolbarButton,
183
- {
184
- onClick: () => editor.chain().focus().toggleOrderedList().run(),
185
- title: "Lista numerada",
186
- isActive: editor.isActive("orderedList"),
187
- children: /* @__PURE__ */ jsx(ListOrdered, { className: "h-4 w-4" })
188
- }
189
- ),
190
- /* @__PURE__ */ jsx("div", { className: "mx-1 h-6 w-px bg-border" }),
191
- /* @__PURE__ */ jsx(
192
- ToolbarButton,
193
- {
194
- onClick: () => editor.chain().focus().setTextAlign("left").run(),
195
- title: "Alinear izquierda",
196
- isActive: editor.isActive({ textAlign: "left" }),
197
- children: /* @__PURE__ */ jsx(AlignLeft, { className: "h-4 w-4" })
198
- }
199
- ),
200
- /* @__PURE__ */ jsx(
201
- ToolbarButton,
202
- {
203
- onClick: () => editor.chain().focus().setTextAlign("center").run(),
204
- title: "Centrar",
205
- isActive: editor.isActive({ textAlign: "center" }),
206
- children: /* @__PURE__ */ jsx(AlignCenter, { className: "h-4 w-4" })
207
- }
208
- ),
209
- /* @__PURE__ */ jsx(
210
- ToolbarButton,
211
- {
212
- onClick: () => editor.chain().focus().setTextAlign("right").run(),
213
- title: "Alinear derecha",
214
- isActive: editor.isActive({ textAlign: "right" }),
215
- children: /* @__PURE__ */ jsx(AlignRight, { className: "h-4 w-4" })
216
- }
217
- ),
218
- /* @__PURE__ */ jsx("div", { className: "mx-1 h-6 w-px bg-border" }),
219
- /* @__PURE__ */ jsx(
220
- ToolbarButton,
221
- {
222
- onClick: () => {
223
- const url = prompt("Ingresa la URL:");
224
- if (url) {
225
- editor.chain().focus().setLink({ href: url }).run();
226
- }
227
- },
228
- title: "Insertar enlace",
229
- isActive: editor.isActive("link"),
230
- children: /* @__PURE__ */ jsx(Link, { className: "h-4 w-4" })
231
- }
232
- ),
233
- /* @__PURE__ */ jsx(
234
- ToolbarButton,
235
- {
236
- onClick: () => {
237
- const url = prompt("Ingresa la URL de la imagen:");
238
- if (url) {
239
- editor.chain().focus().setImage({ src: url }).run();
240
- }
241
- },
242
- title: "Insertar imagen",
243
- children: /* @__PURE__ */ jsx(ImageIcon, { className: "h-4 w-4" })
244
- }
245
- )
246
- ] }),
247
- /* @__PURE__ */ jsx(
248
- EditorContent,
249
- {
250
- editor,
251
- className: "prose prose-sm max-w-none bg-card p-3",
252
- style: { minHeight: `${height}px` }
253
- }
254
- )
255
- ]
256
- }
257
- );
258
- }
259
- export {
260
- RichTextEditor
261
- };
262
- //# sourceMappingURL=rich-text-editor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/ui/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Color from \"@tiptap/extension-color\";\nimport { TextStyle } from \"@tiptap/extension-text-style\";\nimport ImageExtension from \"@tiptap/extension-image\";\nimport LinkExtension from \"@tiptap/extension-link\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport {\n Bold,\n Italic,\n Strikethrough,\n List,\n ListOrdered,\n Link,\n AlignLeft,\n AlignCenter,\n AlignRight,\n Image as ImageIcon,\n Heading1,\n Heading2,\n Heading3,\n} from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\n\ninterface RichTextEditorProps {\n value: string;\n onChange: (content: string) => void;\n placeholder?: string;\n height?: number;\n className?: string;\n readOnly?: boolean;\n}\n\nfunction ToolbarButton({\n onClick,\n children,\n title,\n isActive = false,\n}: {\n onClick: () => void;\n children: React.ReactNode;\n title: string;\n isActive?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n title={title}\n className={cn(\n \"rounded p-2 transition-colors\",\n isActive ? \"bg-primary text-primary-foreground\" : \"text-muted-foreground hover:bg-muted\",\n )}\n >\n {children}\n </button>\n );\n}\n\nfunction RichTextEditor({\n value,\n onChange,\n placeholder = \"Escribe aquí...\",\n height = 200,\n className = \"\",\n readOnly = false,\n}: RichTextEditorProps) {\n const editor = useEditor({\n extensions: [\n StarterKit,\n TextAlign.configure({\n types: [\"heading\", \"paragraph\"],\n }),\n Color.configure({ types: [TextStyle.name] }),\n TextStyle,\n ImageExtension.configure({\n HTMLAttributes: {\n class: \"max-w-full h-auto rounded-lg\",\n },\n }),\n LinkExtension.configure({\n openOnClick: false,\n }),\n Placeholder.configure({\n placeholder: placeholder,\n }),\n ],\n content: value,\n editable: !readOnly,\n immediatelyRender: false,\n onUpdate: ({ editor: e }) => {\n onChange(e.getHTML());\n },\n editorProps: {\n attributes: {\n class:\n \"prose prose-sm mx-auto focus:outline-none max-w-none\",\n style: `min-height: ${height}px;`,\n },\n },\n });\n\n React.useEffect(() => {\n if (editor && editor.getHTML() !== value) {\n editor.commands.setContent(value);\n }\n }, [value, editor]);\n\n if (!editor) {\n return (\n <div className={cn(\"overflow-hidden rounded-lg border border-border\", className)}>\n <div className=\"flex h-32 animate-pulse items-center justify-center rounded bg-muted text-muted-foreground\">\n Cargando editor...\n </div>\n </div>\n );\n }\n\n return (\n <div\n data-slot=\"rich-text-editor\"\n className={cn(\"overflow-hidden rounded-lg border border-border\", className)}\n >\n {!readOnly && (\n <div className=\"flex flex-wrap gap-1 border-b border-border bg-muted/50 p-2\">\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}\n title=\"Título 1\"\n isActive={editor.isActive(\"heading\", { level: 1 })}\n >\n <Heading1 className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\n title=\"Título 2\"\n isActive={editor.isActive(\"heading\", { level: 2 })}\n >\n <Heading2 className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()}\n title=\"Título 3\"\n isActive={editor.isActive(\"heading\", { level: 3 })}\n >\n <Heading3 className=\"h-4 w-4\" />\n </ToolbarButton>\n <div className=\"mx-1 h-6 w-px bg-border\" />\n\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBold().run()}\n title=\"Negrita\"\n isActive={editor.isActive(\"bold\")}\n >\n <Bold className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleItalic().run()}\n title=\"Cursiva\"\n isActive={editor.isActive(\"italic\")}\n >\n <Italic className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleStrike().run()}\n title=\"Tachado\"\n isActive={editor.isActive(\"strike\")}\n >\n <Strikethrough className=\"h-4 w-4\" />\n </ToolbarButton>\n <div className=\"mx-1 h-6 w-px bg-border\" />\n\n <div className=\"relative\">\n <input\n type=\"color\"\n className=\"h-8 w-8 cursor-pointer rounded border border-border\"\n onChange={(e) => {\n editor.chain().focus().setColor(e.target.value).run();\n }}\n title=\"Color del texto\"\n />\n </div>\n\n <div className=\"mx-1 h-6 w-px bg-border\" />\n\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n title=\"Lista con viñetas\"\n isActive={editor.isActive(\"bulletList\")}\n >\n <List className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n title=\"Lista numerada\"\n isActive={editor.isActive(\"orderedList\")}\n >\n <ListOrdered className=\"h-4 w-4\" />\n </ToolbarButton>\n <div className=\"mx-1 h-6 w-px bg-border\" />\n\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign(\"left\").run()}\n title=\"Alinear izquierda\"\n isActive={editor.isActive({ textAlign: \"left\" })}\n >\n <AlignLeft className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign(\"center\").run()}\n title=\"Centrar\"\n isActive={editor.isActive({ textAlign: \"center\" })}\n >\n <AlignCenter className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign(\"right\").run()}\n title=\"Alinear derecha\"\n isActive={editor.isActive({ textAlign: \"right\" })}\n >\n <AlignRight className=\"h-4 w-4\" />\n </ToolbarButton>\n <div className=\"mx-1 h-6 w-px bg-border\" />\n\n <ToolbarButton\n onClick={() => {\n const url = prompt(\"Ingresa la URL:\");\n if (url) {\n editor.chain().focus().setLink({ href: url }).run();\n }\n }}\n title=\"Insertar enlace\"\n isActive={editor.isActive(\"link\")}\n >\n <Link className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton\n onClick={() => {\n const url = prompt(\"Ingresa la URL de la imagen:\");\n if (url) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n }}\n title=\"Insertar imagen\"\n >\n <ImageIcon className=\"h-4 w-4\" />\n </ToolbarButton>\n </div>\n )}\n <EditorContent\n editor={editor}\n className=\"prose prose-sm max-w-none bg-card p-3\"\n style={{ minHeight: `${height}px` }}\n />\n </div>\n );\n}\n\nexport { RichTextEditor };\nexport type { RichTextEditorProps };\n"],"mappings":"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","names":[]}