@customafk/lunas-ui 0.2.35 → 0.2.36
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/{alert-DZlPX4MK.d.mts → alert-ArM88PNb.d.cts} +6 -6
- package/dist/{alert-DGoFdiDI.d.cts → alert-oiaUJxqr.d.mts} +7 -7
- package/dist/{badge-D1Un985K.d.cts → badge-C9JgOJ5_.d.mts} +5 -5
- package/dist/{badge-LtLg87DN.d.mts → badge-D5Wq3XJq.d.cts} +4 -4
- package/dist/{button-CdjZ5QJ8.d.mts → button-CdROwJlN.d.cts} +5 -5
- package/dist/{button-8OKxyueU.d.cts → button-CoySHVye.d.mts} +6 -6
- package/dist/cards/simple-card.d.cts +2 -2
- package/dist/cards/simple-card.d.mts +2 -2
- package/dist/{dialog-DolY0CYG.d.mts → dialog-BYzcewOe.d.cts} +12 -12
- package/dist/{dialog-aguemTG1.d.cts → dialog-DYhbRnya.d.mts} +12 -12
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +25 -25
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +27 -27
- package/dist/features/descriptions/index.d.cts +6 -6
- package/dist/features/descriptions/index.d.mts +6 -6
- package/dist/features/search-modal/index.d.cts +2 -2
- package/dist/features/search-modal/index.d.mts +2 -2
- package/dist/features/tables/index.d.cts +1 -1
- package/dist/features/tables/index.d.mts +2 -2
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.d.cts +1 -1
- package/dist/features/tanstack-form/index.d.mts +1 -1
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/text-editor/index.cjs +1 -1
- package/dist/features/text-editor/index.d.cts +2 -2
- package/dist/features/text-editor/index.d.mts +2 -2
- package/dist/features/text-editor/index.mjs +1 -1
- package/dist/{index-BqGaIQNn.d.mts → index-ByhKmerO.d.mts} +44 -7
- package/dist/{index-C45OSg1W.d.mts → index-CEUx5VIo.d.mts} +30 -30
- package/dist/{index-CgEghb4N.d.cts → index-CL3z9hOc.d.cts} +367 -367
- package/dist/{index-DfvBLw2O.d.mts → index-CuvfEKgg.d.mts} +367 -367
- package/dist/{index-DwS7a4RL.d.cts → index-DMSKIqbL.d.cts} +43 -6
- package/dist/{index-BhnqroF7.d.cts → index-DuRmheOp.d.cts} +30 -30
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.mts +8 -8
- package/dist/index.mjs +1 -1
- package/dist/{input-DcbOSbQr.d.mts → input-DHt0MAKf.d.cts} +6 -6
- package/dist/{input-CZrWdm_Y.d.cts → input-DLqmDeEo.d.mts} +6 -6
- package/dist/layouts/flex.d.cts +6 -6
- package/dist/layouts/flex.d.mts +8 -8
- package/dist/pages/FeatureDeveloping.d.cts +2 -2
- package/dist/pages/FeatureDeveloping.d.mts +2 -2
- package/dist/pages/FeatureFixing.d.cts +2 -2
- package/dist/pages/FeatureFixing.d.mts +2 -2
- package/dist/pages/LoginPage.d.cts +2 -2
- package/dist/pages/LoginPage.d.mts +2 -2
- package/dist/pages/NotAuthorized.d.cts +2 -2
- package/dist/pages/NotAuthorized.d.mts +2 -2
- package/dist/pages/NotFound.d.cts +2 -2
- package/dist/pages/NotFound.d.mts +2 -2
- package/dist/pages/RegisterPage.d.cts +2 -2
- package/dist/pages/RegisterPage.d.mts +2 -2
- package/dist/pages/VerifyEmailPage.d.cts +2 -2
- package/dist/pages/VerifyEmailPage.d.mts +2 -2
- package/dist/tables-B3Ald6An.cjs.map +1 -1
- package/dist/tables-C3asiSD4.mjs.map +1 -1
- package/dist/{tanstack-form-dHOZ76Jw.cjs → tanstack-form-CYcb_gLQ.cjs} +2 -2
- package/dist/{tanstack-form-dHOZ76Jw.cjs.map → tanstack-form-CYcb_gLQ.cjs.map} +1 -1
- package/dist/{tanstack-form-BFX2-Tlo.mjs → tanstack-form-DQFyDxOg.mjs} +2 -2
- package/dist/{tanstack-form-BFX2-Tlo.mjs.map → tanstack-form-DQFyDxOg.mjs.map} +1 -1
- package/dist/text-editor-DqyiYNen.cjs +2 -0
- package/dist/text-editor-DqyiYNen.cjs.map +1 -0
- package/dist/text-editor-HGUUElOS.mjs +2 -0
- package/dist/text-editor-HGUUElOS.mjs.map +1 -0
- package/dist/typography/paragraph.d.cts +5 -5
- package/dist/typography/paragraph.d.mts +5 -5
- package/dist/ui/alert-dialog.d.cts +12 -12
- package/dist/ui/alert-dialog.d.mts +12 -12
- package/dist/ui/alert.d.cts +1 -1
- package/dist/ui/alert.d.mts +1 -1
- package/dist/ui/aspect-ratio.d.cts +2 -2
- package/dist/ui/aspect-ratio.d.mts +2 -2
- package/dist/ui/avatar.d.cts +4 -4
- package/dist/ui/avatar.d.mts +4 -4
- package/dist/ui/badge.d.cts +1 -1
- package/dist/ui/badge.d.mts +1 -1
- package/dist/ui/breadcrumb.d.cts +8 -8
- package/dist/ui/breadcrumb.d.mts +8 -8
- package/dist/ui/button-group.d.cts +6 -6
- package/dist/ui/button-group.d.mts +6 -6
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/calendar.d.cts +4 -4
- package/dist/ui/calendar.d.mts +4 -4
- package/dist/ui/card.d.cts +8 -8
- package/dist/ui/card.d.mts +8 -8
- package/dist/ui/carousel.d.cts +7 -7
- package/dist/ui/carousel.d.mts +7 -7
- package/dist/ui/checkbox.d.cts +2 -2
- package/dist/ui/checkbox.d.mts +2 -2
- package/dist/ui/collapsible.d.cts +4 -4
- package/dist/ui/collapsible.d.mts +4 -4
- package/dist/ui/command.d.cts +11 -11
- package/dist/ui/command.d.mts +11 -11
- package/dist/ui/context-menu.d.cts +16 -16
- package/dist/ui/context-menu.d.mts +16 -16
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +1 -1
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.mts +11 -11
- package/dist/ui/dropdown-menu.d.cts +16 -16
- package/dist/ui/dropdown-menu.d.mts +16 -16
- package/dist/ui/empty.d.cts +9 -9
- package/dist/ui/empty.d.mts +9 -9
- package/dist/ui/field.d.cts +23 -23
- package/dist/ui/field.d.mts +23 -23
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/file-uploader.d.mts +2 -2
- package/dist/ui/form.d.cts +10 -10
- package/dist/ui/form.d.mts +10 -10
- package/dist/ui/hover-card.d.cts +4 -4
- package/dist/ui/hover-card.d.mts +4 -4
- package/dist/ui/input-otp.d.cts +5 -5
- package/dist/ui/input-otp.d.mts +5 -5
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/inputs/search-input.d.cts +3 -3
- package/dist/ui/inputs/search-input.d.mts +3 -3
- package/dist/ui/item.d.cts +16 -16
- package/dist/ui/item.d.mts +16 -16
- package/dist/ui/label.d.cts +2 -2
- package/dist/ui/label.d.mts +2 -2
- package/dist/ui/menubar.d.cts +17 -17
- package/dist/ui/menubar.d.mts +17 -17
- package/dist/ui/multi-select.d.cts +2 -2
- package/dist/ui/multi-select.d.mts +3 -3
- package/dist/ui/navigation-menu.d.cts +9 -9
- package/dist/ui/navigation-menu.d.mts +11 -11
- package/dist/ui/pagination.d.cts +9 -9
- package/dist/ui/pagination.d.mts +9 -9
- package/dist/ui/popover.d.cts +6 -6
- package/dist/ui/popover.d.mts +6 -6
- package/dist/ui/progress.d.cts +2 -2
- package/dist/ui/progress.d.mts +2 -2
- package/dist/ui/radio-group.d.cts +3 -3
- package/dist/ui/radio-group.d.mts +3 -3
- package/dist/ui/resizable.d.cts +9 -9
- package/dist/ui/resizable.d.mts +9 -9
- package/dist/ui/scroll-area.d.cts +5 -5
- package/dist/ui/scroll-area.d.mts +5 -5
- package/dist/ui/select.d.cts +9 -9
- package/dist/ui/select.d.mts +9 -9
- package/dist/ui/separator.d.cts +2 -2
- package/dist/ui/separator.d.mts +2 -2
- package/dist/ui/sheet.d.cts +9 -9
- package/dist/ui/sheet.d.mts +9 -9
- package/dist/ui/skeleton.d.cts +2 -2
- package/dist/ui/skeleton.d.mts +2 -2
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.mts +2 -2
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/sonner.d.mts +2 -2
- package/dist/ui/spinner.d.cts +2 -2
- package/dist/ui/spinner.d.mts +2 -2
- package/dist/ui/switch.d.cts +2 -2
- package/dist/ui/switch.d.mts +2 -2
- package/dist/ui/table.d.cts +17 -17
- package/dist/ui/table.d.mts +17 -17
- package/dist/ui/tabs.d.cts +5 -5
- package/dist/ui/tabs.d.mts +5 -5
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/textarea.d.mts +2 -2
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/toggle-group.d.mts +3 -3
- package/dist/ui/toggle.d.cts +5 -5
- package/dist/ui/toggle.d.mts +5 -5
- package/dist/ui/tooltip.d.cts +5 -5
- package/dist/ui/tooltip.d.mts +5 -5
- package/package.json +16 -6
- package/styles/text-editor.css +56 -0
- package/dist/text-editor-BJBM0T1y.cjs +0 -2
- package/dist/text-editor-BJBM0T1y.cjs.map +0 -1
- package/dist/text-editor-CbBJNn-4.mjs +0 -2
- package/dist/text-editor-CbBJNn-4.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@customafk/lunas-ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.36",
|
|
4
4
|
"description": "UI library for Lunas Enterprise",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": {
|
|
@@ -437,11 +437,21 @@
|
|
|
437
437
|
"@tanstack/react-form": "^1.29.0",
|
|
438
438
|
"@tanstack/react-table": "^8.21.0",
|
|
439
439
|
"@tanstack/react-virtual": "^3.13.12",
|
|
440
|
-
"@tiptap/extension-
|
|
441
|
-
"@tiptap/extension-
|
|
442
|
-
"@tiptap/extension-
|
|
443
|
-
"@tiptap/
|
|
444
|
-
"@tiptap/
|
|
440
|
+
"@tiptap/extension-bubble-menu": "^3.26.0",
|
|
441
|
+
"@tiptap/extension-character-count": "^3.26.0",
|
|
442
|
+
"@tiptap/extension-color": "^3.26.0",
|
|
443
|
+
"@tiptap/extension-floating-menu": "^3.26.0",
|
|
444
|
+
"@tiptap/extension-highlight": "^3.26.0",
|
|
445
|
+
"@tiptap/extension-link": "^3.26.0",
|
|
446
|
+
"@tiptap/extension-list-keymap": "^3.26.0",
|
|
447
|
+
"@tiptap/extension-placeholder": "^3.26.0",
|
|
448
|
+
"@tiptap/extension-task-item": "^3.26.0",
|
|
449
|
+
"@tiptap/extension-task-list": "^3.26.0",
|
|
450
|
+
"@tiptap/extension-text-align": "^3.26.0",
|
|
451
|
+
"@tiptap/extension-text-style": "^3.26.0",
|
|
452
|
+
"@tiptap/extension-underline": "^3.26.0",
|
|
453
|
+
"@tiptap/react": "^3.26.0",
|
|
454
|
+
"@tiptap/starter-kit": "^3.26.0",
|
|
445
455
|
"class-variance-authority": "^0.7.0",
|
|
446
456
|
"cmdk": "^1.1.0",
|
|
447
457
|
"embla-carousel-react": "^8.6.0",
|
package/styles/text-editor.css
CHANGED
|
@@ -138,3 +138,59 @@
|
|
|
138
138
|
.lunas-text-editor .ProseMirror ::selection {
|
|
139
139
|
background-color: var(--primary-muted);
|
|
140
140
|
}
|
|
141
|
+
|
|
142
|
+
/* Links */
|
|
143
|
+
.lunas-text-editor .ProseMirror a {
|
|
144
|
+
color: var(--primary);
|
|
145
|
+
text-decoration: underline;
|
|
146
|
+
text-underline-offset: 2px;
|
|
147
|
+
cursor: pointer;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.lunas-text-editor .ProseMirror a:hover {
|
|
151
|
+
color: var(--primary-strong);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* Highlight */
|
|
155
|
+
.lunas-text-editor .ProseMirror mark {
|
|
156
|
+
border-radius: 0.2em;
|
|
157
|
+
padding: 0 0.1em;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* Task list */
|
|
161
|
+
.lunas-text-editor .ProseMirror ul[data-type='taskList'] {
|
|
162
|
+
list-style: none;
|
|
163
|
+
padding-left: 0;
|
|
164
|
+
margin: 0.5rem 0;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.lunas-text-editor .ProseMirror ul[data-type='taskList'] li {
|
|
168
|
+
display: flex;
|
|
169
|
+
align-items: flex-start;
|
|
170
|
+
gap: 0.5rem;
|
|
171
|
+
padding: 0.125rem 0;
|
|
172
|
+
margin: 0;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.lunas-text-editor .ProseMirror ul[data-type='taskList'] li > label {
|
|
176
|
+
flex: 0 0 auto;
|
|
177
|
+
user-select: none;
|
|
178
|
+
margin-top: 0.2rem;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.lunas-text-editor .ProseMirror ul[data-type='taskList'] li > label input[type='checkbox'] {
|
|
182
|
+
cursor: pointer;
|
|
183
|
+
accent-color: var(--primary);
|
|
184
|
+
width: 0.875rem;
|
|
185
|
+
height: 0.875rem;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.lunas-text-editor .ProseMirror ul[data-type='taskList'] li > div {
|
|
189
|
+
flex: 1;
|
|
190
|
+
line-height: 1.625;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.lunas-text-editor .ProseMirror ul[data-type='taskList'] li[data-checked='true'] > div {
|
|
194
|
+
color: var(--text-positive-weak);
|
|
195
|
+
text-decoration: line-through;
|
|
196
|
+
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(`react`),r=require(`@customafk/react-toolkit/utils`),i=require(`class-variance-authority`),a=require(`react/jsx-runtime`),o=require(`@tiptap/react`),s=require(`@tiptap/extension-placeholder`);s=e.t(s);let c=require(`@tiptap/extension-text-align`);c=e.t(c);let l=require(`@tiptap/extension-underline`);l=e.t(l);let u=require(`@tiptap/starter-kit`);u=e.t(u);const d=(0,i.cva)([`flex flex-col overflow-hidden rounded-md`],{variants:{variant:{outline:`border border-border bg-background shadow-xs`,ghost:`border-0`}},defaultVariants:{variant:`outline`}});function f({isActive:e,className:t,children:n,...i}){return(0,a.jsx)(`button`,{type:`button`,"data-slot":`toolbar-button`,"data-active":e||void 0,className:(0,r.cn)(`inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors`,`hover:bg-muted-muted hover:text-text-positive-strong`,`disabled:pointer-events-none disabled:opacity-40`,e&&`bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary`,t),...i,children:n})}function p(){return(0,a.jsx)(`div`,{"data-slot":`toolbar-divider`,className:`mx-0.5 h-5 w-px shrink-0 bg-border`})}function m({editor:e,className:n}){let i=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`heading`,{level:1})}),s=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`heading`,{level:2})}),c=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`heading`,{level:3})});(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`paragraph`)});let l=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`bold`)}),u=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`italic`)}),d=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`underline`)}),m=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`strike`)}),h=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`code`)}),g=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`bulletList`)}),_=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`orderedList`)}),v=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`blockquote`)}),y=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`codeBlock`)}),b=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`left`})}),x=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`center`})}),S=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`right`})}),C=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`justify`})});return(0,a.jsxs)(`div`,{"data-slot":`text-editor-toolbar`,className:(0,r.cn)(`flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5`,n),children:[(0,a.jsx)(f,{onClick:()=>e.chain().focus().undo().run(),disabled:!e.can().undo(),title:`Undo`,children:(0,a.jsx)(t.Undo,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().redo().run(),disabled:!e.can().redo(),title:`Redo`,children:(0,a.jsx)(t.Redo,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleHeading({level:1}).run(),isActive:i,title:`Heading 1`,children:(0,a.jsx)(t.Heading1,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleHeading({level:2}).run(),isActive:s,title:`Heading 2`,children:(0,a.jsx)(t.Heading2,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleHeading({level:3}).run(),isActive:c,title:`Heading 3`,children:(0,a.jsx)(t.Heading3,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleBold().run(),isActive:l,title:`Bold`,children:(0,a.jsx)(t.Bold,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleItalic().run(),isActive:u,title:`Italic`,children:(0,a.jsx)(t.Italic,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleUnderline().run(),isActive:d,title:`Underline`,children:(0,a.jsx)(t.Underline,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleStrike().run(),isActive:m,title:`Strikethrough`,children:(0,a.jsx)(t.Strikethrough,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleCode().run(),isActive:h,title:`Inline Code`,children:(0,a.jsx)(t.Code,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleBulletList().run(),isActive:g,title:`Bullet List`,children:(0,a.jsx)(t.List,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleOrderedList().run(),isActive:_,title:`Ordered List`,children:(0,a.jsx)(t.ListOrdered,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleBlockquote().run(),isActive:v,title:`Blockquote`,children:(0,a.jsx)(t.Quote,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleCodeBlock().run(),isActive:y,title:`Code Block`,children:(0,a.jsx)(t.Code2,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setHorizontalRule().run(),title:`Horizontal Rule`,children:(0,a.jsx)(t.Minus,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`left`).run(),isActive:b,title:`Align Left`,children:(0,a.jsx)(t.AlignLeft,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`center`).run(),isActive:x,title:`Align Center`,children:(0,a.jsx)(t.AlignCenter,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`right`).run(),isActive:S,title:`Align Right`,children:(0,a.jsx)(t.AlignRight,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`justify`).run(),isActive:C,title:`Align Justify`,children:(0,a.jsx)(t.AlignJustify,{className:`h-3.5 w-3.5`})})]})}function h({value:e,defaultValue:t,onChange:i,placeholder:f=`Start writing...`,readOnly:p=!1,showToolbar:h=!0,variant:g,className:_,toolbarClassName:v,editorClassName:y}){let b=(0,o.useEditor)({extensions:[u.default,l.default,s.default.configure({placeholder:f}),c.default.configure({types:[`heading`,`paragraph`]})],content:e??t,editable:!p,onUpdate:({editor:e})=>{i?.(e.getHTML())}});return(0,n.useEffect)(()=>{!b||e===void 0||b.getHTML()!==e&&b.commands.setContent(e)},[b,e]),(0,n.useEffect)(()=>{b&&b.setEditable(!p)},[b,p]),(0,a.jsxs)(`div`,{"data-slot":`text-editor`,className:(0,r.cn)(`lunas-text-editor`,d({variant:g}),_),children:[h&&!p&&b&&(0,a.jsx)(m,{editor:b,className:v}),(0,a.jsx)(o.EditorContent,{editor:b,"data-slot":`text-editor-content`,className:(0,r.cn)(`flex-1 text-sm text-text-positive bg-background`,y)})]})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
|
|
2
|
-
//# sourceMappingURL=text-editor-BJBM0T1y.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor-BJBM0T1y.cjs","names":["Undo","Redo","Heading1","Heading2","Heading3","Bold","Italic","Underline","Strikethrough","Code","List","ListOrdered","Quote","Code2","Minus","AlignLeft","AlignCenter","AlignRight","AlignJustify","StarterKit","Underline","Placeholder","TextAlign","EditorContent"],"sources":["../packages/components/features/text-editor/text-editor.variants.ts","../packages/components/features/text-editor/toolbar.tsx","../packages/components/features/text-editor/text-editor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const textEditorVariants = cva(['flex flex-col overflow-hidden rounded-md'], {\n variants: {\n variant: {\n outline: 'border border-border bg-background shadow-xs',\n ghost: 'border-0',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n});\n\nexport type TextEditorVariantProps = VariantProps<typeof textEditorVariants>;\n","'use client';\n\nimport { useEditorState, type Editor } from '@tiptap/react';\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Code,\n Code2,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Minus,\n Quote,\n Redo,\n Strikethrough,\n Underline,\n Undo,\n} from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\ninterface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean;\n}\n\nfunction ToolbarButton({ isActive, className, children, ...props }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"toolbar-button\"\n data-active={isActive || undefined}\n className={cn(\n 'inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n isActive && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nfunction ToolbarDivider() {\n return <div data-slot=\"toolbar-divider\" className=\"mx-0.5 h-5 w-px shrink-0 bg-border\" />;\n}\n\nexport interface TextEditorToolbarProps {\n editor: Editor;\n className?: string;\n}\n\nfunction TextEditorToolbar({ editor, className }: TextEditorToolbarProps) {\n const isHeading1Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 1 }),\n });\n const isHeading2Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 2 }),\n });\n const isHeading3Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 3 }),\n });\n const isParagraphActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('paragraph'),\n });\n const isBoldActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bold'),\n });\n const isItalicActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('italic'),\n });\n const isUnderlineActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('underline'),\n });\n const isStrikeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('strike'),\n });\n const isCodeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('code'),\n });\n const isBulletListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bulletList'),\n });\n const isOrderedListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('orderedList'),\n });\n const isBlockquoteActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('blockquote'),\n });\n const isCodeBlockActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('codeBlock'),\n });\n const isAlignLeftActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'left' }),\n });\n const isAlignCenterActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'center' }),\n });\n const isAlignRightActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'right' }),\n });\n const isAlignJustifyActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'justify' }),\n });\n return (\n <div data-slot=\"text-editor-toolbar\" className={cn('flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5', className)}>\n {/* History */}\n <ToolbarButton onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo\">\n <Undo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo\">\n <Redo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Headings */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={isHeading1Active} title=\"Heading 1\">\n <Heading1 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={isHeading2Active} title=\"Heading 2\">\n <Heading2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={isHeading3Active} title=\"Heading 3\">\n <Heading3 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={isBoldActive} title=\"Bold\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={isItalicActive} title=\"Italic\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={isUnderlineActive} title=\"Underline\">\n <Underline className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={isStrikeActive} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCode().run()} isActive={isCodeActive} title=\"Inline Code\">\n <Code className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={isBulletListActive} title=\"Bullet List\">\n <List className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={isOrderedListActive} title=\"Ordered List\">\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Blocks */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={isBlockquoteActive} title=\"Blockquote\">\n <Quote className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCodeBlock().run()} isActive={isCodeBlockActive} title=\"Code Block\">\n <Code2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal Rule\">\n <Minus className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={isAlignLeftActive} title=\"Align Left\">\n <AlignLeft className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={isAlignCenterActive} title=\"Align Center\">\n <AlignCenter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={isAlignRightActive} title=\"Align Right\">\n <AlignRight className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('justify').run()} isActive={isAlignJustifyActive} title=\"Align Justify\">\n <AlignJustify className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </div>\n );\n}\n\nexport { TextEditorToolbar };\n","'use client';\n\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { useEffect } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\nimport { textEditorVariants, type TextEditorVariantProps } from './text-editor.variants';\nimport { TextEditorToolbar } from './toolbar';\n\nexport interface TextEditorProps extends TextEditorVariantProps {\n value?: string;\n defaultValue?: string;\n onChange?: (html: string) => void;\n placeholder?: string;\n readOnly?: boolean;\n showToolbar?: boolean;\n className?: string;\n toolbarClassName?: string;\n editorClassName?: string;\n}\n\nfunction TextEditor({\n value,\n defaultValue,\n onChange,\n placeholder = 'Start writing...',\n readOnly = false,\n showToolbar = true,\n variant,\n className,\n toolbarClassName,\n editorClassName,\n}: TextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit, Underline, Placeholder.configure({ placeholder }), TextAlign.configure({ types: ['heading', 'paragraph'] })],\n content: value ?? defaultValue,\n editable: !readOnly,\n onUpdate: ({ editor: e }) => {\n onChange?.(e.getHTML());\n },\n });\n\n // Sync controlled value into the editor without re-triggering onChange\n useEffect(() => {\n if (!editor || value === undefined) return;\n if (editor.getHTML() === value) return;\n editor.commands.setContent(value);\n }, [editor, value]);\n\n // Sync editable state\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n return (\n <div data-slot=\"text-editor\" className={cn('lunas-text-editor', textEditorVariants({ variant }), className)}>\n {showToolbar && !readOnly && editor && <TextEditorToolbar editor={editor} className={toolbarClassName} />}\n <EditorContent editor={editor} data-slot=\"text-editor-content\" className={cn('flex-1 text-sm text-text-positive bg-background', editorClassName)} />\n </div>\n );\n}\n\nexport { TextEditor };\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{AlignCenter as e,AlignJustify as t,AlignLeft as n,AlignRight as r,Bold as i,Code as a,Code2 as o,Heading1 as s,Heading2 as c,Heading3 as l,Italic as u,List as d,ListOrdered as f,Minus as p,Quote as m,Redo as h,Strikethrough as g,Underline as _,Undo as v}from"lucide-react";import{useEffect as y}from"react";import{cn as b}from"@customafk/react-toolkit/utils";import{cva as x}from"class-variance-authority";import{jsx as S,jsxs as C}from"react/jsx-runtime";import{EditorContent as w,useEditor as T,useEditorState as E}from"@tiptap/react";import D from"@tiptap/extension-placeholder";import O from"@tiptap/extension-text-align";import k from"@tiptap/extension-underline";import A from"@tiptap/starter-kit";const j=x([`flex flex-col overflow-hidden rounded-md`],{variants:{variant:{outline:`border border-border bg-background shadow-xs`,ghost:`border-0`}},defaultVariants:{variant:`outline`}});function M({isActive:e,className:t,children:n,...r}){return S(`button`,{type:`button`,"data-slot":`toolbar-button`,"data-active":e||void 0,className:b(`inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors`,`hover:bg-muted-muted hover:text-text-positive-strong`,`disabled:pointer-events-none disabled:opacity-40`,e&&`bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary`,t),...r,children:n})}function N(){return S(`div`,{"data-slot":`toolbar-divider`,className:`mx-0.5 h-5 w-px shrink-0 bg-border`})}function P({editor:y,className:x}){let w=E({editor:y,selector:e=>e.editor.isActive(`heading`,{level:1})}),T=E({editor:y,selector:e=>e.editor.isActive(`heading`,{level:2})}),D=E({editor:y,selector:e=>e.editor.isActive(`heading`,{level:3})});E({editor:y,selector:e=>e.editor.isActive(`paragraph`)});let O=E({editor:y,selector:e=>e.editor.isActive(`bold`)}),k=E({editor:y,selector:e=>e.editor.isActive(`italic`)}),A=E({editor:y,selector:e=>e.editor.isActive(`underline`)}),j=E({editor:y,selector:e=>e.editor.isActive(`strike`)}),P=E({editor:y,selector:e=>e.editor.isActive(`code`)}),F=E({editor:y,selector:e=>e.editor.isActive(`bulletList`)}),I=E({editor:y,selector:e=>e.editor.isActive(`orderedList`)}),L=E({editor:y,selector:e=>e.editor.isActive(`blockquote`)}),R=E({editor:y,selector:e=>e.editor.isActive(`codeBlock`)}),z=E({editor:y,selector:e=>e.editor.isActive({textAlign:`left`})}),B=E({editor:y,selector:e=>e.editor.isActive({textAlign:`center`})}),V=E({editor:y,selector:e=>e.editor.isActive({textAlign:`right`})}),H=E({editor:y,selector:e=>e.editor.isActive({textAlign:`justify`})});return C(`div`,{"data-slot":`text-editor-toolbar`,className:b(`flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5`,x),children:[S(M,{onClick:()=>y.chain().focus().undo().run(),disabled:!y.can().undo(),title:`Undo`,children:S(v,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().redo().run(),disabled:!y.can().redo(),title:`Redo`,children:S(h,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleHeading({level:1}).run(),isActive:w,title:`Heading 1`,children:S(s,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleHeading({level:2}).run(),isActive:T,title:`Heading 2`,children:S(c,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleHeading({level:3}).run(),isActive:D,title:`Heading 3`,children:S(l,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleBold().run(),isActive:O,title:`Bold`,children:S(i,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleItalic().run(),isActive:k,title:`Italic`,children:S(u,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleUnderline().run(),isActive:A,title:`Underline`,children:S(_,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleStrike().run(),isActive:j,title:`Strikethrough`,children:S(g,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleCode().run(),isActive:P,title:`Inline Code`,children:S(a,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleBulletList().run(),isActive:F,title:`Bullet List`,children:S(d,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleOrderedList().run(),isActive:I,title:`Ordered List`,children:S(f,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleBlockquote().run(),isActive:L,title:`Blockquote`,children:S(m,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleCodeBlock().run(),isActive:R,title:`Code Block`,children:S(o,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setHorizontalRule().run(),title:`Horizontal Rule`,children:S(p,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`left`).run(),isActive:z,title:`Align Left`,children:S(n,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`center`).run(),isActive:B,title:`Align Center`,children:S(e,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`right`).run(),isActive:V,title:`Align Right`,children:S(r,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`justify`).run(),isActive:H,title:`Align Justify`,children:S(t,{className:`h-3.5 w-3.5`})})]})}function F({value:e,defaultValue:t,onChange:n,placeholder:r=`Start writing...`,readOnly:i=!1,showToolbar:a=!0,variant:o,className:s,toolbarClassName:c,editorClassName:l}){let u=T({extensions:[A,k,D.configure({placeholder:r}),O.configure({types:[`heading`,`paragraph`]})],content:e??t,editable:!i,onUpdate:({editor:e})=>{n?.(e.getHTML())}});return y(()=>{!u||e===void 0||u.getHTML()!==e&&u.commands.setContent(e)},[u,e]),y(()=>{u&&u.setEditable(!i)},[u,i]),C(`div`,{"data-slot":`text-editor`,className:b(`lunas-text-editor`,j({variant:o}),s),children:[a&&!i&&u&&S(P,{editor:u,className:c}),S(w,{editor:u,"data-slot":`text-editor-content`,className:b(`flex-1 text-sm text-text-positive bg-background`,l)})]})}export{P as n,F as t};
|
|
2
|
-
//# sourceMappingURL=text-editor-CbBJNn-4.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor-CbBJNn-4.mjs","names":["Underline"],"sources":["../packages/components/features/text-editor/text-editor.variants.ts","../packages/components/features/text-editor/toolbar.tsx","../packages/components/features/text-editor/text-editor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const textEditorVariants = cva(['flex flex-col overflow-hidden rounded-md'], {\n variants: {\n variant: {\n outline: 'border border-border bg-background shadow-xs',\n ghost: 'border-0',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n});\n\nexport type TextEditorVariantProps = VariantProps<typeof textEditorVariants>;\n","'use client';\n\nimport { useEditorState, type Editor } from '@tiptap/react';\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Code,\n Code2,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Minus,\n Quote,\n Redo,\n Strikethrough,\n Underline,\n Undo,\n} from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\ninterface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean;\n}\n\nfunction ToolbarButton({ isActive, className, children, ...props }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"toolbar-button\"\n data-active={isActive || undefined}\n className={cn(\n 'inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n isActive && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nfunction ToolbarDivider() {\n return <div data-slot=\"toolbar-divider\" className=\"mx-0.5 h-5 w-px shrink-0 bg-border\" />;\n}\n\nexport interface TextEditorToolbarProps {\n editor: Editor;\n className?: string;\n}\n\nfunction TextEditorToolbar({ editor, className }: TextEditorToolbarProps) {\n const isHeading1Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 1 }),\n });\n const isHeading2Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 2 }),\n });\n const isHeading3Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 3 }),\n });\n const isParagraphActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('paragraph'),\n });\n const isBoldActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bold'),\n });\n const isItalicActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('italic'),\n });\n const isUnderlineActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('underline'),\n });\n const isStrikeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('strike'),\n });\n const isCodeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('code'),\n });\n const isBulletListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bulletList'),\n });\n const isOrderedListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('orderedList'),\n });\n const isBlockquoteActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('blockquote'),\n });\n const isCodeBlockActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('codeBlock'),\n });\n const isAlignLeftActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'left' }),\n });\n const isAlignCenterActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'center' }),\n });\n const isAlignRightActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'right' }),\n });\n const isAlignJustifyActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'justify' }),\n });\n return (\n <div data-slot=\"text-editor-toolbar\" className={cn('flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5', className)}>\n {/* History */}\n <ToolbarButton onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo\">\n <Undo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo\">\n <Redo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Headings */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={isHeading1Active} title=\"Heading 1\">\n <Heading1 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={isHeading2Active} title=\"Heading 2\">\n <Heading2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={isHeading3Active} title=\"Heading 3\">\n <Heading3 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={isBoldActive} title=\"Bold\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={isItalicActive} title=\"Italic\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={isUnderlineActive} title=\"Underline\">\n <Underline className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={isStrikeActive} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCode().run()} isActive={isCodeActive} title=\"Inline Code\">\n <Code className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={isBulletListActive} title=\"Bullet List\">\n <List className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={isOrderedListActive} title=\"Ordered List\">\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Blocks */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={isBlockquoteActive} title=\"Blockquote\">\n <Quote className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCodeBlock().run()} isActive={isCodeBlockActive} title=\"Code Block\">\n <Code2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal Rule\">\n <Minus className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={isAlignLeftActive} title=\"Align Left\">\n <AlignLeft className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={isAlignCenterActive} title=\"Align Center\">\n <AlignCenter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={isAlignRightActive} title=\"Align Right\">\n <AlignRight className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('justify').run()} isActive={isAlignJustifyActive} title=\"Align Justify\">\n <AlignJustify className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </div>\n );\n}\n\nexport { TextEditorToolbar };\n","'use client';\n\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { useEffect } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\nimport { textEditorVariants, type TextEditorVariantProps } from './text-editor.variants';\nimport { TextEditorToolbar } from './toolbar';\n\nexport interface TextEditorProps extends TextEditorVariantProps {\n value?: string;\n defaultValue?: string;\n onChange?: (html: string) => void;\n placeholder?: string;\n readOnly?: boolean;\n showToolbar?: boolean;\n className?: string;\n toolbarClassName?: string;\n editorClassName?: string;\n}\n\nfunction TextEditor({\n value,\n defaultValue,\n onChange,\n placeholder = 'Start writing...',\n readOnly = false,\n showToolbar = true,\n variant,\n className,\n toolbarClassName,\n editorClassName,\n}: TextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit, Underline, Placeholder.configure({ placeholder }), TextAlign.configure({ types: ['heading', 'paragraph'] })],\n content: value ?? defaultValue,\n editable: !readOnly,\n onUpdate: ({ editor: e }) => {\n onChange?.(e.getHTML());\n },\n });\n\n // Sync controlled value into the editor without re-triggering onChange\n useEffect(() => {\n if (!editor || value === undefined) return;\n if (editor.getHTML() === value) return;\n editor.commands.setContent(value);\n }, [editor, value]);\n\n // Sync editable state\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n return (\n <div data-slot=\"text-editor\" className={cn('lunas-text-editor', textEditorVariants({ variant }), className)}>\n {showToolbar && !readOnly && editor && <TextEditorToolbar editor={editor} className={toolbarClassName} />}\n <EditorContent editor={editor} data-slot=\"text-editor-content\" className={cn('flex-1 text-sm text-text-positive bg-background', editorClassName)} />\n </div>\n );\n}\n\nexport { TextEditor };\n"],"mappings":"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"}
|