@lyfie/luthor 2.4.0 → 2.5.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/README.md +6 -4
- package/dist/LegacyRichEditor-Hzt4pYS-.d.ts +24 -0
- package/dist/chunk-4DOFRI6R.js +1 -0
- package/dist/chunk-7KHDV6HL.js +1 -0
- package/dist/chunk-I7ETX4BN.js +1 -0
- package/dist/{chunk-ONBHJIZQ.js → chunk-LG5WRRFQ.js} +3 -3
- package/dist/chunk-MYQMH4OW.js +1 -0
- package/dist/chunk-PAUOCZCW.js +1 -0
- package/dist/chunk-QCGA72CH.js +1 -0
- package/dist/chunk-YWKRMBRS.js +13 -0
- package/dist/{ExtensiveEditor-6OT-Dmr1.d.ts → index-BjlX1b8G.d.ts} +16 -2
- package/dist/{index-DZPcit31.d.ts → index-CtyjH6lX.d.ts} +1 -2
- package/dist/index.css +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.js +1 -1
- package/dist/presets/compose/index.d.ts +1 -12
- package/dist/presets/compose/index.js +1 -1
- package/dist/presets/extensive/index.d.ts +2 -3
- package/dist/presets/extensive/index.js +1 -1
- package/dist/presets/headless-editor/index.d.ts +13 -6
- package/dist/presets/headless-editor/index.js +1 -1
- package/dist/presets/html-editor/index.d.ts +18 -0
- package/dist/presets/html-editor/index.js +1 -0
- package/dist/presets/legacy-rich/index.d.ts +8 -0
- package/dist/presets/legacy-rich/index.js +1 -0
- package/dist/presets/md-editor/index.d.ts +19 -0
- package/dist/presets/md-editor/index.js +1 -0
- package/dist/presets/{composer → simple-editor}/index.d.ts +14 -15
- package/dist/presets/simple-editor/index.js +1 -0
- package/dist/presets/slash-editor/index.d.ts +16 -0
- package/dist/presets/slash-editor/index.js +1 -0
- package/package.json +4 -4
- package/dist/chunk-42NSZXCX.js +0 -1
- package/dist/chunk-AHHU2IZS.js +0 -1
- package/dist/chunk-MDSRHDWB.js +0 -1
- package/dist/chunk-MGWT45KA.js +0 -1
- package/dist/chunk-TRGIRBLU.js +0 -1
- package/dist/chunk-VITE7CVN.js +0 -1
- package/dist/index-BtdZVw3X.d.ts +0 -17
- package/dist/presets/composer/index.js +0 -1
- package/dist/presets/md-friendly/index.d.ts +0 -19
- package/dist/presets/md-friendly/index.js +0 -1
- package/dist/presets/notion-like/index.d.ts +0 -17
- package/dist/presets/notion-like/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {f as f$1,e,d}from'./chunk-I7ETX4BN.js';import {ga,ra}from'./chunk-LG5WRRFQ.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var s=d,f=e,o=forwardRef(({className:a,variantClassName:E,toolbarClassName:n,toolbarLayout:l,initialMode:m="visual",defaultEditorView:p,...c},M)=>jsx(f$1,{ref:M,...c,className:["luthor-preset-md-editor",a].filter(Boolean).join(" "),variantClassName:["luthor-preset-md-editor__variant",E].filter(Boolean).join(" "),toolbarClassName:["luthor-preset-md-editor__toolbar",n].filter(Boolean).join(" "),sourceFormat:"markdown",initialMode:m,defaultEditorView:p,toolbarLayout:l??f}));o.displayName="MDEditor";var L={id:"md-editor",label:"MD Editor",description:"Markdown-native feature set with visual, JSON, and MD source views.",extensions:ra({featureFlags:s}),components:{Editor:o},toolbar:["undo","redo","blockFormat","quote","bold","italic","strikethrough","code","codeBlock","link","unorderedList","orderedList","checkList","horizontalRule"],config:ga("md-editor","Write markdown..."),css:"md-editor/styles.css"};export{o as a,L as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {ga,ra,Da}from'./chunk-LG5WRRFQ.js';import {jsx}from'react/jsx-runtime';var f=["visual","json","markdown","html"],c={bold:true,italic:true,underline:true,strikethrough:true,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:true,horizontalRule:true,table:true,list:true,history:true,image:false,blockFormat:true,code:true,codeIntelligence:false,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:false,youTubeEmbed:false,slashCommand:true,draggableBlock:true,commandPalette:false,floatingToolbar:false,contextMenu:false,emoji:false,customNode:false,themeToggle:false},e=["format.bold","format.italic","format.underline","format.strikethrough","format.code","block.paragraph","block.heading1","block.heading2","block.heading3","block.heading4","block.heading5","block.heading6","block.quote","block.codeblock","list.bullet","list.numbered","list.check","link.insert","insert.horizontal-rule","insert.table"],h={allowlist:e};function t({className:l,variantClassName:s,slashVisibility:i,isDraggableEnabled:n=true,featureFlags:d,isToolbarEnabled:u=false,...m}){return jsx(Da,{...m,className:["luthor-preset-slash-editor",l].filter(Boolean).join(" "),variantClassName:["luthor-preset-slash-editor__variant",s].filter(Boolean).join(" "),availableModes:f,isToolbarEnabled:u,slashCommandVisibility:i??h,featureFlags:{...c,...d??{},draggableBlock:n,slashCommand:true,commandPalette:false}})}var g={id:"slash-editor",label:"Slash Editor",description:"Slash-first editing with curated commands and draggable block support.",extensions:ra({featureFlags:{bold:true,italic:true,underline:true,strikethrough:true,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:true,horizontalRule:true,table:true,list:true,history:true,image:false,blockFormat:true,code:true,codeIntelligence:false,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:false,youTubeEmbed:false,slashCommand:true,draggableBlock:true,floatingToolbar:false,contextMenu:false,commandPalette:false,emoji:false,customNode:false,themeToggle:false}}),components:{Editor:t},toolbar:[...e],config:ga("slash-editor","Type '/' for commands..."),css:"slash-editor/styles.css"};export{t as a,g as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {ga,ra,Da,ia}from'./chunk-LG5WRRFQ.js';import {jsonToMarkdown}from'@lyfie/luthor-headless';import {useRef,useState,useMemo,useCallback,useEffect}from'react';import {jsx,jsxs}from'react/jsx-runtime';var W=JSON.stringify({root:{children:[{children:[{detail:0,format:0,mode:"normal",style:"",text:"",type:"text",version:1}],direction:null,format:"",indent:0,type:"paragraph",version:1}],direction:null,format:"",indent:0,type:"root",version:1}});function N(o){return typeof o=="number"?`${o}px`:o}function D(o,n){if(typeof o=="number"&&Number.isFinite(o))return o;if(typeof o=="string"){let l=o.trim();if(l.length===0)return n;let g=Number.parseFloat(l.replace("px",""));if(Number.isFinite(g))return g}return n}function ce(o){try{let n=o?JSON.parse(o):void 0;return ia(jsonToMarkdown(n))}catch{return ""}}function Z(o,n,l){return l<=n?n:Math.min(l,Math.max(n,o))}function me(o,n,l){o.focus();let L=Array.from(o.children).filter(s=>s instanceof HTMLElement).reduce((s,r)=>{let u=r.getBoundingClientRect(),M=u.top+u.height/2;if(!s)return r;let y=s.getBoundingClientRect(),P=y.top+y.height/2;return Math.abs(M-l)<Math.abs(P-l)?r:s},null)??o.firstElementChild??o,C=o.getBoundingClientRect(),x=L.getBoundingClientRect(),a=Z(n,C.left+1,C.right-1),c=Z(l,x.top+1,x.bottom-1),d=document,m=d.caretPositionFromPoint?.(a,c);if(m){let s=window.getSelection();if(!s)return;let r=document.createRange();r.setStart(m.offsetNode,m.offset),r.collapse(true),s.removeAllRanges(),s.addRange(r);return}let f=d.caretRangeFromPoint?.(a,c);if(!f)return;let p=window.getSelection();p&&(f.collapse(true),p.removeAllRanges(),p.addRange(f));}function j({className:o,variantClassName:n,initialTheme:l,onThemeChange:g,theme:z,defaultContent:L,showDefaultContent:C=false,placeholder:x,formattingOptions:a,onSend:c,outputFormat:d="md",clearOnSend:m=true,allowEmptySend:f=false,submitOnEnter:p=false,allowShiftEnter:s=true,minHeight:r=56,maxHeight:u=220,minWidth:M=240,maxWidth:y="100%",showBottomToolbar:P=true,toolbarButtons:te=[],toolbarClassName:oe,toolbarStyle:re,showSendButton:R=true,sendButtonPlacement:w="inside",sendButtonContent:K="Send",sendButtonAriaLabel:V="Send message",sendButtonClassName:I,scrollAreaClassName:B}){let F=useRef(null),E=useRef(null),[J,ie]=useState(()=>D(r,56)),q=useMemo(()=>D(r,56),[r]),A=useMemo(()=>D(u,220),[u]),O=useMemo(()=>({bold:a?.bold!==false,italic:a?.italic!==false,strikethrough:a?.strikethrough!==false}),[a]),ne=useMemo(()=>({disabledCommandIds:["history.undo","history.redo"],bindings:{"format.bold":[{key:"b",ctrlKey:true},{key:"b",metaKey:true}],"format.italic":[{key:"i",ctrlKey:true},{key:"i",metaKey:true}],"format.strikethrough":[{key:"x",ctrlKey:true,shiftKey:true},{key:"x",metaKey:true,shiftKey:true}],"format.code":false,"block.codeblock":false}}),[]),_=useCallback(()=>{let e=F.current?.getJSON()??W,t=ce(e);return {json:e,markdown:t,text:d==="json"?e:t}},[d]),T=useCallback(()=>{if(!c)return;let e=_();!f&&!e.markdown.trim()||(c({format:d,text:e.text,markdown:e.markdown,json:e.json}),m&&F.current?.injectJSON(W));},[f,m,c,d,_]),h=useCallback(()=>{let e=E.current;if(!e)return;let t=e.querySelector(".luthor-content-editable");if(!t)return;let i=Math.max(q,Math.min(A,t.scrollHeight));ie(i);},[A,q]),se=useCallback(e=>{!p||e.key!=="Enter"||e.nativeEvent.isComposing||e.shiftKey&&s||(e.preventDefault(),T());},[s,T,p]),le=useCallback(e=>{let t=e.target;if(t.closest("button, a, input, textarea, [contenteditable='true']")||t.closest(".luthor-simple-editor-bottom-toolbar"))return;let S=E.current?.querySelector(".luthor-content-editable");S&&(e.preventDefault(),me(S,e.clientX,e.clientY));},[]);useEffect(()=>{h();},[h]),useEffect(()=>{let e=E.current;if(!e)return;let t=e.querySelector(".luthor-content-editable");if(!t)return;let i=()=>h();t.addEventListener("input",i),t.addEventListener("keyup",i),t.addEventListener("paste",i);let S=typeof ResizeObserver<"u"?new ResizeObserver(()=>h()):null;S?.observe(t);let Y=new MutationObserver(()=>h());return Y.observe(t,{childList:true,subtree:true,characterData:true}),()=>{t.removeEventListener("input",i),t.removeEventListener("keyup",i),t.removeEventListener("paste",i),S?.disconnect(),Y.disconnect();}},[h]),useEffect(()=>{let t=E.current?.querySelector(".luthor-richtext-container");if(!t||!B)return;let i=B.split(/\s+/).filter(Boolean);if(i.length!==0)return t.classList.add(...i),()=>{t.classList.remove(...i);}},[B]);let ae=useMemo(()=>({"--luthor-simple-editor-min-height":N(r),"--luthor-simple-editor-max-height":N(u),"--luthor-simple-editor-current-height":`${J}px`,"--luthor-simple-editor-min-width":N(M),"--luthor-simple-editor-max-width":N(y)}),[J,u,y,r,M]);return jsx("div",{ref:E,className:["luthor-preset-simple-editor",R&&w==="inside"?"luthor-preset-simple-editor--send-inside":"",o].filter(Boolean).join(" "),style:ae,onKeyDownCapture:se,onMouseDownCapture:le,children:jsxs("div",{className:"luthor-simple-editor-row",children:[jsxs("div",{className:"luthor-simple-editor-shell",children:[jsx(Da,{ref:F,initialTheme:l,onThemeChange:g,theme:z,defaultContent:L,showDefaultContent:C,placeholder:x,variantClassName:["luthor-preset-simple-editor__variant",n].filter(Boolean).join(" "),isToolbarEnabled:false,availableModes:["visual"],initialMode:"visual",shortcutConfig:ne,featureFlags:{bold:O.bold,italic:O.italic,underline:false,strikethrough:O.strikethrough,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:false,horizontalRule:false,table:false,list:false,image:false,blockFormat:false,code:false,codeIntelligence:false,codeFormat:false,iframeEmbed:false,youTubeEmbed:false,floatingToolbar:false,contextMenu:false,commandPalette:false,slashCommand:false,emoji:false,draggableBlock:false,customNode:false,themeToggle:false,history:false}}),R&&w==="inside"&&jsx("button",{type:"button",className:["luthor-simple-editor-action","luthor-simple-editor-action-send","luthor-simple-editor-action-send--inside",I].filter(Boolean).join(" "),"data-testid":"simple-editor-send-button",onClick:T,"aria-label":V,children:K}),P&&jsx("div",{className:["luthor-simple-editor-bottom-toolbar",oe].filter(Boolean).join(" "),style:re,"data-testid":"simple-editor-actions",children:te.map(e=>jsx("button",{type:"button",className:["luthor-simple-editor-action",e.className].filter(Boolean).join(" "),"aria-label":e.ariaLabel,disabled:e.disabled,title:e.title,onClick:e.onClick,children:e.content},e.id))})]}),R&&w==="right"&&jsx("button",{type:"button",className:["luthor-simple-editor-action","luthor-simple-editor-action-send","luthor-simple-editor-action-send--right",I].filter(Boolean).join(" "),"data-testid":"simple-editor-send-button",onClick:T,"aria-label":V,children:K})]})})}var fe={id:"simple-editor",label:"Simple Editor",description:"Lightweight editor with constrained formatting and send controls.",extensions:ra({featureFlags:{bold:true,italic:true,underline:false,strikethrough:true,table:false,image:false,blockFormat:false,code:false,codeIntelligence:false,codeFormat:false,list:false,iframeEmbed:false,youTubeEmbed:false,commandPalette:false,slashCommand:false,draggableBlock:false,customNode:false,history:false}}),components:{Editor:j},toolbar:[],config:ga("simple-editor","Type your message..."),css:"simple-editor/styles.css"};export{j as a,fe as b};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {ra,ga,ja,ia,ha,ea,fa}from'./chunk-LG5WRRFQ.js';import {forwardRef,useMemo,useState,useRef,useImperativeHandle,useCallback,useEffect}from'react';import {createEditorSystem,markdownToJSON,jsonToHTML,jsonToMarkdown,RichText,htmlToJSON}from'@lyfie/luthor-headless';import {jsx,jsxs}from'react/jsx-runtime';var{Provider:le,useEditor:de}=createEditorSystem(),G=["visual","json","markdown","html"],ue={visual:"Visual",json:"JSON",markdown:"MD",html:"HTML"},ce={json:"Invalid JSON",markdown:"Invalid Markdown",html:"Invalid HTML"},$="Start writing...",V="Enter JSON document content...",z="Enter Markdown content...",Q="Enter HTML content...",he=`## Hi there,
|
|
2
|
+
|
|
3
|
+
this is a *basic* example of **Luthor Headless**. It covers simple text styles and lists:
|
|
4
|
+
|
|
5
|
+
- That's a bullet list with one item.
|
|
6
|
+
- ... and one more item.
|
|
7
|
+
|
|
8
|
+
Try a code block next:
|
|
9
|
+
|
|
10
|
+
\`\`\`
|
|
11
|
+
console.log("hello from luthor");
|
|
12
|
+
\`\`\`
|
|
13
|
+
`,be=markdownToJSON(he),D={root:{type:"root",version:1,format:"",indent:0,direction:null,children:[{type:"paragraph",version:1,format:"",indent:0,direction:null,children:[{type:"text",version:1,text:"",detail:0,format:0,mode:"normal",style:""}]}]}},j={bold:true,italic:true,underline:false,strikethrough:true,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:false,horizontalRule:true,table:false,list:true,history:true,image:false,blockFormat:true,code:true,codeIntelligence:false,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:false,youTubeEmbed:false,floatingToolbar:false,contextMenu:false,commandPalette:false,slashCommand:false,emoji:false,draggableBlock:false,customNode:false,themeToggle:false};function A(s){return s instanceof Error&&s.message.trim()?s.message.trim():"Unable to process the current source content."}function W(s){return s&&typeof s=="object"?s:D}function Y(s){let l=s.trim();return l?JSON.parse(l):D}function me(s,l){switch(s){case "json":return Y(l);case "markdown":return markdownToJSON(l);case "html":return htmlToJSON(l)}}function g(s,l){let d=W(l);switch(s){case "json":return ha(JSON.stringify(d));case "markdown":return ia(jsonToMarkdown(d));case "html":return ja(jsonToHTML(d))}}function pe(s){return typeof s=="string"||typeof s>"u"?{visual:s??$,json:V,markdown:z,html:Q}:{visual:s.visual??$,json:s.json??V,markdown:s.markdown??z,html:s.html??Q}}function Ee({initialMode:s,placeholders:l,onReady:d}){let{activeStates:N,commands:e,export:h,import:f}=de(),[i,v]=useState(s),[b,m]=useState({json:"",markdown:"",html:""}),[S,u]=useState(null),y=useRef(false),t=N,p=useCallback(()=>{let a=W(h.toJSON()),n={json:g("json",a),markdown:g("markdown",a),html:g("html",a)};return m(n),n},[h]),O=useCallback((a,n)=>{let C=me(a,n);return f.fromJSON(C),C},[f]),H=useMemo(()=>({injectJSON:a=>{try{let n=Y(a);f.fromJSON(n),u(null),p();}catch(n){u({mode:"json",error:A(n)});}},getJSON:()=>g("json",h.toJSON())}),[h,f,p]);useEffect(()=>{!d||y.current||(y.current=true,d(H));},[H,d]);let F=useCallback(a=>{if(a!==i){if(i==="visual"){if(a!=="visual")try{p(),u(null);}catch(n){u({mode:a,error:A(n)});return}v(a);return}try{let n=b[i],C=O(i,n);if(a==="visual"){u(null),v("visual");return}let X=g(a,C);m(Z=>({...Z,[a]:X})),u(null),v(a);}catch(n){u({mode:i,error:A(n)});}}},[i,O,b,p]),L=useCallback(()=>{i==="visual"&&(t.bold&&e.toggleBold?.(),t.italic&&e.toggleItalic?.(),t.strikethrough&&e.toggleStrikethrough?.(),t.code&&e.formatText?.("code"),e.removeLink?.());},[e,i,t.bold,t.code,t.italic,t.strikethrough]),x=useCallback(()=>{i==="visual"&&(t.unorderedList&&e.toggleUnorderedList?.(),t.orderedList&&e.toggleOrderedList?.(),t.isQuote&&e.toggleQuote?.(),t.isInCodeBlock&&e.toggleCodeBlock?.(),e.toggleParagraph?.());},[e,i,t.isInCodeBlock,t.isQuote,t.orderedList,t.unorderedList]),c=useCallback(()=>{i==="visual"&&e.insertHardBreak?.();},[e,i]),r=i==="visual";return jsxs("div",{className:"luthor-editor","data-mode":i,children:[jsx("div",{className:"luthor-editor-header",children:jsx(ea,{mode:i,onModeChange:a=>F(a),availableModes:G,labels:ue})}),jsxs("div",{className:"luthor-preset-headless-editor__toolbar",role:"toolbar","aria-label":"Headless editor toolbar",children:[jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.bold?" is-active":""}`,onClick:()=>e.toggleBold?.(),disabled:!r,children:"Bold"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.italic?" is-active":""}`,onClick:()=>e.toggleItalic?.(),disabled:!r,children:"Italic"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.strikethrough?" is-active":""}`,onClick:()=>e.toggleStrikethrough?.(),disabled:!r,children:"Strike"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.code?" is-active":""}`,onClick:()=>e.formatText?.("code"),disabled:!r,children:"Code"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:L,disabled:!r,children:"Clear marks"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:x,disabled:!r,children:"Clear nodes"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isParagraph?" is-active":""}`,onClick:()=>e.toggleParagraph?.(),disabled:!r,children:"Paragraph"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH1?" is-active":""}`,onClick:()=>e.toggleHeading?.("h1"),disabled:!r,children:"H1"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH2?" is-active":""}`,onClick:()=>e.toggleHeading?.("h2"),disabled:!r,children:"H2"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH3?" is-active":""}`,onClick:()=>e.toggleHeading?.("h3"),disabled:!r,children:"H3"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH4?" is-active":""}`,onClick:()=>e.toggleHeading?.("h4"),disabled:!r,children:"H4"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH5?" is-active":""}`,onClick:()=>e.toggleHeading?.("h5"),disabled:!r,children:"H5"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH6?" is-active":""}`,onClick:()=>e.toggleHeading?.("h6"),disabled:!r,children:"H6"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.unorderedList?" is-active":""}`,onClick:()=>e.toggleUnorderedList?.(),disabled:!r,children:"Bullet list"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.orderedList?" is-active":""}`,onClick:()=>e.toggleOrderedList?.(),disabled:!r,children:"Ordered list"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isInCodeBlock?" is-active":""}`,onClick:()=>e.toggleCodeBlock?.(),disabled:!r,children:"Code block"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isQuote?" is-active":""}`,onClick:()=>e.toggleQuote?.(),disabled:!r,children:"Blockquote"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.insertHorizontalRule?.(),disabled:!r,children:"Horizontal rule"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:c,disabled:!r,children:"Hard break"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.undo?.(),disabled:!r||!t.canUndo,children:"Undo"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.redo?.(),disabled:!r||!t.canRedo,children:"Redo"})]}),jsx("div",{className:`luthor-preset-headless-editor__visual-shell${r?"":" is-hidden"}`,"aria-hidden":!r,children:jsx(RichText,{placeholder:l.visual,classNames:{container:"luthor-richtext-container luthor-preset-headless-editor__container",contentEditable:"luthor-content-editable luthor-preset-headless-editor__content",placeholder:"luthor-placeholder luthor-preset-headless-editor__placeholder"}})}),!r&&jsxs("div",{className:"luthor-source-panel",children:[S&&S.mode===i&&jsxs("div",{className:"luthor-source-error",children:[jsx("div",{className:"luthor-source-error-icon",children:"!"}),jsxs("div",{className:"luthor-source-error-message",children:[jsx("strong",{children:ce[i]}),jsx("p",{children:S.error}),jsx("small",{children:"Fix the source input and try again."})]})]}),i==="json"&&jsx(fa,{value:b.json,onChange:a=>{m(n=>({...n,json:a}));},placeholder:l.json}),i==="markdown"&&jsx(fa,{value:b.markdown,onChange:a=>{m(n=>({...n,markdown:a}));},placeholder:l.markdown,className:"luthor-source-view--wrapped",wrap:"soft"}),i==="html"&&jsx(fa,{value:b.html,onChange:a=>{m(n=>({...n,html:a}));},placeholder:l.html,className:"luthor-source-view--wrapped",wrap:"soft"})]})]})}var P=forwardRef(({className:s,variantClassName:l,placeholder:d,onReady:N,defaultContent:e,showDefaultContent:h=true,initialMode:f="visual",defaultEditorView:i,featureFlags:v,...b},m)=>{let S=i??f,u=G.includes(S)?S:"visual",y=useMemo(()=>pe(d),[d]),t=useMemo(()=>({...j,...v??{},draggableBlock:false,themeToggle:false,table:false,image:false,iframeEmbed:false,youTubeEmbed:false,customNode:false,slashCommand:false,commandPalette:false,contextMenu:false,floatingToolbar:false}),[v]),p=useMemo(()=>JSON.stringify(t),[t]),O=useMemo(()=>{let c=JSON.parse(p);return ra({featureFlags:c})},[p]),[H,F]=useState(null),L=useRef(false);useImperativeHandle(m,()=>H??{injectJSON:()=>{},getJSON:()=>g("json",D)},[H]);let x=useCallback(c=>{F(c),L.current||(e?c.injectJSON(e):h&&c.injectJSON(g("json",be)),L.current=true),N?.(c);},[e,N,h]);return jsx("div",{className:["luthor-preset","luthor-preset-headless-editor","luthor-editor-wrapper","luthor-preset-headless-editor__variant",l,s].filter(Boolean).join(" "),children:jsx(le,{extensions:O,children:jsx(Ee,{initialMode:u,placeholders:y,onReady:x})})})});P.displayName="HeadlessEditorPreset";var ge={id:"headless-editor",label:"Headless Editor",description:"Headless-style rich editor with text toolbar pills and source tabs.",extensions:ra({featureFlags:j}),components:{Editor:P},toolbar:["bold","italic","strikethrough","code","clearMarks","clearNodes","paragraph","h1","h2","h3","h4","h5","h6","unorderedList","orderedList","codeBlock","quote","horizontalRule","hardBreak","undo","redo"],config:ga("headless-editor","Start writing..."),css:"headless-editor/styles.css"};export{P as a,ge as b};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { LuthorEditorThemeOverrides, CommandPaletteItem, SlashCommandItem, FontFamilyOption, FontSizeOption, LineHeightOption, CodeHighlightProvider, CodeLanguageOptionsConfig, LuthorTheme } from '@lyfie/luthor-headless';
|
|
2
|
+
import { LuthorEditorThemeOverrides, CommandPaletteItem, SlashCommandItem, FontFamilyOption, FontSizeOption, LineHeightOption, CodeHighlightProvider, CodeLanguageOptionsConfig, LuthorTheme, Extension as Extension$1, EditorConfig } from '@lyfie/luthor-headless';
|
|
3
3
|
|
|
4
4
|
type CoreTheme = "light" | "dark";
|
|
5
5
|
type CoreEditorMode = "visual" | "json" | "markdown" | "html";
|
|
@@ -463,4 +463,18 @@ interface ExtensiveEditorProps {
|
|
|
463
463
|
}
|
|
464
464
|
declare const ExtensiveEditor: react.ForwardRefExoticComponent<ExtensiveEditorProps & react.RefAttributes<ExtensiveEditorRef>>;
|
|
465
465
|
|
|
466
|
-
|
|
466
|
+
interface EditorPreset {
|
|
467
|
+
id: string;
|
|
468
|
+
label: string;
|
|
469
|
+
description?: string;
|
|
470
|
+
extensions?: Extension$1[];
|
|
471
|
+
config?: EditorConfig;
|
|
472
|
+
theme?: LuthorTheme;
|
|
473
|
+
toolbar?: string[];
|
|
474
|
+
components?: Record<string, unknown>;
|
|
475
|
+
css?: string;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
declare const presetRegistry: Record<string, EditorPreset>;
|
|
479
|
+
|
|
480
|
+
export { TRADITIONAL_TOOLBAR_LAYOUT as A, type BlockHeadingLevel as B, type CoreEditorCommands as C, type DefaultSettings as D, type ExtensiveEditorProps as E, type FeatureFlagOverrides as F, type TextAlignment as G, type ToolbarAlignment as H, type ImageAlignment as I, type ToolbarPosition as J, type KeyboardShortcut as K, type ToolbarSection as L, commandsToCommandPaletteItems as M, commandsToSlashCommandItems as N, createExtensiveExtensions as O, extensiveExtensions as P, type QuoteStyleVars as Q, generateCommands as R, type ShortcutBindingOverride as S, type ToolbarLayout as T, presetRegistry as U, registerKeyboardShortcuts as V, DEFAULT_FEATURE_FLAGS as W, isFeatureEnabled as X, resolveFeatureFlags as Y, type ExtensiveEditorRef as a, type CoreEditorActiveStates as b, type CoreTheme as c, type CoreEditorMode as d, type CoreToolbarClassNames as e, type ToolbarStyleVars as f, type ToolbarVisibility as g, type ToolbarItemType as h, BLOCK_HEADING_LEVELS as i, type BlockFormat as j, type CommandConfig as k, type CommandGenerationOptions as l, DEFAULT_TOOLBAR_LAYOUT as m, type EditorPreset as n, type EditorThemeOverrides as o, ExtensiveEditor as p, type ExtensiveEditorMode as q, type ExtensiveExtensionsConfig as r, type FeatureFlag as s, type FeatureFlags as t, type InsertImageConfig as u, type InsertTableConfig as v, type ShortcutConfig as w, type SlashCommandVisibility as x, type SlashCommandVisibilityFilters as y, type SlashCommandVisibilitySelection as z };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as EditorPreset, h as ToolbarItemType } from './index-BjlX1b8G.js';
|
|
2
2
|
import { FontFamilyOption, FontSizeOption, LineHeightOption, CodeLanguageOptionsConfig } from '@lyfie/luthor-headless';
|
|
3
|
-
import { g as ToolbarItemType } from './ExtensiveEditor-6OT-Dmr1.js';
|
|
4
3
|
|
|
5
4
|
declare const extensiveToolbar: readonly ["undo", "redo", "fontFamily", "heading", "fontSize", "lineHeight", "textColor", "textHighlight", "bold", "italic", "underline", "strikethrough", "subscript", "superscript", "link", "image", "table", "horizontalRule", "iframeEmbed", "youtubeEmbed", "blockquote", "code", "codeBlock", "bulletedList", "numberedList", "checkList", "commandPalette", "floatingToolbar", "contextMenu", "draggableBlock", "customNode", "sourceMode", "themeToggle"];
|
|
6
5
|
declare const extensivePreset: EditorPreset;
|
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=light]{--luthor-bg: #ffffff;--luthor-fg: #0f172a;--luthor-border: #e2e8f0;--luthor-border-hover: #cbd5e1;--luthor-border-active: #94a3b8;--luthor-accent: #0f172a;--luthor-accent-hover: #1e293b;--luthor-shadow: rgba(0, 0, 0, .08);--luthor-muted: #f8fafc;--luthor-muted-fg: #64748b;--luthor-toolbar-bg: var(--luthor-muted);--luthor-toolbar-section-border: var(--luthor-border);--luthor-toolbar-button-fg: var(--luthor-fg);--luthor-toolbar-button-hover-bg: var(--luthor-muted);--luthor-toolbar-button-hover-border: var(--luthor-border-hover);--luthor-toolbar-button-hover-shadow: 0 4px 12px rgba(0, 0, 0, .15);--luthor-toolbar-button-press-shadow: 0 2px 8px rgba(0, 0, 0, .1);--luthor-toolbar-button-active-bg: var(--luthor-accent);--luthor-toolbar-button-active-border: var(--luthor-accent);--luthor-toolbar-button-active-fg: var(--luthor-bg);--luthor-toolbar-button-active-shadow: 0 2px 8px rgba(0, 0, 0, .2);--luthor-toolbar-button-overlay: linear-gradient(135deg, rgba(255, 255, 255, .1) 0%, rgba(255, 255, 255, .05) 100%);--luthor-toolbar-button-active-overlay: linear-gradient(135deg, rgba(255, 255, 255, .2) 0%, rgba(255, 255, 255, .1) 100%);--luthor-toolbar-color-indicator-border: #000000;--luthor-toolbar-highlight-bg: var(--luthor-muted);--luthor-quote-bg: var(--luthor-muted);--luthor-quote-fg: var(--luthor-fg);--luthor-quote-border: var(--luthor-accent);--luthor-text-bold-color: var(--luthor-fg);--luthor-link-color: var(--luthor-accent);--luthor-list-marker-color: var(--luthor-fg);--luthor-list-checkbox-color: var(--luthor-accent);--luthor-table-border-color: var(--luthor-border);--luthor-table-header-bg: var(--luthor-muted);--luthor-hr-color: var(--luthor-border);--luthor-placeholder-color: var(--luthor-muted-fg);--luthor-codeblock-bg: var(--luthor-muted);--luthor-code-unhighlighted-fg: #24292e;--luthor-floating-bg: var(--luthor-bg);--luthor-floating-fg: var(--luthor-fg);--luthor-floating-border: var(--luthor-border);--luthor-floating-shadow: var(--luthor-shadow);--luthor-floating-muted: var(--luthor-muted);--luthor-floating-border-hover: var(--luthor-border-hover);--luthor-floating-border-active: var(--luthor-border-active);--luthor-floating-accent: var(--luthor-accent);--luthor-floating-accent-fg: var(--luthor-bg);--luthor-syntax-comment: #64748b;--luthor-syntax-keyword: #64748b;--luthor-syntax-string: #64748b;--luthor-syntax-number: #64748b;--luthor-syntax-function: #64748b;--luthor-syntax-variable: #64748b}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark]{--luthor-bg: #0a0a0a;--luthor-fg: #ededed;--luthor-border: #262626;--luthor-border-hover: #404040;--luthor-border-active: #525252;--luthor-accent: #ededed;--luthor-accent-hover: #d4d4d8;--luthor-shadow: rgba(0, 0, 0, .5);--luthor-muted: #171717;--luthor-muted-fg: #a3a3a3;--luthor-toolbar-bg: var(--luthor-muted);--luthor-toolbar-section-border: var(--luthor-border);--luthor-toolbar-button-fg: var(--luthor-fg);--luthor-toolbar-button-hover-bg: var(--luthor-muted);--luthor-toolbar-button-hover-border: var(--luthor-border-hover);--luthor-toolbar-button-hover-shadow: 0 4px 12px rgba(0, 0, 0, .35);--luthor-toolbar-button-press-shadow: 0 2px 8px rgba(0, 0, 0, .3);--luthor-toolbar-button-active-bg: var(--luthor-accent);--luthor-toolbar-button-active-border: var(--luthor-accent);--luthor-toolbar-button-active-fg: var(--luthor-bg);--luthor-toolbar-button-active-shadow: 0 2px 8px rgba(0, 0, 0, .5);--luthor-toolbar-button-overlay: linear-gradient(135deg, rgba(255, 255, 255, .08) 0%, rgba(255, 255, 255, .03) 100%);--luthor-toolbar-button-active-overlay: linear-gradient(135deg, rgba(255, 255, 255, .14) 0%, rgba(255, 255, 255, .06) 100%);--luthor-toolbar-color-indicator-border: #ffffff;--luthor-toolbar-highlight-bg: var(--luthor-muted);--luthor-quote-bg: color-mix(in srgb, var(--luthor-muted) 92%, #ffffff 8%);--luthor-quote-fg: var(--luthor-fg);--luthor-quote-border: color-mix(in srgb, var(--luthor-accent) 78%, #ffffff 22%);--luthor-text-bold-color: var(--luthor-fg);--luthor-link-color: var(--luthor-accent);--luthor-list-marker-color: var(--luthor-fg);--luthor-list-checkbox-color: var(--luthor-accent);--luthor-table-border-color: var(--luthor-border);--luthor-table-header-bg: var(--luthor-muted);--luthor-hr-color: var(--luthor-border);--luthor-placeholder-color: var(--luthor-muted-fg);--luthor-codeblock-bg: var(--luthor-muted);--luthor-code-unhighlighted-fg: #c9d1d9;--luthor-floating-bg: var(--luthor-bg);--luthor-floating-fg: var(--luthor-fg);--luthor-floating-border: var(--luthor-border);--luthor-floating-shadow: var(--luthor-shadow);--luthor-floating-muted: var(--luthor-muted);--luthor-floating-border-hover: var(--luthor-border-hover);--luthor-floating-border-active: var(--luthor-border-active);--luthor-floating-accent: var(--luthor-accent);--luthor-floating-accent-fg: var(--luthor-bg);--luthor-syntax-comment: #8b949e;--luthor-syntax-keyword: #8b949e;--luthor-syntax-string: #8b949e;--luthor-syntax-number: #8b949e;--luthor-syntax-function: #8b949e;--luthor-syntax-variable: #8b949e}.luthor-preset-extensive.luthor-editor-wrapper{border:1px solid var(--luthor-border);border-radius:8px;background-color:var(--luthor-bg);overflow:hidden;display:flex;flex-direction:column;position:relative;--luthor-theme-transition: .2s ease;width:100%;max-width:100%;min-height:500px;height:auto;isolation:isolate;--luthor-z-dropdown: 20;--luthor-z-popover: 24;--luthor-z-menu: 28;--luthor-z-overlay: 32;--luthor-z-modal: 36;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition),box-shadow var(--luthor-theme-transition)}.luthor-preset-extensive.luthor-editor-wrapper.luthor-editor-wrapper--toolbar-pinned{overflow:visible}.luthor-preset-extensive.luthor-editor-wrapper,.luthor-preset-extensive.luthor-editor-wrapper *,.luthor-preset-extensive.luthor-editor-wrapper *:before,.luthor-preset-extensive.luthor-editor-wrapper *:after{box-sizing:border-box}.luthor-editor-header{background-color:var(--luthor-muted);border-bottom:1px solid var(--luthor-border);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-top-region--pinned{position:sticky;top:0;z-index:40}.luthor-editor-toolbar-slot{background-color:var(--luthor-toolbar-bg, var(--luthor-muted));transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-toolbar-slot--top{border-bottom:1px solid var(--luthor-border)}.luthor-editor-toolbar-slot--pinned{position:sticky;top:0;z-index:40;background-color:var(--luthor-toolbar-bg, var(--luthor-muted))}.luthor-editor-toolbar-slot--bottom{border-top:1px solid var(--luthor-border)}.luthor-mode-tabs{display:flex;border-bottom:1px solid var(--luthor-border);transition:border-color var(--luthor-theme-transition),background-color var(--luthor-theme-transition)}.luthor-mode-tab{padding:10px 20px;background:none;border:none;cursor:pointer;color:var(--luthor-muted-fg);font-size:14px;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);border-bottom:2px solid transparent;position:relative}.luthor-mode-tab:hover{color:var(--luthor-fg);background-color:var(--luthor-muted)}.luthor-mode-tab.active{color:var(--luthor-accent);border-bottom-color:var(--luthor-accent);background-color:#0f172a0d}.luthor-tab-converting-spinner{display:inline-block;width:12px;height:12px;margin-left:6px;border:2px solid var(--luthor-muted-fg);border-top-color:var(--luthor-accent);border-radius:50%;animation:luthor-spin .6s linear infinite;vertical-align:middle}@keyframes luthor-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.luthor-toolbar{display:flex;align-items:center;gap:4px;padding:8px;flex-wrap:wrap;overflow-x:hidden;overflow-y:visible;row-gap:6px;min-height:48px;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-toolbar--align-left{justify-content:flex-start}.luthor-toolbar--align-center{justify-content:center}.luthor-toolbar--align-right{justify-content:flex-end}.luthor-toolbar-section{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:0 4px;min-width:0}.luthor-toolbar-section:not(:last-child){border-right:1px solid var(--luthor-toolbar-section-border, var(--luthor-border));margin-right:8px;padding-right:8px;transition:border-color var(--luthor-theme-transition)}.luthor-toolbar-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid transparent;border-radius:6px;background-color:transparent;color:var(--luthor-toolbar-button-fg, var(--luthor-fg));cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden}.luthor-toolbar-button:before{content:"";position:absolute;inset:0;background:var(--luthor-toolbar-button-overlay);opacity:0;transition:opacity .2s ease}.luthor-toolbar-button:hover{background-color:var(--luthor-toolbar-button-hover-bg, var(--luthor-muted));border-color:var(--luthor-toolbar-button-hover-border, var(--luthor-border-hover));transform:translateY(-1px);box-shadow:var(--luthor-toolbar-button-hover-shadow)}.luthor-toolbar-button:hover:before{opacity:1}.luthor-toolbar-button:active{transform:translateY(0) scale(.98);box-shadow:var(--luthor-toolbar-button-press-shadow)}.luthor-toolbar-button.active{background-color:var(--luthor-toolbar-button-active-bg, var(--luthor-accent));border-color:var(--luthor-toolbar-button-active-border, var(--luthor-accent));color:var(--luthor-toolbar-button-active-fg, var(--luthor-bg));box-shadow:var(--luthor-toolbar-button-active-shadow)}.luthor-toolbar-button.active:before{background:var(--luthor-toolbar-button-active-overlay);opacity:1}.luthor-toolbar-button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.luthor-toolbar-button:disabled:hover{background-color:transparent;border-color:transparent;transform:none;box-shadow:none}.luthor-toolbar-button:disabled:before{opacity:0}.luthor-toolbar-split-button{display:inline-flex;align-items:center}.luthor-toolbar-split-button .luthor-dropdown{display:inline-flex}.luthor-toolbar-split-button .luthor-toolbar-button{border-radius:0}.luthor-toolbar-split-button>.luthor-toolbar-button:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.luthor-toolbar-split-button .luthor-toolbar-button-arrow{width:20px;border-left-color:transparent;border-top-right-radius:6px;border-bottom-right-radius:6px;padding:0}.luthor-dropdown-divider{height:1px;margin:4px 8px;background-color:var(--luthor-border)}.luthor-color-button{padding-bottom:4px}.luthor-color-button-letter{font-size:14px;line-height:1;font-weight:700;position:relative;z-index:1}.luthor-color-button-indicator{position:absolute;left:7px;right:7px;bottom:5px;height:6px;border-radius:999px;border:.5px solid var(--luthor-toolbar-color-indicator-border, var(--luthor-fg));box-shadow:none;z-index:1}.luthor-color-button.is-highlight .luthor-color-button-letter{padding:0 2px;border-radius:3px;background-color:var(--luthor-toolbar-highlight-bg, var(--luthor-muted))}.luthor-color-button-highlighter{position:relative;z-index:1}.luthor-color-picker{z-index:var(--luthor-z-popover, 440);background-color:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:10px;box-shadow:0 12px 28px #0f172a2e;padding:10px;display:grid;gap:9px;max-width:90vw;width:248px;color:var(--luthor-fg, #0f172a)}.luthor-color-picker-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.luthor-color-picker-title{font-size:12px;font-weight:600;color:var(--luthor-fg)}.luthor-color-picker-native-hidden{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.luthor-color-picker-clear{border:1px solid var(--luthor-border);border-radius:6px;background:var(--luthor-muted);color:var(--luthor-fg);font-size:12px;font-weight:500;padding:4px 8px;cursor:pointer}.luthor-color-picker-clear:hover{border-color:var(--luthor-border-hover)}.luthor-color-picker-section{display:grid;gap:6px}.luthor-color-picker-label{margin:0;font-size:11px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.03em}.luthor-color-swatch-grid,.luthor-color-swatch-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.luthor-color-swatch{width:100%;aspect-ratio:1;border:1px solid var(--luthor-border);border-radius:6px;background-clip:padding-box;cursor:pointer;transition:transform .15s ease,border-color .15s ease;box-shadow:inset 0 0 0 1px #0f172a14}.luthor-color-swatch:hover:enabled{border-color:var(--luthor-border-hover);transform:translateY(-1px)}.luthor-color-swatch:disabled{cursor:not-allowed;background-image:repeating-linear-gradient(45deg,transparent,transparent 4px,var(--luthor-muted) 4px,var(--luthor-muted) 8px);opacity:.7}.luthor-color-picker-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;padding-top:2px}.luthor-color-picker-custom{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--luthor-border);border-radius:6px;background:var(--luthor-muted);color:var(--luthor-fg);font-size:12px;font-weight:500;padding:4px 8px;cursor:pointer}.luthor-color-picker-custom:hover{border-color:var(--luthor-border-hover)}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-picker{box-shadow:0 14px 32px #0009}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-swatch{box-shadow:inset 0 0 0 1px #ffffff14}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-picker-clear,.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-picker-custom{background:#ffffff0a}.luthor-select{position:relative;display:inline-block}.luthor-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 12px;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);color:var(--luthor-fg);cursor:pointer;font-size:14px;min-width:120px;max-width:180px;height:36px;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 3px #0000001a}.luthor-select-trigger span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.luthor-select-trigger:hover{border-color:var(--luthor-border-hover);box-shadow:0 2px 8px #00000026}.luthor-select-trigger.open{border-color:var(--luthor-accent);box-shadow:0 0 0 3px #0f172a1a}.luthor-select-dropdown{position:fixed;z-index:var(--luthor-z-dropdown, 420);background-color:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:6px;box-shadow:0 8px 32px #0000001f;max-height:200px;overflow-y:auto}.luthor-select-option{display:block;width:100%;padding:10px 14px;border:none;background:none;color:var(--luthor-fg);cursor:pointer;font-size:14px;text-align:left;transition:all .15s ease}.luthor-select-option:hover{background-color:var(--luthor-muted)}.luthor-select-option.selected{background-color:var(--luthor-accent);color:var(--luthor-bg);font-weight:500}.luthor-dropdown{position:relative;display:inline-flex}.luthor-dropdown-content{position:fixed;z-index:var(--luthor-z-dropdown, 420);background-color:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:4px;box-shadow:0 4px 6px -1px var(--luthor-shadow);margin-top:2px;min-width:160px;padding:4px 0}.luthor-dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:none;background:none;color:var(--luthor-fg);cursor:pointer;font-size:14px;text-align:left;transition:background-color .15s}.luthor-dropdown-item:hover{background-color:var(--luthor-muted)}.luthor-checklist-variant-grid,.luthor-unordered-variant-grid,.luthor-ordered-variant-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px}.luthor-unordered-variant-option,.luthor-ordered-variant-option{display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease}.luthor-unordered-variant-option:hover,.luthor-ordered-variant-option:hover{border-color:var(--luthor-border-hover);background-color:var(--luthor-muted);transform:translateY(-1px)}.luthor-unordered-variant-option:focus-visible{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-accent) 24%,transparent)}.luthor-ordered-variant-option:focus-visible{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-accent) 24%,transparent)}.luthor-unordered-variant-svg,.luthor-ordered-variant-svg{display:block;width:94px;height:74px}.luthor-unordered-variant-frame,.luthor-ordered-variant-frame{fill:var(--luthor-bg);stroke:var(--luthor-border)}.luthor-unordered-variant-line,.luthor-ordered-variant-line{fill:color-mix(in srgb,var(--luthor-muted-fg) 32%,transparent)}.luthor-ordered-variant-label{fill:var(--luthor-list-marker-color, var(--luthor-fg));font-size:11px;font-weight:500;font-family:Inter,Segoe UI,Arial,sans-serif;letter-spacing:.01em}.luthor-unordered-variant-marker{fill:var(--luthor-list-marker-color, var(--luthor-fg))}.luthor-unordered-variant-marker-open{fill:none;stroke:var(--luthor-list-marker-color, var(--luthor-fg));stroke-width:1.3}.luthor-unordered-variant-arrow{fill:none;stroke:var(--luthor-list-marker-color, var(--luthor-fg));stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}.luthor-checklist-variant-option{display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease}.luthor-checklist-variant-option:hover{border-color:var(--luthor-border-hover);background-color:var(--luthor-muted);transform:translateY(-1px)}.luthor-checklist-variant-option:focus-visible{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-accent) 24%,transparent)}.luthor-checklist-variant-svg{display:block;width:78px;height:42px}.luthor-checklist-variant-frame{fill:var(--luthor-bg);stroke:var(--luthor-border)}.luthor-checklist-variant-box{fill:var(--luthor-bg);stroke:var(--luthor-list-checkbox-color, var(--luthor-accent));stroke-width:1.5}.luthor-checklist-variant-check{fill:none;stroke:var(--luthor-list-checkbox-color, var(--luthor-accent));stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.luthor-checklist-variant-line{fill:color-mix(in srgb,var(--luthor-muted-fg) 32%,transparent)}.luthor-checklist-variant-strike{stroke:var(--luthor-muted-fg);stroke-width:1.35;stroke-linecap:round}.luthor-file-input{display:none}.luthor-editor{flex:1;display:flex;flex-direction:column;min-height:400px;position:relative;--luthor-drag-gutter-width: 56px;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-visual-shell{display:grid;grid-template-columns:var(--luthor-drag-gutter-width) minmax(0,1fr);grid-template-rows:minmax(0,1fr);flex:1;min-height:0}.luthor-editor-visual-shell--no-gutter{grid-template-columns:minmax(0,1fr)}.luthor-editor-visual-shell.is-hidden{position:absolute;inset:0;visibility:hidden;pointer-events:none}.luthor-editor-visual-gutter{grid-column:1;grid-row:1;pointer-events:none;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor--draggable-disabled{--luthor-drag-gutter-width: 0px}.luthor-editor--draggable-disabled .luthor-editor-visual-gutter{display:none}.luthor-richtext-container{position:relative;flex:1;--luthor-editor-content-padding-y: 20px;--luthor-editor-content-padding-x: 20px;--luthor-first-block-offset: calc(8px * var(--luthor-line-height-ratio, 1));background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-visual-shell .luthor-richtext-container{grid-column:2;grid-row:1;min-width:0}.luthor-editor-visual-shell--no-gutter .luthor-richtext-container{grid-column:1}.luthor-content-editable{flex:1;padding:var(--luthor-editor-content-padding-y) var(--luthor-editor-content-padding-x);outline:none;color:var(--luthor-fg);line-height:1;font-size:16px;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),color var(--luthor-theme-transition),border-color var(--luthor-theme-transition)}.luthor-content-editable:focus{outline:none;background-color:var(--luthor-bg)}.luthor-content-editable a,.luthor-content-editable a:hover,.luthor-content-editable a:focus-visible{cursor:pointer}.luthor-placeholder{color:var(--luthor-placeholder-color, var(--luthor-muted-fg));pointer-events:none;position:absolute;top:calc(var(--luthor-editor-content-padding-y) + var(--luthor-first-block-offset));left:var(--luthor-editor-content-padding-x);font-size:16px;line-height:var(--luthor-default-line-height, 1.5);z-index:1;transition:color var(--luthor-theme-transition),background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition)}.luthor-source-panel{padding:20px;flex:1;overflow-y:auto;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-source-view{width:100%;min-height:280px;padding:12px;border:1px solid var(--luthor-border);font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,Consolas,Courier New,monospace;font-size:14px;line-height:1.6;background-color:var(--luthor-bg);color:var(--luthor-fg);border-radius:0;resize:vertical;overflow-x:auto;overflow-y:auto;white-space:pre;tab-size:2;transition:background-color var(--luthor-theme-transition),color var(--luthor-theme-transition),border-color var(--luthor-theme-transition)}.luthor-source-view--wrapped{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;overflow-x:hidden}.luthor-source-error{display:flex;gap:12px;padding:12px;margin-bottom:12px;background-color:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:6px;color:#dc2626;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-source-error{background-color:#ef444426;border-color:#ef444466;color:#fca5a5}.luthor-source-error-icon{flex-shrink:0;font-size:18px;line-height:1}.luthor-source-error-message{flex:1}.luthor-source-error-message strong{display:block;margin-bottom:4px;font-weight:600}.luthor-source-error-message p{margin:4px 0;font-size:13px;line-height:1.4;white-space:pre-wrap;word-break:break-word}.luthor-source-error-message small{display:block;margin-top:6px;font-size:12px;opacity:.7}.luthor-command-palette-overlay{position:absolute;inset:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding:min(20vh,120px) 16px 16px;z-index:var(--luthor-z-overlay, 480);overscroll-behavior:contain}.luthor-command-palette{background:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:12px;box-shadow:0 12px 48px #0000001f;width:min(640px,100%);max-width:100%;max-height:min(560px,calc(100% - min(20vh,120px) - 16px));display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:contain}.luthor-command-palette-header{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--luthor-border);gap:12px}.luthor-command-palette-icon{color:var(--luthor-muted-fg);flex-shrink:0}.luthor-command-palette-input{flex:1;background:transparent;border:none;outline:none;font-size:16px;color:var(--luthor-fg);font-family:inherit}.luthor-command-palette-input::placeholder{color:var(--luthor-muted-fg)}.luthor-command-palette-kbd{background:var(--luthor-muted);border:1px solid var(--luthor-border);border-radius:4px;padding:2px 6px;font-size:11px;color:var(--luthor-muted-fg);font-family:monospace}.luthor-command-palette-list{flex:1;overflow-y:auto;padding:8px 0;overscroll-behavior:contain}.luthor-command-palette-group{margin-bottom:8px}.luthor-command-palette-group-title{padding:8px 20px 4px;font-size:11px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.5px}.luthor-command-palette-item{display:flex;align-items:center;padding:12px 20px;cursor:pointer;border:none;background:none;width:100%;text-align:left;transition:background-color .1s}.luthor-command-palette-item:hover,.luthor-command-palette-item.selected{background:var(--luthor-muted)}.luthor-command-palette-item-content{flex:1;min-width:0}.luthor-command-palette-item-title{font-size:14px;color:var(--luthor-fg);font-weight:500;margin-bottom:2px}.luthor-command-palette-item-description{font-size:12px;color:var(--luthor-muted-fg);line-height:1.4}.luthor-command-palette-item-shortcut{background:var(--luthor-muted);border:1px solid var(--luthor-border);border-radius:4px;padding:2px 6px;font-size:10px;color:var(--luthor-muted-fg);font-family:monospace;margin-left:12px;flex-shrink:0}.luthor-command-palette-footer{padding:12px 20px;border-top:1px solid var(--luthor-border);background:var(--luthor-muted)}.luthor-command-palette-hint{font-size:11px;color:var(--luthor-muted-fg);display:flex;align-items:center;gap:8px}.luthor-command-palette-hint kbd{background:var(--luthor-bg);border:1px solid var(--luthor-border);border-radius:3px;padding:1px 4px;font-size:10px;font-family:monospace}.luthor-command-palette-empty{padding:40px 20px;text-align:center;color:var(--luthor-muted-fg);font-size:14px}.luthor-slash-menu{position:fixed;z-index:var(--luthor-z-menu, 460);background:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:10px;box-shadow:0 12px 36px #00000024;width:min(420px,calc(100vw - 24px));max-height:min(55vh,420px);overflow:hidden;display:flex;flex-direction:column}.luthor-slash-menu-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--luthor-border);background:var(--luthor-muted)}.luthor-slash-menu-title{font-size:12px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.4px}.luthor-slash-menu-query{font-size:12px;font-family:monospace;color:var(--luthor-muted-fg);background:var(--luthor-bg);border:1px solid var(--luthor-border);padding:1px 6px;border-radius:4px}.luthor-slash-menu-list{overflow-y:auto;padding:8px 0}.luthor-slash-menu-group{margin-bottom:6px}.luthor-slash-menu-group-title{padding:6px 12px 4px;font-size:11px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.5px}.luthor-slash-menu-item{width:100%;display:flex;align-items:center;gap:12px;padding:10px 12px;border:none;background:none;text-align:left;cursor:pointer;color:var(--luthor-fg);transition:background-color .12s}.luthor-slash-menu-item:hover,.luthor-slash-menu-item.selected{background:var(--luthor-muted)}.luthor-slash-menu-item-content{min-width:0;display:flex;flex-direction:column;gap:2px;flex:1}.luthor-slash-menu-item-title{font-size:14px;font-weight:500;color:var(--luthor-fg)}.luthor-slash-menu-item-description{font-size:12px;line-height:1.35;color:var(--luthor-muted-fg)}.luthor-slash-menu-item-shortcut{background:var(--luthor-muted);border:1px solid var(--luthor-border);border-radius:4px;padding:2px 6px;font-size:10px;font-family:monospace;color:var(--luthor-muted-fg);flex-shrink:0}.luthor-slash-menu-empty{padding:20px 12px;font-size:13px;color:var(--luthor-muted-fg);text-align:center}.luthor-emoji-picker-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:8px;width:220px}.luthor-emoji-picker-item{display:inline-flex;align-items:center;justify-content:center;height:32px;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;font-size:18px;line-height:1}.luthor-emoji-picker-item:hover{background:var(--luthor-muted);border-color:var(--luthor-border)}.luthor-emoji-menu{position:fixed;z-index:var(--luthor-z-menu, 460);background:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:10px;box-shadow:0 12px 36px #00000024;width:min(320px,calc(100vw - 24px));max-height:min(45vh,320px);overflow:hidden;display:flex;flex-direction:column}.luthor-emoji-menu-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--luthor-border);background:var(--luthor-muted)}.luthor-emoji-menu-title{font-size:12px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.4px}.luthor-emoji-menu-query{font-size:12px;font-family:monospace;color:var(--luthor-muted-fg);background:var(--luthor-bg);border:1px solid var(--luthor-border);padding:1px 6px;border-radius:4px}.luthor-emoji-menu-list{overflow-y:auto;padding:6px 0}.luthor-emoji-menu-item{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border:none;background:none;text-align:left;cursor:pointer;color:var(--luthor-fg);transition:background-color .12s}.luthor-emoji-menu-item:hover,.luthor-emoji-menu-item.selected{background:var(--luthor-muted)}.luthor-emoji-menu-item-symbol{font-size:20px;line-height:1;width:24px;text-align:center;flex-shrink:0}.luthor-emoji-menu-item-content{min-width:0;display:flex;flex-direction:column;gap:1px;flex:1}.luthor-emoji-menu-item-title{font-size:13px;font-weight:500;color:var(--luthor-fg)}.luthor-emoji-menu-item-shortcode{font-size:12px;line-height:1.25;color:var(--luthor-muted-fg);font-family:monospace}.luthor-emoji-menu-empty{padding:18px 12px;font-size:13px;color:var(--luthor-muted-fg);text-align:center}.luthor-dialog-overlay{position:absolute;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--luthor-z-modal, 500);overscroll-behavior:contain;padding:12px}.luthor-dialog{background-color:var(--luthor-bg);border-radius:10px;box-shadow:0 20px 30px var(--luthor-shadow);width:min(520px,calc(100% - 24px));min-width:min(360px,calc(100% - 24px));max-height:calc(100% - 24px);overflow:hidden}.luthor-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--luthor-border)}.luthor-dialog-title{margin:0;font-size:16px;font-weight:600;color:var(--luthor-fg)}.luthor-dialog-close{background:none;border:none;color:var(--luthor-muted-fg);cursor:pointer;padding:4px;border-radius:6px}.luthor-dialog-close:hover{background-color:var(--luthor-muted);color:var(--luthor-fg)}.luthor-dialog-content{padding:18px 20px}.luthor-table-dialog{display:flex;flex-direction:column;gap:14px}.luthor-form-group{display:flex;flex-direction:column;gap:6px}.luthor-form-group label{font-size:13px;font-weight:600;color:var(--luthor-fg)}.luthor-input{padding:8px 12px;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);color:var(--luthor-fg);font-size:13px}.luthor-input:focus{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 3px #3b82f61f}.luthor-checkbox-label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--luthor-fg)}.luthor-checkbox{width:16px;height:16px;accent-color:var(--luthor-accent)}.luthor-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.luthor-button-primary,.luthor-button-secondary{padding:8px 14px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid}.luthor-button-primary{background-color:var(--luthor-accent);border-color:var(--luthor-accent);color:var(--luthor-bg)}.luthor-button-primary:hover{background-color:var(--luthor-accent-hover);border-color:var(--luthor-accent-hover)}.luthor-button-secondary{background-color:transparent;border-color:var(--luthor-border);color:var(--luthor-fg)}.luthor-button-secondary:hover{background-color:var(--luthor-muted);border-color:var(--luthor-border-hover)}.luthor-text-bold{font-weight:700;color:var(--luthor-text-bold-color, var(--luthor-fg))}.luthor-text-italic{font-style:italic}.luthor-text-underline{text-decoration:underline}.luthor-text-strikethrough{text-decoration:line-through}.luthor-content-editable code:not(.luthor-code-block),.luthor-preset .luthor-content-editable code:not(.luthor-code-block),.luthor-preset-extensive .luthor-content-editable code:not(.luthor-code-block){background-color:color-mix(in srgb,var(--luthor-muted) 78%,var(--luthor-bg) 22%);color:var(--luthor-syntax-keyword, var(--luthor-muted-fg));padding:0 .24em;border:1px solid color-mix(in srgb,var(--luthor-border) 55%,transparent);border-radius:3px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace!important;font-size:1em!important}.luthor-content-editable code:not(.luthor-code-block) .luthor-text-code,.luthor-preset .luthor-content-editable code:not(.luthor-code-block) .luthor-text-code,.luthor-preset-extensive .luthor-content-editable code:not(.luthor-code-block) .luthor-text-code{background:transparent;border:0;padding:0;border-radius:0}.luthor-content-editable code:not(.luthor-code-block) *,.luthor-preset .luthor-content-editable code:not(.luthor-code-block) *,.luthor-preset-extensive .luthor-content-editable code:not(.luthor-code-block) *{color:inherit!important;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace!important;font-size:1em!important}.luthor-code-block{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background-color:var(--luthor-codeblock-bg, var(--luthor-muted));border:1px solid var(--luthor-border);color:var(--luthor-syntax-string, var(--luthor-muted-fg));border-radius:4px}.luthor-code-block{display:block;padding:12px;margin:12px 0;line-height:1.6;overflow-x:auto;max-width:min(100%,880px);width:100%;tab-size:2;white-space:pre;overflow-wrap:normal;word-break:normal}.luthor-code-block--interactive{position:relative;margin-top:40px;border-top-left-radius:0;border-top-right-radius:0;border-top:0}.luthor-codeblock-controls-layer{position:absolute;inset:0;pointer-events:none;z-index:25}.luthor-codeblock-controls{position:absolute;display:flex;align-items:center;justify-content:space-between;z-index:26;pointer-events:auto;margin:0;max-width:none;padding:8px 10px;border:1px solid var(--luthor-border);border-top-left-radius:8px;border-top-right-radius:8px;border-bottom:1px solid var(--luthor-border);background:var(--luthor-codeblock-bg, var(--luthor-muted))}.luthor-codeblock-controls-left,.luthor-codeblock-controls-right{display:inline-flex;align-items:center;gap:6px}.luthor-codeblock-language,.luthor-codeblock-copy{font-size:11px;line-height:1.2;height:24px;border-radius:6px;border:1px solid var(--luthor-border);background:var(--luthor-bg);color:var(--luthor-fg);padding:0 8px}.luthor-codeblock-language{min-width:88px;appearance:none}.luthor-codeblock-language option{background:var(--luthor-bg);color:var(--luthor-fg)}.luthor-codeblock-copy{cursor:pointer;font-weight:600;width:26px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;position:relative;background:var(--luthor-bg)}.luthor-codeblock-copy svg{width:14px;height:14px;fill:currentColor}.luthor-codeblock-copy:after{content:attr(data-tooltip);position:absolute;top:-28px;right:0;padding:2px 6px;font-size:10px;line-height:1.2;white-space:nowrap;border-radius:4px;border:1px solid var(--luthor-border);background:var(--luthor-bg);color:var(--luthor-fg);opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease}.luthor-codeblock-copy:hover:after,.luthor-codeblock-copy:focus-visible:after{opacity:1;transform:translateY(0)}.luthor-codeblock-copy:hover,.luthor-codeblock-language:hover,.luthor-codeblock-copy.is-copied{border-color:var(--luthor-border-hover);background:var(--luthor-codeblock-bg, var(--luthor-muted))}.luthor-codeblock-copy.is-copy-error{border-color:var(--luthor-syntax-variable);color:var(--luthor-syntax-variable)}.luthor-code-block[data-theme=plain]{--luthor-syntax-keyword: var(--luthor-muted-fg);--luthor-syntax-string: var(--luthor-muted-fg);--luthor-syntax-number: var(--luthor-muted-fg);--luthor-syntax-function: var(--luthor-muted-fg);--luthor-syntax-variable: var(--luthor-muted-fg)}.luthor-preset-extensive.luthor-editor-wrapper .hljs{color:var(--luthor-code-unhighlighted-fg, var(--luthor-fg))}:where(.luthor-code-comment),:where(.luthor-code-prolog),:where(.luthor-code-doctype),:where(.luthor-code-cdata),:where(.luthor-code-punctuation),:where(.luthor-code-operator),:where(.luthor-code-namespace),:where(.luthor-code-property),:where(.luthor-code-tag),:where(.luthor-code-constant),:where(.luthor-code-symbol),:where(.luthor-code-deleted),:where(.luthor-code-boolean),:where(.luthor-code-number),:where(.luthor-code-attr),:where(.luthor-code-selector),:where(.luthor-code-string),:where(.luthor-code-char),:where(.luthor-code-builtin),:where(.luthor-code-inserted),:where(.luthor-code-function),:where(.luthor-code-class),:where(.luthor-code-class-name),:where(.luthor-code-keyword),:where(.luthor-code-atrule),:where(.luthor-code-regex),:where(.luthor-code-variable),:where(.luthor-code-important){color:var(--luthor-syntax-string, var(--luthor-muted-fg));font-weight:inherit}.luthor-paragraph{margin:var(--luthor-first-block-offset) 0;line-height:var(--luthor-default-line-height, 1.5)}.luthor-heading-h1,.luthor-heading-h2,.luthor-heading-h3,.luthor-heading-h4,.luthor-heading-h5,.luthor-heading-h6{margin:calc(16px * var(--luthor-line-height-ratio, 1)) 0 calc(8px * var(--luthor-line-height-ratio, 1));line-height:var(--luthor-default-line-height, 1.5);font-weight:700}.luthor-heading-h1{font-size:28px}.luthor-heading-h2{font-size:24px}.luthor-heading-h3{font-size:20px}.luthor-heading-h4{font-size:18px}.luthor-heading-h5{font-size:16px}.luthor-heading-h6{font-size:14px}.luthor-list-ul,.luthor-list-ol{margin:10px 0 10px 24px}.luthor-list-li{margin:calc(4px * var(--luthor-line-height-ratio, 1)) 0;line-height:var(--luthor-default-line-height, 1.5)}.luthor-list-ul .luthor-list-li::marker,.luthor-list-ol .luthor-list-li::marker{color:var(--luthor-list-marker-color, var(--luthor-fg))}.luthor-list-ol[style*=--luthor-ordered-pattern]{list-style:none;padding-left:0}.luthor-list-ol:has(>.luthor-list-li[style*=--luthor-ordered-marker-content]){list-style:none;padding-left:0}.luthor-list-ol>.luthor-list-li[style*=--luthor-ordered-marker-content]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked){padding-left:0}.luthor-list-ol>.luthor-list-li[style*=--luthor-ordered-marker-content]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked)::marker{content:""}.luthor-list-ol>.luthor-list-li[style*=--luthor-ordered-marker-content]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked):before{content:var(--luthor-ordered-marker-content);display:inline-block;white-space:nowrap;min-width:2.4ch;margin-right:10px;text-align:right;line-height:inherit;vertical-align:baseline;font-variant-numeric:tabular-nums;font-size:14px;font-weight:500;color:var(--luthor-list-marker-color, var(--luthor-fg))}.luthor-list-ul[style*=--luthor-unordered-pattern]{list-style:none;padding-left:0}.luthor-list-ul:has(>.luthor-list-li[style*=--luthor-unordered-marker-kind]){list-style:none;padding-left:0}.luthor-list-li[style*=--luthor-unordered-marker-kind]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked){position:relative;padding-left:24px}.luthor-list-li[style*=--luthor-unordered-marker-kind]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked)::marker{content:""}.luthor-list-li[style*=--luthor-unordered-marker-kind]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked):before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:18px;height:18px;background-position:center;background-repeat:no-repeat;background-size:12px 12px;color:var(--luthor-list-marker-color, var(--luthor-fg));opacity:.95}.luthor-list-li[style*="--luthor-unordered-marker-kind: disc"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='2.7' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: circle"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='3.1' fill='none' stroke='currentColor' stroke-width='1.2'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: square"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Crect x='3.1' y='3.1' width='5.8' height='5.8' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: diamond"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 2.2 9.8 6 6 9.8 2.2 6Z' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: arrow"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 2.6v6.8L9 6 3 2.6Z' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-item-unchecked,.luthor-list-item-checked{position:relative;list-style:none;margin-left:0;padding-left:28px;min-height:22px;cursor:pointer}.luthor-list-item-unchecked::marker,.luthor-list-item-checked::marker{content:""}.luthor-list-item-unchecked:before,.luthor-list-item-checked:before{content:"";position:absolute;left:0;top:.1em;width:16px;height:16px;border-radius:4px;border:1.5px solid var(--luthor-list-checkbox-color, var(--luthor-accent));background-color:var(--luthor-bg);box-sizing:border-box;transition:all .15s ease}.luthor-list-item-unchecked:hover:before{border-color:var(--luthor-list-checkbox-color, var(--luthor-accent))}.luthor-list-item-unchecked:focus,.luthor-list-item-unchecked:focus-visible,.luthor-list-item-checked:focus,.luthor-list-item-checked:focus-visible{outline:none;box-shadow:none}.luthor-list-li:has(>.luthor-list-ul:first-child),.luthor-list-li:has(>.luthor-list-ol:first-child){list-style:none}.luthor-list-item-unchecked:has(>.luthor-list-ul:first-child),.luthor-list-item-unchecked:has(>.luthor-list-ol:first-child),.luthor-list-item-checked:has(>.luthor-list-ul:first-child),.luthor-list-item-checked:has(>.luthor-list-ol:first-child){padding-left:0;min-height:0}.luthor-list-item-unchecked:has(>.luthor-list-ul:first-child):before,.luthor-list-item-unchecked:has(>.luthor-list-ol:first-child):before,.luthor-list-item-checked:has(>.luthor-list-ul:first-child):before,.luthor-list-item-checked:has(>.luthor-list-ol:first-child):before{display:none}.luthor-list-item-checked:before{content:"\2713";display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;line-height:1;color:var(--luthor-bg);border-color:var(--luthor-list-checkbox-color, var(--luthor-accent));background-color:var(--luthor-list-checkbox-color, var(--luthor-accent))}.luthor-list-item-checked{text-decoration:var(--luthor-checklist-text-decoration, line-through);opacity:var(--luthor-checklist-opacity, .85)}.luthor-list-item-checked>ul,.luthor-list-item-checked>ol{text-decoration:none;opacity:1}.luthor-list-ul[style*="--luthor-checklist-variant: plain"] .luthor-list-item-checked,.luthor-list-ol[style*="--luthor-checklist-variant: plain"] .luthor-list-item-checked,.luthor-list-item-checked[style*="--luthor-checklist-variant: plain"],.luthor-list-item-checked:has([style*="--luthor-checklist-variant: plain"]){--luthor-checklist-text-decoration: none;--luthor-checklist-opacity: 1}.luthor-quote{border-left:4px solid var(--luthor-quote-border, var(--luthor-accent));background-color:var(--luthor-quote-bg, var(--luthor-muted));padding:10px 14px;margin:12px 0;color:var(--luthor-quote-fg, var(--luthor-fg));line-height:var(--luthor-default-line-height, 1.5)}.luthor-link{color:var(--luthor-link-color, var(--luthor-accent));text-decoration:underline}.luthor-link:hover{color:var(--luthor-accent-hover)}.luthor-hr{margin:16px 0;border:none;border-top:1px solid var(--luthor-hr-color, var(--luthor-border));height:1px}.luthor-preset-extensive .lexical-image{margin:1em 0;display:block;position:relative}.luthor-preset-extensive .lexical-image img{max-width:100%;height:auto;border-radius:6px;display:block}.luthor-preset-extensive .lexical-image.align-left{float:left;margin-right:1em;margin-bottom:1em}.luthor-preset-extensive .lexical-image.align-right{float:right;margin-left:1em;margin-bottom:1em}.luthor-preset-extensive .lexical-image.align-center{text-align:center;margin:1em auto}.luthor-preset-extensive .lexical-image.align-center img{margin:0 auto}.luthor-preset-extensive .lexical-image figcaption{margin-top:.5em;font-size:12px;color:var(--luthor-muted-fg);text-align:center;font-style:italic}.luthor-preset-extensive .lexical-image.selected{outline:none}.luthor-preset-extensive .resizer{position:absolute;width:8px;height:8px;background:var(--luthor-accent);border:1px solid white;border-radius:50%}.luthor-preset-extensive .resizer.ne{top:-4px;right:-4px;cursor:nesw-resize}.luthor-preset-extensive .resizer.nw{top:-4px;left:-4px;cursor:nwse-resize}.luthor-preset-extensive .resizer.se{bottom:-4px;right:-4px;cursor:nwse-resize}.luthor-preset-extensive .resizer.sw{bottom:-4px;left:-4px;cursor:nesw-resize}.luthor-table{border-collapse:collapse;width:100%;margin:16px 0;border:1px solid var(--luthor-table-border-color, var(--luthor-border))}.luthor-table-cell,.luthor-table-cell-header{border:1px solid var(--luthor-table-border-color, var(--luthor-border));padding:8px 12px;text-align:left;min-width:80px;background-color:var(--luthor-bg)}.luthor-table-cell-header{background-color:var(--luthor-table-header-bg, var(--luthor-muted));font-weight:600}.luthor-preset-extensive table[data-lexical-table-selection]{box-shadow:0 0 0 2px var(--luthor-accent)}.luthor-preset-extensive table td[data-lexical-table-cell-selection]{background-color:#3b82f61a}.luthor-table-bubble-menu{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid var(--luthor-border);border-radius:10px;background:var(--luthor-bg);box-shadow:0 8px 24px var(--luthor-shadow);pointer-events:auto;white-space:nowrap}.luthor-table-bubble-button{height:30px;min-width:30px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid var(--luthor-border);background:var(--luthor-muted);color:var(--luthor-fg);font-size:12px;font-weight:600;line-height:1;cursor:pointer;transition:all .16s ease}.luthor-table-bubble-button svg{display:block}.luthor-table-bubble-button-icon{width:30px;padding:0}.luthor-table-bubble-button:hover{border-color:var(--luthor-border-hover);background:color-mix(in srgb,var(--luthor-muted) 58%,var(--luthor-accent) 42%);color:var(--luthor-bg)}.luthor-table-bubble-button-active{background:var(--luthor-accent);border-color:var(--luthor-accent);color:var(--luthor-bg)}.luthor-table-bubble-button-danger:hover{background:#dc2626;border-color:#dc2626;color:#fff}.luthor-table-bubble-checkbox{display:inline-flex;align-items:center;gap:6px;padding:0 6px;height:28px;font-size:12px;font-weight:600;color:var(--luthor-fg);user-select:none}.luthor-table-bubble-checkbox input{margin:0;accent-color:var(--luthor-accent)}.luthor-context-menu{position:fixed;background:var(--luthor-bg);border:1px solid var(--luthor-border);border-radius:8px;box-shadow:0 10px 30px var(--luthor-shadow);z-index:var(--luthor-z-menu, 460);min-width:160px;padding:6px 0;font-size:13px}.luthor-context-menu-item{padding:8px 14px;cursor:pointer;user-select:none}.luthor-context-menu-item:hover{background-color:var(--luthor-muted)}.luthor-context-menu-item-disabled{opacity:.5;cursor:not-allowed}.luthor-floating-toolbar{--luthor-floating-bg: #ffffff;--luthor-floating-fg: #0f172a;--luthor-floating-border: #e2e8f0;--luthor-floating-shadow: rgba(0, 0, 0, .08);--luthor-floating-muted: #f8fafc;--luthor-floating-border-hover: #cbd5e1;--luthor-floating-border-active: #94a3b8;--luthor-floating-accent: #0f172a;--luthor-floating-accent-fg: #ffffff;display:flex;align-items:center;gap:4px;padding:6px;background-color:var(--luthor-floating-bg);color:var(--luthor-floating-fg);border:1px solid var(--luthor-floating-border);border-radius:8px;box-shadow:0 8px 24px var(--luthor-floating-shadow)}.luthor-floating-toolbar[data-theme=dark]{--luthor-floating-bg: #0a0a0a;--luthor-floating-fg: #ededed;--luthor-floating-border: #262626;--luthor-floating-shadow: rgba(0, 0, 0, .5);--luthor-floating-muted: #171717;--luthor-floating-border-hover: #404040;--luthor-floating-border-active: #525252;--luthor-floating-accent: #ededed;--luthor-floating-accent-fg: #0a0a0a}.luthor-floating-toolbar .luthor-toolbar-button{color:var(--luthor-floating-fg);border-color:transparent}.luthor-floating-toolbar .luthor-toolbar-button:hover{background-color:var(--luthor-floating-muted);border-color:var(--luthor-floating-border-hover)}.luthor-floating-toolbar .luthor-toolbar-button.active{background-color:var(--luthor-floating-accent);border-color:var(--luthor-floating-accent);color:var(--luthor-floating-accent-fg)}.luthor-floating-toolbar-separator{width:1px;height:18px;background-color:var(--luthor-floating-border);margin:0 4px}.luthor-floating-toolbar-input{height:30px;min-width:140px;max-width:220px;padding:4px 8px;font-size:12px;color:var(--luthor-floating-fg);background-color:var(--luthor-floating-bg);border:1px solid var(--luthor-floating-border);border-radius:6px;outline:none}.luthor-floating-toolbar-fields{display:flex;flex-direction:column;gap:6px}.luthor-floating-toolbar-field-row{display:flex;align-items:center;gap:6px}.luthor-floating-toolbar-action{height:30px;min-width:30px;width:auto;padding:0 10px;font-size:12px;font-weight:600;border-color:var(--luthor-floating-border);background:var(--luthor-floating-muted);color:var(--luthor-floating-fg);transform:none;box-shadow:none}.luthor-floating-toolbar .luthor-floating-toolbar-action:hover{border-color:var(--luthor-floating-border-hover);background:var(--luthor-floating-muted);color:var(--luthor-floating-fg);transform:none;box-shadow:none}.luthor-floating-toolbar-action-primary,.luthor-floating-toolbar .luthor-floating-toolbar-action-primary:hover{border-color:var(--luthor-floating-accent);background:var(--luthor-floating-accent);color:var(--luthor-floating-accent-fg)}.luthor-floating-toolbar-action-danger:hover{border-color:#dc2626;background:#dc2626;color:#fff}.luthor-floating-toolbar-input:focus{border-color:var(--luthor-floating-border-active);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-floating-accent) 18%,transparent)}.luthor-floating-toolbar-input.is-error{border-color:#dc2626}.luthor-link-hover-bubble{gap:6px;max-width:min(680px,calc(100vw - 20px));border-radius:10px;box-shadow:0 8px 24px var(--luthor-floating-shadow)}.luthor-link-hover-bubble-url{min-width:160px;max-width:360px;padding:0 4px;font-size:12px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.luthor-link-hover-bubble-button{height:30px;min-width:30px;padding:0 10px;width:auto;font-size:12px;font-weight:600;border-color:var(--luthor-floating-border);background:var(--luthor-floating-muted);transform:none;box-shadow:none}.luthor-link-hover-bubble .luthor-link-hover-bubble-button:hover{border-color:var(--luthor-floating-border-hover);background:var(--luthor-floating-muted);transform:none;box-shadow:none}.luthor-link-hover-bubble-button-primary,.luthor-link-hover-bubble .luthor-link-hover-bubble-button-primary:hover{border-color:var(--luthor-floating-accent);background:var(--luthor-floating-accent);color:var(--luthor-floating-accent-fg)}.luthor-link-hover-bubble-button-danger:hover{border-color:#dc2626;background:#dc2626;color:#fff}.luthor-link-hover-bubble-input{height:28px;min-width:220px;max-width:360px;padding:4px 8px;font-size:12px;border:1px solid var(--luthor-floating-border);border-radius:6px;color:var(--luthor-floating-fg);background:var(--luthor-floating-bg);outline:none}.luthor-link-hover-bubble-input:focus{border-color:var(--luthor-floating-border-active);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-floating-accent) 18%,transparent)}.luthor-link-hover-bubble-input.is-error{border-color:#dc2626}.luthor-media-embed-shell{position:relative;border:2px solid var(--luthor-border);border-radius:12px;overflow:hidden;background:var(--luthor-bg);transition:border-color var(--luthor-theme-transition),box-shadow var(--luthor-theme-transition),background-color var(--luthor-theme-transition)}.luthor-media-embed-shell:hover{border-color:var(--luthor-border-active)}.luthor-media-embed-shell.is-selected{border-color:var(--luthor-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--luthor-accent) 28%,transparent)}.luthor-media-embed-shell.is-resizing{user-select:none}.luthor-media-embed-controls{position:absolute;top:8px;right:8px;display:inline-flex;gap:4px;padding:4px;border:1px solid var(--luthor-border-hover);border-radius:8px;background:color-mix(in srgb,var(--luthor-bg) 92%,black 8%);z-index:2}.luthor-media-embed-control{border:1px solid var(--luthor-border);background:var(--luthor-muted);color:var(--luthor-fg);border-radius:6px;padding:2px 8px;font-size:11px;line-height:1.4;cursor:pointer}.luthor-media-embed-control:hover{border-color:var(--luthor-border-hover)}.luthor-media-embed-control.is-active{background:var(--luthor-accent);border-color:var(--luthor-accent);color:var(--luthor-bg)}.luthor-media-embed-resize-handle-width,.luthor-media-embed-resize-handle-height{position:absolute;border:1px solid var(--luthor-accent);background:color-mix(in srgb,var(--luthor-muted) 85%,var(--luthor-bg) 15%);border-radius:999px;z-index:2;opacity:.95;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),transform .12s ease}.luthor-media-embed-resize-handle-width{top:50%;right:-7px;transform:translateY(-50%);width:14px;height:30px;cursor:ew-resize;border-radius:999px}.luthor-media-embed-resize-handle-height{left:50%;bottom:-7px;transform:translate(-50%);width:30px;height:14px;cursor:ns-resize;border-radius:999px}.luthor-media-embed-resize-handle-width:hover,.luthor-media-embed-resize-handle-height:hover{transform:translateY(-50%) scale(1.06)}.luthor-media-embed-resize-handle-height:hover{transform:translate(-50%) scale(1.06)}.luthor-media-embed-shell.is-resizing .luthor-media-embed-resize-handle-width,.luthor-media-embed-shell.is-resizing .luthor-media-embed-resize-handle-height{background:color-mix(in srgb,var(--luthor-accent) 28%,var(--luthor-bg) 72%);border:1px solid var(--luthor-accent)}.luthor-draggable-handle,.luthor-draggable-add-button{width:24px;height:24px;border-radius:0;border:none;background:transparent;color:var(--luthor-muted-fg);fill:currentColor;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .16s ease,transform .16s ease;outline:none}.luthor-draggable-add-button{width:20px;height:20px;font-size:14px;line-height:1;font-weight:500;padding:0}.luthor-draggable-handle svg{width:14px;height:14px;stroke:currentColor;fill:none}.luthor-draggable-handle:hover,.luthor-draggable-add-button:hover{color:var(--luthor-fg);transform:scale(1.04)}.luthor-draggable-handle:active,.luthor-draggable-add-button:active,.luthor-draggable-handle-active{background:transparent;color:var(--luthor-accent);transform:scale(.96)}.luthor-draggable-button-stack{display:flex;flex-direction:column;gap:6px;align-items:center;padding:0;border:none;background:transparent}.luthor-draggable-drop-indicator{height:3px;background:var(--luthor-accent);border-radius:999px}.luthor-draggable-block-dragging,.luthor-draggable-block-is-dragging{opacity:.6}.luthor-editor--draggable-disabled .luthor-draggable-button-stack,.luthor-editor--draggable-disabled .luthor-draggable-handle,.luthor-editor--draggable-disabled .luthor-draggable-add-button,.luthor-editor--draggable-disabled .luthor-draggable-drop-indicator{display:none!important}@media(max-width:768px){.luthor-preset-extensive.luthor-editor-wrapper{min-height:400px}.luthor-toolbar{padding:6px}.luthor-toolbar--align-right{justify-content:flex-start}.luthor-toolbar-button{width:32px;height:32px;font-size:14px}.luthor-toolbar-section{padding:0 2px}.luthor-toolbar-section:not(:last-child){margin-right:6px;padding-right:6px}.luthor-richtext-container{--luthor-editor-content-padding-y: 16px;--luthor-editor-content-padding-x: 16px}.luthor-content-editable{font-size:16px}.luthor-select-trigger{min-width:100px;font-size:13px}.luthor-mode-tab{padding:8px 12px;font-size:13px}}.luthor-extensive-feature-card{border:1px solid var(--luthor-border-active);border-radius:12px;padding:12px;margin:10px 0;background-color:var(--luthor-muted)}.luthor-extensive-feature-card.is-selected{box-shadow:0 0 0 2px var(--luthor-accent)}.luthor-extensive-feature-card__tag{display:inline-flex;align-items:center;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--luthor-accent);border:1px solid var(--luthor-border-active);background-color:var(--luthor-bg);border-radius:999px;padding:2px 8px;margin-bottom:8px}.luthor-extensive-feature-card__title{margin:0;font-size:14px;color:var(--luthor-fg);line-height:1.35}.luthor-extensive-feature-card__description{margin:6px 0 0;font-size:12px;line-height:1.45;color:var(--luthor-muted-fg)}.luthor-preset-compose{display:flex;flex-direction:column;gap:10px}.luthor-compose-shell{border:1px solid var(--luthor-border);border-radius:8px;overflow:hidden}.luthor-compose-row{display:grid;grid-template-columns:72px 1fr;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--luthor-border);background:var(--luthor-bg);color:var(--luthor-fg)}.luthor-compose-row:last-child{border-bottom:0}.luthor-compose-row input{border:0;outline:none;background:transparent}.luthor-preset-compose .luthor-editor{min-height:220px}.luthor-preset-compose--compact .luthor-toolbar,.luthor-preset-compose__toolbar--compact{padding:4px;gap:2px}.luthor-preset-compose__toolbar--compact .luthor-toolbar-button{width:30px;height:30px}.luthor-preset-composer{display:flex;flex-direction:column;gap:8px;width:100%;min-width:var(--luthor-composer-min-width, 240px);max-width:var(--luthor-composer-max-width, 100%)}.luthor-composer-row{display:flex;align-items:flex-end;gap:8px;width:100%}.luthor-composer-shell{position:relative;width:100%;min-width:var(--luthor-composer-min-width, 240px);max-width:var(--luthor-composer-max-width, 100%)}.luthor-preset-composer .luthor-preset-extensive.luthor-editor-wrapper{min-height:var(--luthor-composer-min-height, 56px);max-height:var(--luthor-composer-max-height, 220px);height:var(--luthor-composer-current-height, var(--luthor-composer-min-height, 56px));min-width:var(--luthor-composer-min-width, 240px);max-width:var(--luthor-composer-max-width, 100%);border-radius:16px}.luthor-preset-composer .luthor-editor-header{display:none}.luthor-preset-composer .luthor-editor{min-height:0;height:100%}.luthor-preset-composer .luthor-editor-visual-shell{min-height:0}.luthor-preset-composer .luthor-richtext-container{min-height:0;overflow-y:auto;scrollbar-width:thin;--luthor-editor-content-padding-y: 12px;--luthor-editor-content-padding-x: 14px;--luthor-first-block-offset: 0px}.luthor-preset-composer .luthor-content-editable{padding:var(--luthor-editor-content-padding-y) var(--luthor-editor-content-padding-x);min-height:100%;box-sizing:border-box;line-height:1.45}.luthor-preset-composer--send-inside .luthor-content-editable{padding-right:84px;padding-bottom:48px}.luthor-preset-composer .luthor-placeholder{top:var(--luthor-editor-content-padding-y);left:var(--luthor-editor-content-padding-x);line-height:1.45}.luthor-composer-bottom-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px 10px;border-top:1px solid var(--luthor-border);background:var(--luthor-bg)}.luthor-composer-action{border:1px solid var(--luthor-border);background:var(--luthor-muted);color:var(--luthor-fg);border-radius:10px;height:32px;padding:0 12px;cursor:pointer}.luthor-composer-action-send{border-color:var(--luthor-accent);background:var(--luthor-accent);color:var(--luthor-bg)}.luthor-composer-action-send--inside{position:absolute;right:10px;bottom:10px}.luthor-composer-action-send--right{align-self:flex-end}@media(max-width:640px){.luthor-composer-row{flex-wrap:wrap}.luthor-composer-action-send--right{margin-left:auto}}.luthor-preset-md-friendly{display:flex;flex-direction:column;gap:8px}.luthor-md-friendly-tabs{display:flex;gap:4px}.luthor-md-friendly-tabs button{border:1px solid var(--luthor-border);background:var(--luthor-muted);color:var(--luthor-fg);border-radius:6px;height:30px;padding:0 10px}.luthor-md-friendly-tabs button.active{border-color:var(--luthor-accent);background:var(--luthor-accent);color:var(--luthor-bg)}.luthor-md-friendly-source{width:100%;min-height:240px;border:1px solid var(--luthor-border);border-radius:8px;padding:12px;font-family:ui-monospace,Menlo,Consolas,monospace}.luthor-md-friendly-error{margin:6px 0 0;color:#dc2626;font-size:12px}.luthor-preset-notion-like .luthor-editor{min-height:280px}.luthor-headless-preset{border:1px solid #cbd5e1;border-radius:8px;padding:12px;display:grid;gap:10px}.luthor-headless-controls{display:flex;flex-wrap:wrap;gap:6px}.luthor-headless-controls button{height:30px;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#0f172a;text-transform:lowercase;padding:0 10px}.luthor-headless-editor-content{min-height:160px;border:1px solid #e2e8f0;border-radius:8px;padding:12px}
|
|
1
|
+
.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=light]{--luthor-bg: #ffffff;--luthor-fg: #0f172a;--luthor-border: #e2e8f0;--luthor-border-hover: #cbd5e1;--luthor-border-active: #94a3b8;--luthor-accent: #0f172a;--luthor-accent-hover: #1e293b;--luthor-shadow: rgba(0, 0, 0, .08);--luthor-muted: #f8fafc;--luthor-muted-fg: #64748b;--luthor-toolbar-bg: var(--luthor-muted);--luthor-toolbar-section-border: var(--luthor-border);--luthor-toolbar-button-fg: var(--luthor-fg);--luthor-toolbar-button-hover-bg: var(--luthor-muted);--luthor-toolbar-button-hover-border: var(--luthor-border-hover);--luthor-toolbar-button-hover-shadow: 0 4px 12px rgba(0, 0, 0, .15);--luthor-toolbar-button-press-shadow: 0 2px 8px rgba(0, 0, 0, .1);--luthor-toolbar-button-active-bg: var(--luthor-accent);--luthor-toolbar-button-active-border: var(--luthor-accent);--luthor-toolbar-button-active-fg: var(--luthor-bg);--luthor-toolbar-button-active-shadow: 0 2px 8px rgba(0, 0, 0, .2);--luthor-toolbar-button-overlay: linear-gradient(135deg, rgba(255, 255, 255, .1) 0%, rgba(255, 255, 255, .05) 100%);--luthor-toolbar-button-active-overlay: linear-gradient(135deg, rgba(255, 255, 255, .2) 0%, rgba(255, 255, 255, .1) 100%);--luthor-toolbar-color-indicator-border: #000000;--luthor-toolbar-highlight-bg: var(--luthor-muted);--luthor-quote-bg: var(--luthor-muted);--luthor-quote-fg: var(--luthor-fg);--luthor-quote-border: var(--luthor-accent);--luthor-text-bold-color: var(--luthor-fg);--luthor-link-color: var(--luthor-accent);--luthor-list-marker-color: var(--luthor-fg);--luthor-list-checkbox-color: var(--luthor-accent);--luthor-table-border-color: var(--luthor-border);--luthor-table-header-bg: var(--luthor-muted);--luthor-hr-color: var(--luthor-border);--luthor-placeholder-color: var(--luthor-muted-fg);--luthor-codeblock-bg: var(--luthor-muted);--luthor-code-unhighlighted-fg: #24292e;--luthor-floating-bg: var(--luthor-bg);--luthor-floating-fg: var(--luthor-fg);--luthor-floating-border: var(--luthor-border);--luthor-floating-shadow: var(--luthor-shadow);--luthor-floating-muted: var(--luthor-muted);--luthor-floating-border-hover: var(--luthor-border-hover);--luthor-floating-border-active: var(--luthor-border-active);--luthor-floating-accent: var(--luthor-accent);--luthor-floating-accent-fg: var(--luthor-bg);--luthor-syntax-comment: #64748b;--luthor-syntax-keyword: #64748b;--luthor-syntax-string: #64748b;--luthor-syntax-number: #64748b;--luthor-syntax-function: #64748b;--luthor-syntax-variable: #64748b}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark]{--luthor-bg: #0a0a0a;--luthor-fg: #ededed;--luthor-border: #262626;--luthor-border-hover: #404040;--luthor-border-active: #525252;--luthor-accent: #ededed;--luthor-accent-hover: #d4d4d8;--luthor-shadow: rgba(0, 0, 0, .5);--luthor-muted: #171717;--luthor-muted-fg: #a3a3a3;--luthor-toolbar-bg: var(--luthor-muted);--luthor-toolbar-section-border: var(--luthor-border);--luthor-toolbar-button-fg: var(--luthor-fg);--luthor-toolbar-button-hover-bg: var(--luthor-muted);--luthor-toolbar-button-hover-border: var(--luthor-border-hover);--luthor-toolbar-button-hover-shadow: 0 4px 12px rgba(0, 0, 0, .35);--luthor-toolbar-button-press-shadow: 0 2px 8px rgba(0, 0, 0, .3);--luthor-toolbar-button-active-bg: var(--luthor-accent);--luthor-toolbar-button-active-border: var(--luthor-accent);--luthor-toolbar-button-active-fg: var(--luthor-bg);--luthor-toolbar-button-active-shadow: 0 2px 8px rgba(0, 0, 0, .5);--luthor-toolbar-button-overlay: linear-gradient(135deg, rgba(255, 255, 255, .08) 0%, rgba(255, 255, 255, .03) 100%);--luthor-toolbar-button-active-overlay: linear-gradient(135deg, rgba(255, 255, 255, .14) 0%, rgba(255, 255, 255, .06) 100%);--luthor-toolbar-color-indicator-border: #ffffff;--luthor-toolbar-highlight-bg: var(--luthor-muted);--luthor-quote-bg: color-mix(in srgb, var(--luthor-muted) 92%, #ffffff 8%);--luthor-quote-fg: var(--luthor-fg);--luthor-quote-border: color-mix(in srgb, var(--luthor-accent) 78%, #ffffff 22%);--luthor-text-bold-color: var(--luthor-fg);--luthor-link-color: var(--luthor-accent);--luthor-list-marker-color: var(--luthor-fg);--luthor-list-checkbox-color: var(--luthor-accent);--luthor-table-border-color: var(--luthor-border);--luthor-table-header-bg: var(--luthor-muted);--luthor-hr-color: var(--luthor-border);--luthor-placeholder-color: var(--luthor-muted-fg);--luthor-codeblock-bg: var(--luthor-muted);--luthor-code-unhighlighted-fg: #c9d1d9;--luthor-floating-bg: var(--luthor-bg);--luthor-floating-fg: var(--luthor-fg);--luthor-floating-border: var(--luthor-border);--luthor-floating-shadow: var(--luthor-shadow);--luthor-floating-muted: var(--luthor-muted);--luthor-floating-border-hover: var(--luthor-border-hover);--luthor-floating-border-active: var(--luthor-border-active);--luthor-floating-accent: var(--luthor-accent);--luthor-floating-accent-fg: var(--luthor-bg);--luthor-syntax-comment: #8b949e;--luthor-syntax-keyword: #8b949e;--luthor-syntax-string: #8b949e;--luthor-syntax-number: #8b949e;--luthor-syntax-function: #8b949e;--luthor-syntax-variable: #8b949e}.luthor-preset-extensive.luthor-editor-wrapper{border:1px solid var(--luthor-border);border-radius:8px;background-color:var(--luthor-bg);overflow:hidden;display:flex;flex-direction:column;position:relative;--luthor-theme-transition: .2s ease;width:100%;max-width:100%;min-height:500px;height:auto;isolation:isolate;--luthor-z-dropdown: 20;--luthor-z-popover: 24;--luthor-z-menu: 28;--luthor-z-overlay: 32;--luthor-z-modal: 36;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition),box-shadow var(--luthor-theme-transition)}.luthor-preset-extensive.luthor-editor-wrapper.luthor-editor-wrapper--toolbar-pinned{overflow:visible}.luthor-preset-extensive.luthor-editor-wrapper,.luthor-preset-extensive.luthor-editor-wrapper *,.luthor-preset-extensive.luthor-editor-wrapper *:before,.luthor-preset-extensive.luthor-editor-wrapper *:after{box-sizing:border-box}.luthor-editor-header{background-color:var(--luthor-muted);border-bottom:1px solid var(--luthor-border);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-top-region--pinned{position:sticky;top:0;z-index:40}.luthor-editor-toolbar-slot{background-color:var(--luthor-toolbar-bg, var(--luthor-muted));transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-toolbar-slot--top{border-bottom:1px solid var(--luthor-border)}.luthor-editor-toolbar-slot--pinned{position:sticky;top:0;z-index:40;background-color:var(--luthor-toolbar-bg, var(--luthor-muted))}.luthor-editor-toolbar-slot--bottom{border-top:1px solid var(--luthor-border)}.luthor-mode-tabs{display:flex;border-bottom:1px solid var(--luthor-border);transition:border-color var(--luthor-theme-transition),background-color var(--luthor-theme-transition)}.luthor-mode-tab{padding:10px 20px;background:none;border:none;cursor:pointer;color:var(--luthor-muted-fg);font-size:14px;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);border-bottom:2px solid transparent;position:relative}.luthor-mode-tab:hover{color:var(--luthor-fg);background-color:var(--luthor-muted)}.luthor-mode-tab.active{color:var(--luthor-accent);border-bottom-color:var(--luthor-accent);background-color:#0f172a0d}.luthor-tab-converting-spinner{display:inline-block;width:12px;height:12px;margin-left:6px;border:2px solid var(--luthor-muted-fg);border-top-color:var(--luthor-accent);border-radius:50%;animation:luthor-spin .6s linear infinite;vertical-align:middle}@keyframes luthor-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.luthor-toolbar{display:flex;align-items:center;gap:4px;padding:8px;flex-wrap:wrap;overflow-x:hidden;overflow-y:visible;row-gap:6px;min-height:48px;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-toolbar--align-left{justify-content:flex-start}.luthor-toolbar--align-center{justify-content:center}.luthor-toolbar--align-right{justify-content:flex-end}.luthor-toolbar-section{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:0 4px;min-width:0}.luthor-toolbar-section:not(:last-child){border-right:1px solid var(--luthor-toolbar-section-border, var(--luthor-border));margin-right:8px;padding-right:8px;transition:border-color var(--luthor-theme-transition)}.luthor-toolbar-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid transparent;border-radius:6px;background-color:transparent;color:var(--luthor-toolbar-button-fg, var(--luthor-fg));cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden}.luthor-toolbar-button:before{content:"";position:absolute;inset:0;background:var(--luthor-toolbar-button-overlay);opacity:0;transition:opacity .2s ease}.luthor-toolbar-button:hover{background-color:var(--luthor-toolbar-button-hover-bg, var(--luthor-muted));border-color:var(--luthor-toolbar-button-hover-border, var(--luthor-border-hover));transform:translateY(-1px);box-shadow:var(--luthor-toolbar-button-hover-shadow)}.luthor-toolbar-button:hover:before{opacity:1}.luthor-toolbar-button:active{transform:translateY(0) scale(.98);box-shadow:var(--luthor-toolbar-button-press-shadow)}.luthor-toolbar-button.active{background-color:var(--luthor-toolbar-button-active-bg, var(--luthor-accent));border-color:var(--luthor-toolbar-button-active-border, var(--luthor-accent));color:var(--luthor-toolbar-button-active-fg, var(--luthor-bg));box-shadow:var(--luthor-toolbar-button-active-shadow)}.luthor-toolbar-button.active:before{background:var(--luthor-toolbar-button-active-overlay);opacity:1}.luthor-toolbar-button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.luthor-toolbar-button:disabled:hover{background-color:transparent;border-color:transparent;transform:none;box-shadow:none}.luthor-toolbar-button:disabled:before{opacity:0}.luthor-toolbar-split-button{display:inline-flex;align-items:center}.luthor-toolbar-split-button .luthor-dropdown{display:inline-flex}.luthor-toolbar-split-button .luthor-toolbar-button{border-radius:0}.luthor-toolbar-split-button>.luthor-toolbar-button:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.luthor-toolbar-split-button .luthor-toolbar-button-arrow{width:20px;border-left-color:transparent;border-top-right-radius:6px;border-bottom-right-radius:6px;padding:0}.luthor-dropdown-divider{height:1px;margin:4px 8px;background-color:var(--luthor-border)}.luthor-color-button{padding-bottom:4px}.luthor-color-button-letter{font-size:14px;line-height:1;font-weight:700;position:relative;z-index:1}.luthor-color-button-indicator{position:absolute;left:7px;right:7px;bottom:5px;height:6px;border-radius:999px;border:.5px solid var(--luthor-toolbar-color-indicator-border, var(--luthor-fg));box-shadow:none;z-index:1}.luthor-color-button.is-highlight .luthor-color-button-letter{padding:0 2px;border-radius:3px;background-color:var(--luthor-toolbar-highlight-bg, var(--luthor-muted))}.luthor-color-button-highlighter{position:relative;z-index:1}.luthor-color-picker{z-index:var(--luthor-z-popover, 440);background-color:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:10px;box-shadow:0 12px 28px #0f172a2e;padding:10px;display:grid;gap:9px;max-width:90vw;width:248px;color:var(--luthor-fg, #0f172a)}.luthor-color-picker-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.luthor-color-picker-title{font-size:12px;font-weight:600;color:var(--luthor-fg)}.luthor-color-picker-native-hidden{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.luthor-color-picker-clear{border:1px solid var(--luthor-border);border-radius:6px;background:var(--luthor-muted);color:var(--luthor-fg);font-size:12px;font-weight:500;padding:4px 8px;cursor:pointer}.luthor-color-picker-clear:hover{border-color:var(--luthor-border-hover)}.luthor-color-picker-section{display:grid;gap:6px}.luthor-color-picker-label{margin:0;font-size:11px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.03em}.luthor-color-swatch-grid,.luthor-color-swatch-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.luthor-color-swatch{width:100%;aspect-ratio:1;border:1px solid var(--luthor-border);border-radius:6px;background-clip:padding-box;cursor:pointer;transition:transform .15s ease,border-color .15s ease;box-shadow:inset 0 0 0 1px #0f172a14}.luthor-color-swatch:hover:enabled{border-color:var(--luthor-border-hover);transform:translateY(-1px)}.luthor-color-swatch:disabled{cursor:not-allowed;background-image:repeating-linear-gradient(45deg,transparent,transparent 4px,var(--luthor-muted) 4px,var(--luthor-muted) 8px);opacity:.7}.luthor-color-picker-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;padding-top:2px}.luthor-color-picker-custom{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--luthor-border);border-radius:6px;background:var(--luthor-muted);color:var(--luthor-fg);font-size:12px;font-weight:500;padding:4px 8px;cursor:pointer}.luthor-color-picker-custom:hover{border-color:var(--luthor-border-hover)}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-picker{box-shadow:0 14px 32px #0009}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-swatch{box-shadow:inset 0 0 0 1px #ffffff14}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-picker-clear,.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-color-picker-custom{background:#ffffff0a}.luthor-select{position:relative;display:inline-block}.luthor-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 12px;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);color:var(--luthor-fg);cursor:pointer;font-size:14px;min-width:120px;max-width:180px;height:36px;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 3px #0000001a}.luthor-select-trigger span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.luthor-select-trigger:hover{border-color:var(--luthor-border-hover);box-shadow:0 2px 8px #00000026}.luthor-select-trigger.open{border-color:var(--luthor-accent);box-shadow:0 0 0 3px #0f172a1a}.luthor-select-dropdown{position:fixed;z-index:var(--luthor-z-dropdown, 420);background-color:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:6px;box-shadow:0 8px 32px #0000001f;max-height:200px;overflow-y:auto}.luthor-select-option{display:block;width:100%;padding:10px 14px;border:none;background:none;color:var(--luthor-fg);cursor:pointer;font-size:14px;text-align:left;transition:all .15s ease}.luthor-select-option:hover{background-color:var(--luthor-muted)}.luthor-select-option.selected{background-color:var(--luthor-accent);color:var(--luthor-bg);font-weight:500}.luthor-dropdown{position:relative;display:inline-flex}.luthor-dropdown-content{position:fixed;z-index:var(--luthor-z-dropdown, 420);background-color:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:4px;box-shadow:0 4px 6px -1px var(--luthor-shadow);margin-top:2px;min-width:160px;padding:4px 0}.luthor-dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:none;background:none;color:var(--luthor-fg);cursor:pointer;font-size:14px;text-align:left;transition:background-color .15s}.luthor-dropdown-item:hover{background-color:var(--luthor-muted)}.luthor-checklist-variant-grid,.luthor-unordered-variant-grid,.luthor-ordered-variant-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px}.luthor-unordered-variant-option,.luthor-ordered-variant-option{display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease}.luthor-unordered-variant-option:hover,.luthor-ordered-variant-option:hover{border-color:var(--luthor-border-hover);background-color:var(--luthor-muted);transform:translateY(-1px)}.luthor-unordered-variant-option:focus-visible{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-accent) 24%,transparent)}.luthor-ordered-variant-option:focus-visible{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-accent) 24%,transparent)}.luthor-unordered-variant-svg,.luthor-ordered-variant-svg{display:block;width:94px;height:74px}.luthor-unordered-variant-frame,.luthor-ordered-variant-frame{fill:var(--luthor-bg);stroke:var(--luthor-border)}.luthor-unordered-variant-line,.luthor-ordered-variant-line{fill:color-mix(in srgb,var(--luthor-muted-fg) 32%,transparent)}.luthor-ordered-variant-label{fill:var(--luthor-list-marker-color, var(--luthor-fg));font-size:11px;font-weight:500;font-family:Inter,Segoe UI,Arial,sans-serif;letter-spacing:.01em}.luthor-unordered-variant-marker{fill:var(--luthor-list-marker-color, var(--luthor-fg))}.luthor-unordered-variant-marker-open{fill:none;stroke:var(--luthor-list-marker-color, var(--luthor-fg));stroke-width:1.3}.luthor-unordered-variant-arrow{fill:none;stroke:var(--luthor-list-marker-color, var(--luthor-fg));stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}.luthor-checklist-variant-option{display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease}.luthor-checklist-variant-option:hover{border-color:var(--luthor-border-hover);background-color:var(--luthor-muted);transform:translateY(-1px)}.luthor-checklist-variant-option:focus-visible{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-accent) 24%,transparent)}.luthor-checklist-variant-svg{display:block;width:78px;height:42px}.luthor-checklist-variant-frame{fill:var(--luthor-bg);stroke:var(--luthor-border)}.luthor-checklist-variant-box{fill:var(--luthor-bg);stroke:var(--luthor-list-checkbox-color, var(--luthor-accent));stroke-width:1.5}.luthor-checklist-variant-check{fill:none;stroke:var(--luthor-list-checkbox-color, var(--luthor-accent));stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.luthor-checklist-variant-line{fill:color-mix(in srgb,var(--luthor-muted-fg) 32%,transparent)}.luthor-checklist-variant-strike{stroke:var(--luthor-muted-fg);stroke-width:1.35;stroke-linecap:round}.luthor-file-input{display:none}.luthor-editor{flex:1;display:flex;flex-direction:column;min-height:400px;position:relative;--luthor-drag-gutter-width: 56px;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-visual-shell{display:grid;grid-template-columns:var(--luthor-drag-gutter-width) minmax(0,1fr);grid-template-rows:minmax(0,1fr);flex:1;min-height:0}.luthor-editor-visual-shell--no-gutter{grid-template-columns:minmax(0,1fr)}.luthor-editor-visual-shell.is-hidden{position:absolute;inset:0;visibility:hidden;pointer-events:none}.luthor-editor-visual-gutter{grid-column:1;grid-row:1;pointer-events:none;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor--draggable-disabled{--luthor-drag-gutter-width: 0px}.luthor-editor--draggable-disabled .luthor-editor-visual-gutter{display:none}.luthor-richtext-container{position:relative;flex:1;--luthor-editor-content-padding-y: 20px;--luthor-editor-content-padding-x: 20px;--luthor-first-block-offset: calc(8px * var(--luthor-line-height-ratio, 1));background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-editor-visual-shell .luthor-richtext-container{grid-column:2;grid-row:1;min-width:0}.luthor-editor-visual-shell--no-gutter .luthor-richtext-container{grid-column:1}.luthor-content-editable{flex:1;padding:var(--luthor-editor-content-padding-y) var(--luthor-editor-content-padding-x);outline:none;color:var(--luthor-fg);line-height:1;font-size:16px;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),color var(--luthor-theme-transition),border-color var(--luthor-theme-transition)}.luthor-content-editable:focus{outline:none;background-color:var(--luthor-bg)}.luthor-content-editable a,.luthor-content-editable a:hover,.luthor-content-editable a:focus-visible{cursor:pointer}.luthor-placeholder{color:var(--luthor-placeholder-color, var(--luthor-muted-fg));pointer-events:none;position:absolute;top:calc(var(--luthor-editor-content-padding-y) + var(--luthor-first-block-offset));left:var(--luthor-editor-content-padding-x);font-size:16px;line-height:var(--luthor-default-line-height, 1.5);z-index:1;transition:color var(--luthor-theme-transition),background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition)}.luthor-source-panel{padding:20px;flex:1;overflow-y:auto;background-color:var(--luthor-bg);transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-source-view{width:100%;min-height:280px;padding:12px;border:1px solid var(--luthor-border);font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,Consolas,Courier New,monospace;font-size:14px;line-height:1.6;background-color:var(--luthor-bg);color:var(--luthor-fg);border-radius:0;resize:vertical;overflow-x:auto;overflow-y:auto;white-space:pre;tab-size:2;transition:background-color var(--luthor-theme-transition),color var(--luthor-theme-transition),border-color var(--luthor-theme-transition)}.luthor-source-view--wrapped{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;overflow-x:hidden}.luthor-source-error{display:flex;gap:12px;padding:12px;margin-bottom:12px;background-color:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:6px;color:#dc2626;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),color var(--luthor-theme-transition)}.luthor-preset-extensive.luthor-editor-wrapper[data-editor-theme=dark] .luthor-source-error{background-color:#ef444426;border-color:#ef444466;color:#fca5a5}.luthor-source-error-icon{flex-shrink:0;font-size:18px;line-height:1}.luthor-source-error-message{flex:1}.luthor-source-error-message strong{display:block;margin-bottom:4px;font-weight:600}.luthor-source-error-message p{margin:4px 0;font-size:13px;line-height:1.4;white-space:pre-wrap;word-break:break-word}.luthor-source-error-message small{display:block;margin-top:6px;font-size:12px;opacity:.7}.luthor-command-palette-overlay{position:absolute;inset:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;padding:min(20vh,120px) 16px 16px;z-index:var(--luthor-z-overlay, 480);overscroll-behavior:contain}.luthor-command-palette{background:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:12px;box-shadow:0 12px 48px #0000001f;width:min(640px,100%);max-width:100%;max-height:min(560px,calc(100% - min(20vh,120px) - 16px));display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:contain}.luthor-command-palette-header{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--luthor-border);gap:12px}.luthor-command-palette-icon{color:var(--luthor-muted-fg);flex-shrink:0}.luthor-command-palette-input{flex:1;background:transparent;border:none;outline:none;font-size:16px;color:var(--luthor-fg);font-family:inherit}.luthor-command-palette-input::placeholder{color:var(--luthor-muted-fg)}.luthor-command-palette-kbd{background:var(--luthor-muted);border:1px solid var(--luthor-border);border-radius:4px;padding:2px 6px;font-size:11px;color:var(--luthor-muted-fg);font-family:monospace}.luthor-command-palette-list{flex:1;overflow-y:auto;padding:8px 0;overscroll-behavior:contain}.luthor-command-palette-group{margin-bottom:8px}.luthor-command-palette-group-title{padding:8px 20px 4px;font-size:11px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.5px}.luthor-command-palette-item{display:flex;align-items:center;padding:12px 20px;cursor:pointer;border:none;background:none;width:100%;text-align:left;transition:background-color .1s}.luthor-command-palette-item:hover,.luthor-command-palette-item.selected{background:var(--luthor-muted)}.luthor-command-palette-item-content{flex:1;min-width:0}.luthor-command-palette-item-title{font-size:14px;color:var(--luthor-fg);font-weight:500;margin-bottom:2px}.luthor-command-palette-item-description{font-size:12px;color:var(--luthor-muted-fg);line-height:1.4}.luthor-command-palette-item-shortcut{background:var(--luthor-muted);border:1px solid var(--luthor-border);border-radius:4px;padding:2px 6px;font-size:10px;color:var(--luthor-muted-fg);font-family:monospace;margin-left:12px;flex-shrink:0}.luthor-command-palette-footer{padding:12px 20px;border-top:1px solid var(--luthor-border);background:var(--luthor-muted)}.luthor-command-palette-hint{font-size:11px;color:var(--luthor-muted-fg);display:flex;align-items:center;gap:8px}.luthor-command-palette-hint kbd{background:var(--luthor-bg);border:1px solid var(--luthor-border);border-radius:3px;padding:1px 4px;font-size:10px;font-family:monospace}.luthor-command-palette-empty{padding:40px 20px;text-align:center;color:var(--luthor-muted-fg);font-size:14px}.luthor-slash-menu{position:fixed;z-index:var(--luthor-z-menu, 460);background:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:10px;box-shadow:0 12px 36px #00000024;width:min(420px,calc(100vw - 24px));max-height:min(55vh,420px);overflow:hidden;display:flex;flex-direction:column}.luthor-slash-menu-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--luthor-border);background:var(--luthor-muted)}.luthor-slash-menu-title{font-size:12px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.4px}.luthor-slash-menu-query{font-size:12px;font-family:monospace;color:var(--luthor-muted-fg);background:var(--luthor-bg);border:1px solid var(--luthor-border);padding:1px 6px;border-radius:4px}.luthor-slash-menu-list{overflow-y:auto;padding:8px 0}.luthor-slash-menu-group{margin-bottom:6px}.luthor-slash-menu-group-title{padding:6px 12px 4px;font-size:11px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.5px}.luthor-slash-menu-item{width:100%;display:flex;align-items:center;gap:12px;padding:10px 12px;border:none;background:none;text-align:left;cursor:pointer;color:var(--luthor-fg);transition:background-color .12s}.luthor-slash-menu-item:hover,.luthor-slash-menu-item.selected{background:var(--luthor-muted)}.luthor-slash-menu-item-content{min-width:0;display:flex;flex-direction:column;gap:2px;flex:1}.luthor-slash-menu-item-title{font-size:14px;font-weight:500;color:var(--luthor-fg)}.luthor-slash-menu-item-description{font-size:12px;line-height:1.35;color:var(--luthor-muted-fg)}.luthor-slash-menu-item-shortcut{background:var(--luthor-muted);border:1px solid var(--luthor-border);border-radius:4px;padding:2px 6px;font-size:10px;font-family:monospace;color:var(--luthor-muted-fg);flex-shrink:0}.luthor-slash-menu-empty{padding:20px 12px;font-size:13px;color:var(--luthor-muted-fg);text-align:center}.luthor-emoji-picker-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:8px;width:220px}.luthor-emoji-picker-item{display:inline-flex;align-items:center;justify-content:center;height:32px;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;font-size:18px;line-height:1}.luthor-emoji-picker-item:hover{background:var(--luthor-muted);border-color:var(--luthor-border)}.luthor-emoji-menu{position:fixed;z-index:var(--luthor-z-menu, 460);background:var(--luthor-bg, #ffffff);border:1px solid var(--luthor-border, #e2e8f0);border-radius:10px;box-shadow:0 12px 36px #00000024;width:min(320px,calc(100vw - 24px));max-height:min(45vh,320px);overflow:hidden;display:flex;flex-direction:column}.luthor-emoji-menu-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--luthor-border);background:var(--luthor-muted)}.luthor-emoji-menu-title{font-size:12px;font-weight:600;color:var(--luthor-muted-fg);text-transform:uppercase;letter-spacing:.4px}.luthor-emoji-menu-query{font-size:12px;font-family:monospace;color:var(--luthor-muted-fg);background:var(--luthor-bg);border:1px solid var(--luthor-border);padding:1px 6px;border-radius:4px}.luthor-emoji-menu-list{overflow-y:auto;padding:6px 0}.luthor-emoji-menu-item{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border:none;background:none;text-align:left;cursor:pointer;color:var(--luthor-fg);transition:background-color .12s}.luthor-emoji-menu-item:hover,.luthor-emoji-menu-item.selected{background:var(--luthor-muted)}.luthor-emoji-menu-item-symbol{font-size:20px;line-height:1;width:24px;text-align:center;flex-shrink:0}.luthor-emoji-menu-item-content{min-width:0;display:flex;flex-direction:column;gap:1px;flex:1}.luthor-emoji-menu-item-title{font-size:13px;font-weight:500;color:var(--luthor-fg)}.luthor-emoji-menu-item-shortcode{font-size:12px;line-height:1.25;color:var(--luthor-muted-fg);font-family:monospace}.luthor-emoji-menu-empty{padding:18px 12px;font-size:13px;color:var(--luthor-muted-fg);text-align:center}.luthor-dialog-overlay{position:absolute;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--luthor-z-modal, 500);overscroll-behavior:contain;padding:12px}.luthor-dialog{background-color:var(--luthor-bg);border-radius:10px;box-shadow:0 20px 30px var(--luthor-shadow);width:min(520px,calc(100% - 24px));min-width:min(360px,calc(100% - 24px));max-height:calc(100% - 24px);overflow:hidden}.luthor-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--luthor-border)}.luthor-dialog-title{margin:0;font-size:16px;font-weight:600;color:var(--luthor-fg)}.luthor-dialog-close{background:none;border:none;color:var(--luthor-muted-fg);cursor:pointer;padding:4px;border-radius:6px}.luthor-dialog-close:hover{background-color:var(--luthor-muted);color:var(--luthor-fg)}.luthor-dialog-content{padding:18px 20px}.luthor-table-dialog{display:flex;flex-direction:column;gap:14px}.luthor-form-group{display:flex;flex-direction:column;gap:6px}.luthor-form-group label{font-size:13px;font-weight:600;color:var(--luthor-fg)}.luthor-input{padding:8px 12px;border:1px solid var(--luthor-border);border-radius:6px;background-color:var(--luthor-bg);color:var(--luthor-fg);font-size:13px}.luthor-input:focus{outline:none;border-color:var(--luthor-accent);box-shadow:0 0 0 3px #3b82f61f}.luthor-checkbox-label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--luthor-fg)}.luthor-checkbox{width:16px;height:16px;accent-color:var(--luthor-accent)}.luthor-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.luthor-button-primary,.luthor-button-secondary{padding:8px 14px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid}.luthor-button-primary{background-color:var(--luthor-accent);border-color:var(--luthor-accent);color:var(--luthor-bg)}.luthor-button-primary:hover{background-color:var(--luthor-accent-hover);border-color:var(--luthor-accent-hover)}.luthor-button-secondary{background-color:transparent;border-color:var(--luthor-border);color:var(--luthor-fg)}.luthor-button-secondary:hover{background-color:var(--luthor-muted);border-color:var(--luthor-border-hover)}.luthor-text-bold{font-weight:700;color:var(--luthor-text-bold-color, var(--luthor-fg))}.luthor-text-italic{font-style:italic}.luthor-text-underline{text-decoration:underline}.luthor-text-strikethrough{text-decoration:line-through}.luthor-content-editable code:not(.luthor-code-block),.luthor-preset .luthor-content-editable code:not(.luthor-code-block),.luthor-preset-extensive .luthor-content-editable code:not(.luthor-code-block){background-color:color-mix(in srgb,var(--luthor-muted) 78%,var(--luthor-bg) 22%);color:var(--luthor-syntax-keyword, var(--luthor-muted-fg));padding:0 .24em;border:1px solid color-mix(in srgb,var(--luthor-border) 55%,transparent);border-radius:3px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace!important;font-size:1em!important}.luthor-content-editable code:not(.luthor-code-block) .luthor-text-code,.luthor-preset .luthor-content-editable code:not(.luthor-code-block) .luthor-text-code,.luthor-preset-extensive .luthor-content-editable code:not(.luthor-code-block) .luthor-text-code{background:transparent;border:0;padding:0;border-radius:0}.luthor-content-editable code:not(.luthor-code-block) *,.luthor-preset .luthor-content-editable code:not(.luthor-code-block) *,.luthor-preset-extensive .luthor-content-editable code:not(.luthor-code-block) *{color:inherit!important;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace!important;font-size:1em!important}.luthor-code-block{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background-color:var(--luthor-codeblock-bg, var(--luthor-muted));border:1px solid var(--luthor-border);color:var(--luthor-syntax-string, var(--luthor-muted-fg));border-radius:4px}.luthor-code-block{display:block;padding:12px;margin:12px 0;line-height:1.6;overflow-x:auto;max-width:min(100%,880px);width:100%;tab-size:2;white-space:pre;overflow-wrap:normal;word-break:normal}.luthor-code-block--interactive{position:relative;margin-top:40px;border-top-left-radius:0;border-top-right-radius:0;border-top:0}.luthor-codeblock-controls-layer{position:absolute;inset:0;pointer-events:none;z-index:25}.luthor-codeblock-controls{position:absolute;display:flex;align-items:center;justify-content:space-between;z-index:26;pointer-events:auto;margin:0;max-width:none;padding:8px 10px;border:1px solid var(--luthor-border);border-top-left-radius:8px;border-top-right-radius:8px;border-bottom:1px solid var(--luthor-border);background:var(--luthor-codeblock-bg, var(--luthor-muted))}.luthor-codeblock-controls-left,.luthor-codeblock-controls-right{display:inline-flex;align-items:center;gap:6px}.luthor-codeblock-language,.luthor-codeblock-copy{font-size:11px;line-height:1.2;height:24px;border-radius:6px;border:1px solid var(--luthor-border);background:var(--luthor-bg);color:var(--luthor-fg);padding:0 8px}.luthor-codeblock-language{min-width:88px;appearance:none}.luthor-codeblock-language option{background:var(--luthor-bg);color:var(--luthor-fg)}.luthor-codeblock-copy{cursor:pointer;font-weight:600;width:26px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;position:relative;background:var(--luthor-bg)}.luthor-codeblock-copy svg{width:14px;height:14px;fill:currentColor}.luthor-codeblock-copy:after{content:attr(data-tooltip);position:absolute;top:-28px;right:0;padding:2px 6px;font-size:10px;line-height:1.2;white-space:nowrap;border-radius:4px;border:1px solid var(--luthor-border);background:var(--luthor-bg);color:var(--luthor-fg);opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease}.luthor-codeblock-copy:hover:after,.luthor-codeblock-copy:focus-visible:after{opacity:1;transform:translateY(0)}.luthor-codeblock-copy:hover,.luthor-codeblock-language:hover,.luthor-codeblock-copy.is-copied{border-color:var(--luthor-border-hover);background:var(--luthor-codeblock-bg, var(--luthor-muted))}.luthor-codeblock-copy.is-copy-error{border-color:var(--luthor-syntax-variable);color:var(--luthor-syntax-variable)}.luthor-code-block[data-theme=plain]{--luthor-syntax-keyword: var(--luthor-muted-fg);--luthor-syntax-string: var(--luthor-muted-fg);--luthor-syntax-number: var(--luthor-muted-fg);--luthor-syntax-function: var(--luthor-muted-fg);--luthor-syntax-variable: var(--luthor-muted-fg)}.luthor-preset-extensive.luthor-editor-wrapper .hljs{color:var(--luthor-code-unhighlighted-fg, var(--luthor-fg))}:where(.luthor-code-comment),:where(.luthor-code-prolog),:where(.luthor-code-doctype),:where(.luthor-code-cdata),:where(.luthor-code-punctuation),:where(.luthor-code-operator),:where(.luthor-code-namespace),:where(.luthor-code-property),:where(.luthor-code-tag),:where(.luthor-code-constant),:where(.luthor-code-symbol),:where(.luthor-code-deleted),:where(.luthor-code-boolean),:where(.luthor-code-number),:where(.luthor-code-attr),:where(.luthor-code-selector),:where(.luthor-code-string),:where(.luthor-code-char),:where(.luthor-code-builtin),:where(.luthor-code-inserted),:where(.luthor-code-function),:where(.luthor-code-class),:where(.luthor-code-class-name),:where(.luthor-code-keyword),:where(.luthor-code-atrule),:where(.luthor-code-regex),:where(.luthor-code-variable),:where(.luthor-code-important){color:var(--luthor-syntax-string, var(--luthor-muted-fg));font-weight:inherit}.luthor-paragraph{margin:var(--luthor-first-block-offset) 0;line-height:var(--luthor-default-line-height, 1.5)}.luthor-heading-h1,.luthor-heading-h2,.luthor-heading-h3,.luthor-heading-h4,.luthor-heading-h5,.luthor-heading-h6{margin:calc(16px * var(--luthor-line-height-ratio, 1)) 0 calc(8px * var(--luthor-line-height-ratio, 1));line-height:var(--luthor-default-line-height, 1.5);font-weight:700}.luthor-heading-h1{font-size:28px}.luthor-heading-h2{font-size:24px}.luthor-heading-h3{font-size:20px}.luthor-heading-h4{font-size:18px}.luthor-heading-h5{font-size:16px}.luthor-heading-h6{font-size:14px}.luthor-list-ul,.luthor-list-ol{margin:10px 0 10px 24px}.luthor-list-li{margin:calc(4px * var(--luthor-line-height-ratio, 1)) 0;line-height:var(--luthor-default-line-height, 1.5)}.luthor-list-ul .luthor-list-li::marker,.luthor-list-ol .luthor-list-li::marker{color:var(--luthor-list-marker-color, var(--luthor-fg))}.luthor-list-ol[style*=--luthor-ordered-pattern]{list-style:none;padding-left:0}.luthor-list-ol:has(>.luthor-list-li[style*=--luthor-ordered-marker-content]){list-style:none;padding-left:0}.luthor-list-ol>.luthor-list-li[style*=--luthor-ordered-marker-content]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked){padding-left:0}.luthor-list-ol>.luthor-list-li[style*=--luthor-ordered-marker-content]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked)::marker{content:""}.luthor-list-ol>.luthor-list-li[style*=--luthor-ordered-marker-content]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked):before{content:var(--luthor-ordered-marker-content);display:inline-block;white-space:nowrap;min-width:2.4ch;margin-right:10px;text-align:right;line-height:inherit;vertical-align:baseline;font-variant-numeric:tabular-nums;font-size:14px;font-weight:500;color:var(--luthor-list-marker-color, var(--luthor-fg))}.luthor-list-ul[style*=--luthor-unordered-pattern]{list-style:none;padding-left:0}.luthor-list-ul:has(>.luthor-list-li[style*=--luthor-unordered-marker-kind]){list-style:none;padding-left:0}.luthor-list-li[style*=--luthor-unordered-marker-kind]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked){position:relative;padding-left:24px}.luthor-list-li[style*=--luthor-unordered-marker-kind]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked)::marker{content:""}.luthor-list-li[style*=--luthor-unordered-marker-kind]:not(.luthor-list-item-unchecked):not(.luthor-list-item-checked):before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:18px;height:18px;background-position:center;background-repeat:no-repeat;background-size:12px 12px;color:var(--luthor-list-marker-color, var(--luthor-fg));opacity:.95}.luthor-list-li[style*="--luthor-unordered-marker-kind: disc"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='2.7' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: circle"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='3.1' fill='none' stroke='currentColor' stroke-width='1.2'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: square"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Crect x='3.1' y='3.1' width='5.8' height='5.8' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: diamond"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 2.2 9.8 6 6 9.8 2.2 6Z' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-li[style*="--luthor-unordered-marker-kind: arrow"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 2.6v6.8L9 6 3 2.6Z' fill='currentColor'/%3E%3C/svg%3E")}.luthor-list-item-unchecked,.luthor-list-item-checked{position:relative;list-style:none;margin-left:0;padding-left:28px;min-height:22px;cursor:pointer}.luthor-list-item-unchecked::marker,.luthor-list-item-checked::marker{content:""}.luthor-list-item-unchecked:before,.luthor-list-item-checked:before{content:"";position:absolute;left:0;top:.1em;width:16px;height:16px;border-radius:4px;border:1.5px solid var(--luthor-list-checkbox-color, var(--luthor-accent));background-color:var(--luthor-bg);box-sizing:border-box;transition:all .15s ease}.luthor-list-item-unchecked:hover:before{border-color:var(--luthor-list-checkbox-color, var(--luthor-accent))}.luthor-list-item-unchecked:focus,.luthor-list-item-unchecked:focus-visible,.luthor-list-item-checked:focus,.luthor-list-item-checked:focus-visible{outline:none;box-shadow:none}.luthor-list-li:has(>.luthor-list-ul:first-child),.luthor-list-li:has(>.luthor-list-ol:first-child){list-style:none}.luthor-list-item-unchecked:has(>.luthor-list-ul:first-child),.luthor-list-item-unchecked:has(>.luthor-list-ol:first-child),.luthor-list-item-checked:has(>.luthor-list-ul:first-child),.luthor-list-item-checked:has(>.luthor-list-ol:first-child){padding-left:0;min-height:0}.luthor-list-item-unchecked:has(>.luthor-list-ul:first-child):before,.luthor-list-item-unchecked:has(>.luthor-list-ol:first-child):before,.luthor-list-item-checked:has(>.luthor-list-ul:first-child):before,.luthor-list-item-checked:has(>.luthor-list-ol:first-child):before{display:none}.luthor-list-item-checked:before{content:"\2713";display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;line-height:1;color:var(--luthor-bg);border-color:var(--luthor-list-checkbox-color, var(--luthor-accent));background-color:var(--luthor-list-checkbox-color, var(--luthor-accent))}.luthor-list-item-checked{text-decoration:var(--luthor-checklist-text-decoration, line-through);opacity:var(--luthor-checklist-opacity, .85)}.luthor-list-item-checked>ul,.luthor-list-item-checked>ol{text-decoration:none;opacity:1}.luthor-list-ul[style*="--luthor-checklist-variant: plain"] .luthor-list-item-checked,.luthor-list-ol[style*="--luthor-checklist-variant: plain"] .luthor-list-item-checked,.luthor-list-item-checked[style*="--luthor-checklist-variant: plain"],.luthor-list-item-checked:has([style*="--luthor-checklist-variant: plain"]){--luthor-checklist-text-decoration: none;--luthor-checklist-opacity: 1}.luthor-quote{border-left:4px solid var(--luthor-quote-border, var(--luthor-accent));background-color:var(--luthor-quote-bg, var(--luthor-muted));padding:10px 14px;margin:12px 0;color:var(--luthor-quote-fg, var(--luthor-fg));line-height:var(--luthor-default-line-height, 1.5)}.luthor-link{color:var(--luthor-link-color, var(--luthor-accent));text-decoration:underline}.luthor-link:hover{color:var(--luthor-accent-hover)}.luthor-hr{margin:16px 0;border:none;border-top:1px solid var(--luthor-hr-color, var(--luthor-border));height:1px}.luthor-preset-extensive .lexical-image{margin:1em 0;display:block;position:relative}.luthor-preset-extensive .lexical-image img{max-width:100%;height:auto;border-radius:6px;display:block}.luthor-preset-extensive .lexical-image.align-left{float:left;margin-right:1em;margin-bottom:1em}.luthor-preset-extensive .lexical-image.align-right{float:right;margin-left:1em;margin-bottom:1em}.luthor-preset-extensive .lexical-image.align-center{text-align:center;margin:1em auto}.luthor-preset-extensive .lexical-image.align-center img{margin:0 auto}.luthor-preset-extensive .lexical-image figcaption{margin-top:.5em;font-size:12px;color:var(--luthor-muted-fg);text-align:center;font-style:italic}.luthor-preset-extensive .lexical-image.selected{outline:none}.luthor-preset-extensive .resizer{position:absolute;width:8px;height:8px;background:var(--luthor-accent);border:1px solid white;border-radius:50%}.luthor-preset-extensive .resizer.ne{top:-4px;right:-4px;cursor:nesw-resize}.luthor-preset-extensive .resizer.nw{top:-4px;left:-4px;cursor:nwse-resize}.luthor-preset-extensive .resizer.se{bottom:-4px;right:-4px;cursor:nwse-resize}.luthor-preset-extensive .resizer.sw{bottom:-4px;left:-4px;cursor:nesw-resize}.luthor-table{border-collapse:collapse;width:100%;margin:16px 0;border:1px solid var(--luthor-table-border-color, var(--luthor-border))}.luthor-table-cell,.luthor-table-cell-header{border:1px solid var(--luthor-table-border-color, var(--luthor-border));padding:8px 12px;text-align:left;min-width:80px;background-color:var(--luthor-bg)}.luthor-table-cell-header{background-color:var(--luthor-table-header-bg, var(--luthor-muted));font-weight:600}.luthor-preset-extensive table[data-lexical-table-selection]{box-shadow:0 0 0 2px var(--luthor-accent)}.luthor-preset-extensive table td[data-lexical-table-cell-selection]{background-color:#3b82f61a}.luthor-table-bubble-menu{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid var(--luthor-border);border-radius:10px;background:var(--luthor-bg);box-shadow:0 8px 24px var(--luthor-shadow);pointer-events:auto;white-space:nowrap}.luthor-table-bubble-button{height:30px;min-width:30px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid var(--luthor-border);background:var(--luthor-muted);color:var(--luthor-fg);font-size:12px;font-weight:600;line-height:1;cursor:pointer;transition:all .16s ease}.luthor-table-bubble-button svg{display:block}.luthor-table-bubble-button-icon{width:30px;padding:0}.luthor-table-bubble-button:hover{border-color:var(--luthor-border-hover);background:color-mix(in srgb,var(--luthor-muted) 58%,var(--luthor-accent) 42%);color:var(--luthor-bg)}.luthor-table-bubble-button-active{background:var(--luthor-accent);border-color:var(--luthor-accent);color:var(--luthor-bg)}.luthor-table-bubble-button-danger:hover{background:#dc2626;border-color:#dc2626;color:#fff}.luthor-table-bubble-checkbox{display:inline-flex;align-items:center;gap:6px;padding:0 6px;height:28px;font-size:12px;font-weight:600;color:var(--luthor-fg);user-select:none}.luthor-table-bubble-checkbox input{margin:0;accent-color:var(--luthor-accent)}.luthor-context-menu{position:fixed;background:var(--luthor-bg);border:1px solid var(--luthor-border);border-radius:8px;box-shadow:0 10px 30px var(--luthor-shadow);z-index:var(--luthor-z-menu, 460);min-width:160px;padding:6px 0;font-size:13px}.luthor-context-menu-item{padding:8px 14px;cursor:pointer;user-select:none}.luthor-context-menu-item:hover{background-color:var(--luthor-muted)}.luthor-context-menu-item-disabled{opacity:.5;cursor:not-allowed}.luthor-floating-toolbar{--luthor-floating-bg: #ffffff;--luthor-floating-fg: #0f172a;--luthor-floating-border: #e2e8f0;--luthor-floating-shadow: rgba(0, 0, 0, .08);--luthor-floating-muted: #f8fafc;--luthor-floating-border-hover: #cbd5e1;--luthor-floating-border-active: #94a3b8;--luthor-floating-accent: #0f172a;--luthor-floating-accent-fg: #ffffff;display:flex;align-items:center;gap:4px;padding:6px;background-color:var(--luthor-floating-bg);color:var(--luthor-floating-fg);border:1px solid var(--luthor-floating-border);border-radius:8px;box-shadow:0 8px 24px var(--luthor-floating-shadow)}.luthor-floating-toolbar[data-theme=dark]{--luthor-floating-bg: #0a0a0a;--luthor-floating-fg: #ededed;--luthor-floating-border: #262626;--luthor-floating-shadow: rgba(0, 0, 0, .5);--luthor-floating-muted: #171717;--luthor-floating-border-hover: #404040;--luthor-floating-border-active: #525252;--luthor-floating-accent: #ededed;--luthor-floating-accent-fg: #0a0a0a}.luthor-floating-toolbar .luthor-toolbar-button{color:var(--luthor-floating-fg);border-color:transparent}.luthor-floating-toolbar .luthor-toolbar-button:hover{background-color:var(--luthor-floating-muted);border-color:var(--luthor-floating-border-hover)}.luthor-floating-toolbar .luthor-toolbar-button.active{background-color:var(--luthor-floating-accent);border-color:var(--luthor-floating-accent);color:var(--luthor-floating-accent-fg)}.luthor-floating-toolbar-separator{width:1px;height:18px;background-color:var(--luthor-floating-border);margin:0 4px}.luthor-floating-toolbar-input{height:30px;min-width:140px;max-width:220px;padding:4px 8px;font-size:12px;color:var(--luthor-floating-fg);background-color:var(--luthor-floating-bg);border:1px solid var(--luthor-floating-border);border-radius:6px;outline:none}.luthor-floating-toolbar-fields{display:flex;flex-direction:column;gap:6px}.luthor-floating-toolbar-field-row{display:flex;align-items:center;gap:6px}.luthor-floating-toolbar-action{height:30px;min-width:30px;width:auto;padding:0 10px;font-size:12px;font-weight:600;border-color:var(--luthor-floating-border);background:var(--luthor-floating-muted);color:var(--luthor-floating-fg);transform:none;box-shadow:none}.luthor-floating-toolbar .luthor-floating-toolbar-action:hover{border-color:var(--luthor-floating-border-hover);background:var(--luthor-floating-muted);color:var(--luthor-floating-fg);transform:none;box-shadow:none}.luthor-floating-toolbar .luthor-floating-toolbar-action-primary,.luthor-floating-toolbar .luthor-floating-toolbar-action-primary:hover{border-color:var(--luthor-floating-accent);background:var(--luthor-floating-accent);color:var(--luthor-floating-accent-fg)}.luthor-floating-toolbar-action-danger:hover{border-color:#dc2626;background:#dc2626;color:#fff}.luthor-floating-toolbar-input:focus{border-color:var(--luthor-floating-border-active);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-floating-accent) 18%,transparent)}.luthor-floating-toolbar-input.is-error{border-color:#dc2626}.luthor-link-hover-bubble{gap:6px;max-width:min(680px,calc(100vw - 20px));border-radius:10px;box-shadow:0 8px 24px var(--luthor-floating-shadow)}.luthor-link-hover-bubble-url{min-width:160px;max-width:360px;padding:0 4px;font-size:12px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.luthor-link-hover-bubble-button{height:30px;min-width:30px;padding:0 10px;width:auto;font-size:12px;font-weight:600;border-color:var(--luthor-floating-border);background:var(--luthor-floating-muted);transform:none;box-shadow:none}.luthor-link-hover-bubble .luthor-link-hover-bubble-button:hover{border-color:var(--luthor-floating-border-hover);background:var(--luthor-floating-muted);transform:none;box-shadow:none}.luthor-link-hover-bubble .luthor-link-hover-bubble-button-primary,.luthor-link-hover-bubble .luthor-link-hover-bubble-button-primary:hover{border-color:var(--luthor-floating-accent);background:var(--luthor-floating-accent);color:var(--luthor-floating-accent-fg)}.luthor-link-hover-bubble-button-danger:hover{border-color:#dc2626;background:#dc2626;color:#fff}.luthor-link-hover-bubble-input{height:28px;min-width:220px;max-width:360px;padding:4px 8px;font-size:12px;border:1px solid var(--luthor-floating-border);border-radius:6px;color:var(--luthor-floating-fg);background:var(--luthor-floating-bg);outline:none}.luthor-link-hover-bubble-input:focus{border-color:var(--luthor-floating-border-active);box-shadow:0 0 0 2px color-mix(in srgb,var(--luthor-floating-accent) 18%,transparent)}.luthor-link-hover-bubble-input.is-error{border-color:#dc2626}.luthor-media-embed-shell{position:relative;border:2px solid var(--luthor-border);border-radius:12px;overflow:hidden;background:var(--luthor-bg);transition:border-color var(--luthor-theme-transition),box-shadow var(--luthor-theme-transition),background-color var(--luthor-theme-transition)}.luthor-media-embed-shell:hover{border-color:var(--luthor-border-active)}.luthor-media-embed-shell.is-selected{border-color:var(--luthor-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--luthor-accent) 28%,transparent)}.luthor-media-embed-shell.is-resizing{user-select:none}.luthor-media-embed-controls{position:absolute;top:8px;right:8px;display:inline-flex;gap:4px;padding:4px;border:1px solid var(--luthor-border-hover);border-radius:8px;background:color-mix(in srgb,var(--luthor-bg) 92%,black 8%);z-index:2}.luthor-media-embed-control{border:1px solid var(--luthor-border);background:var(--luthor-muted);color:var(--luthor-fg);border-radius:6px;padding:2px 8px;font-size:11px;line-height:1.4;cursor:pointer}.luthor-media-embed-control:hover{border-color:var(--luthor-border-hover)}.luthor-media-embed-control.is-active{background:var(--luthor-accent);border-color:var(--luthor-accent);color:var(--luthor-bg)}.luthor-media-embed-resize-handle-width,.luthor-media-embed-resize-handle-height{position:absolute;border:1px solid var(--luthor-accent);background:color-mix(in srgb,var(--luthor-muted) 85%,var(--luthor-bg) 15%);border-radius:999px;z-index:2;opacity:.95;transition:background-color var(--luthor-theme-transition),border-color var(--luthor-theme-transition),transform .12s ease}.luthor-media-embed-resize-handle-width{top:50%;right:-7px;transform:translateY(-50%);width:14px;height:30px;cursor:ew-resize;border-radius:999px}.luthor-media-embed-resize-handle-height{left:50%;bottom:-7px;transform:translate(-50%);width:30px;height:14px;cursor:ns-resize;border-radius:999px}.luthor-media-embed-resize-handle-width:hover,.luthor-media-embed-resize-handle-height:hover{transform:translateY(-50%) scale(1.06)}.luthor-media-embed-resize-handle-height:hover{transform:translate(-50%) scale(1.06)}.luthor-media-embed-shell.is-resizing .luthor-media-embed-resize-handle-width,.luthor-media-embed-shell.is-resizing .luthor-media-embed-resize-handle-height{background:color-mix(in srgb,var(--luthor-accent) 28%,var(--luthor-bg) 72%);border:1px solid var(--luthor-accent)}.luthor-draggable-handle,.luthor-draggable-add-button{width:24px;height:24px;border-radius:0;border:none;background:transparent;color:var(--luthor-muted-fg);fill:currentColor;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .16s ease,transform .16s ease;outline:none}.luthor-draggable-add-button{width:20px;height:20px;font-size:14px;line-height:1;font-weight:500;padding:0}.luthor-draggable-handle svg{width:14px;height:14px;stroke:currentColor;fill:none}.luthor-draggable-handle:hover,.luthor-draggable-add-button:hover{color:var(--luthor-fg);transform:scale(1.04)}.luthor-draggable-handle:active,.luthor-draggable-add-button:active,.luthor-draggable-handle-active{background:transparent;color:var(--luthor-accent);transform:scale(.96)}.luthor-draggable-button-stack{display:flex;flex-direction:column;gap:6px;align-items:center;padding:0;border:none;background:transparent}.luthor-draggable-drop-indicator{height:3px;background:var(--luthor-accent);border-radius:999px}.luthor-draggable-block-dragging,.luthor-draggable-block-is-dragging{opacity:.6}.luthor-editor--draggable-disabled .luthor-draggable-button-stack,.luthor-editor--draggable-disabled .luthor-draggable-handle,.luthor-editor--draggable-disabled .luthor-draggable-add-button,.luthor-editor--draggable-disabled .luthor-draggable-drop-indicator{display:none!important}@media(max-width:768px){.luthor-preset-extensive.luthor-editor-wrapper{min-height:400px}.luthor-toolbar{padding:6px}.luthor-toolbar--align-right{justify-content:flex-start}.luthor-toolbar-button{width:32px;height:32px;font-size:14px}.luthor-toolbar-section{padding:0 2px}.luthor-toolbar-section:not(:last-child){margin-right:6px;padding-right:6px}.luthor-richtext-container{--luthor-editor-content-padding-y: 16px;--luthor-editor-content-padding-x: 16px}.luthor-content-editable{font-size:16px}.luthor-select-trigger{min-width:100px;font-size:13px}.luthor-mode-tab{padding:8px 12px;font-size:13px}}.luthor-extensive-feature-card{border:1px solid var(--luthor-border-active);border-radius:12px;padding:12px;margin:10px 0;background-color:var(--luthor-muted)}.luthor-extensive-feature-card.is-selected{box-shadow:0 0 0 2px var(--luthor-accent)}.luthor-extensive-feature-card__tag{display:inline-flex;align-items:center;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--luthor-accent);border:1px solid var(--luthor-border-active);background-color:var(--luthor-bg);border-radius:999px;padding:2px 8px;margin-bottom:8px}.luthor-extensive-feature-card__title{margin:0;font-size:14px;color:var(--luthor-fg);line-height:1.35}.luthor-extensive-feature-card__description{margin:6px 0 0;font-size:12px;line-height:1.45;color:var(--luthor-muted-fg)}.luthor-preset-compose{display:flex;flex-direction:column;gap:10px}.luthor-preset-compose .luthor-editor{min-height:220px}.luthor-preset-compose--compact .luthor-toolbar,.luthor-preset-compose__toolbar--compact{padding:4px;gap:2px}.luthor-preset-compose__toolbar--compact .luthor-toolbar-button{width:30px;height:30px}.luthor-preset-simple-editor{display:flex;flex-direction:column;gap:8px;width:100%;min-width:var(--luthor-simple-editor-min-width, 240px);max-width:var(--luthor-simple-editor-max-width, 100%)}.luthor-simple-editor-row{display:flex;align-items:flex-end;gap:8px;width:100%}.luthor-simple-editor-shell{position:relative;width:100%;min-width:var(--luthor-simple-editor-min-width, 240px);max-width:var(--luthor-simple-editor-max-width, 100%)}.luthor-preset-simple-editor .luthor-preset-extensive.luthor-editor-wrapper{min-height:var(--luthor-simple-editor-min-height, 56px);max-height:var(--luthor-simple-editor-max-height, 220px);height:var(--luthor-simple-editor-current-height, var(--luthor-simple-editor-min-height, 56px));min-width:var(--luthor-simple-editor-min-width, 240px);max-width:var(--luthor-simple-editor-max-width, 100%);border-radius:16px}.luthor-preset-simple-editor .luthor-editor-header{display:none}.luthor-preset-simple-editor .luthor-editor{min-height:0;height:100%}.luthor-preset-simple-editor .luthor-editor-visual-shell{min-height:0}.luthor-preset-simple-editor .luthor-richtext-container{min-height:0;overflow-y:auto;scrollbar-width:thin;--luthor-editor-content-padding-y: 12px;--luthor-editor-content-padding-x: 14px;--luthor-first-block-offset: 0px}.luthor-preset-simple-editor .luthor-content-editable{padding:var(--luthor-editor-content-padding-y) var(--luthor-editor-content-padding-x);min-height:100%;box-sizing:border-box;line-height:1.45}.luthor-preset-simple-editor--send-inside .luthor-content-editable{padding-right:84px;padding-bottom:48px}.luthor-preset-simple-editor .luthor-placeholder{top:var(--luthor-editor-content-padding-y);left:var(--luthor-editor-content-padding-x);line-height:1.45}.luthor-simple-editor-bottom-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px 10px;border-top:1px solid var(--luthor-border);background:var(--luthor-bg)}.luthor-simple-editor-action{border:1px solid var(--luthor-border);background:var(--luthor-muted);color:var(--luthor-fg);border-radius:10px;height:32px;padding:0 12px;cursor:pointer}.luthor-simple-editor-action-send{border-color:var(--luthor-accent);background:var(--luthor-accent);color:var(--luthor-bg)}.luthor-simple-editor-action-send--inside{position:absolute;right:10px;bottom:10px}.luthor-simple-editor-action-send--right{align-self:flex-end}@media(max-width:640px){.luthor-simple-editor-row{flex-wrap:wrap}.luthor-simple-editor-action-send--right{margin-left:auto}}.luthor-preset-md-editor{border:1px solid #d8dde6;border-radius:14px;background:#fdfefe;padding:10px}.luthor-preset-md-editor .luthor-editor{min-height:320px}.luthor-preset-html-editor{border:1px solid #d8dde6;border-radius:14px;background:#fff;padding:10px}.luthor-preset-html-editor .luthor-editor{min-height:320px}.luthor-preset-slash-editor{border:1px solid #d8dee8;border-radius:14px;background:#fff;padding:10px}.luthor-preset-slash-editor .luthor-editor{min-height:320px}.luthor-preset-headless-editor{border:1px solid #d9d9d9;border-radius:10px;background:#f5f5f5;padding:12px}.luthor-preset-headless-editor .luthor-editor{min-height:320px}.luthor-preset-headless-editor .luthor-editor-header{margin-bottom:10px}.luthor-preset-headless-editor__toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.luthor-preset-headless-editor__button{appearance:none;border:0;border-radius:9px;background:#e4e4e4;color:#333;font-size:14px;line-height:1;font-weight:600;padding:7px 11px;cursor:pointer;transition:background-color .12s ease,color .12s ease,opacity .12s ease}.luthor-preset-headless-editor__button:hover:not(:disabled){background:#d7d7d7}.luthor-preset-headless-editor__button.is-active{background:#6366f1;color:#fff}.luthor-preset-headless-editor__button:disabled{opacity:.45;cursor:not-allowed}.luthor-preset-headless-editor__visual-shell{background:#fff;border:1px solid #dfdfdf;border-radius:8px;min-height:250px}.luthor-preset-headless-editor__visual-shell.is-hidden{display:none}.luthor-preset-headless-editor__container{min-height:250px}.luthor-preset-headless-editor__content{font-size:15px;line-height:1.6;color:#111;padding:14px 16px}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export { h as BLOCK_HEADING_LEVELS, i as BlockFormat, j as CommandConfig, k as CommandGenerationOptions, l as DEFAULT_TOOLBAR_LAYOUT, E as EditorThemeOverrides, m as ExtensiveEditor, n as ExtensiveEditorMode, o as ExtensiveEditorProps, p as ExtensiveEditorRef, q as ExtensiveExtensionsConfig, F as FeatureFlag, r as FeatureFlagOverrides, s as FeatureFlags, I as ImageAlignment, t as InsertImageConfig, u as InsertTableConfig, K as KeyboardShortcut, Q as QuoteStyleVars, S as ShortcutBindingOverride, v as ShortcutConfig, w as SlashCommandVisibility, x as SlashCommandVisibilityFilters, y as SlashCommandVisibilitySelection, z as TRADITIONAL_TOOLBAR_LAYOUT, A as TextAlignment, G as ToolbarAlignment, H as ToolbarPosition, J as ToolbarSection, L as commandsToCommandPaletteItems, M as commandsToSlashCommandItems, N as createExtensiveExtensions, O as extensiveExtensions, P as generateCommands, R as registerKeyboardShortcuts } from './ExtensiveEditor-6OT-Dmr1.js';
|
|
1
|
+
import { C as CoreEditorCommands, b as CoreEditorActiveStates, c as CoreTheme, d as CoreEditorMode, e as CoreToolbarClassNames, f as ToolbarStyleVars, T as ToolbarLayout, g as ToolbarVisibility, B as BlockHeadingLevel, h as ToolbarItemType, D as DefaultSettings } from './index-BjlX1b8G.js';
|
|
2
|
+
export { i as BLOCK_HEADING_LEVELS, j as BlockFormat, k as CommandConfig, l as CommandGenerationOptions, m as DEFAULT_TOOLBAR_LAYOUT, n as EditorPreset, o as EditorThemeOverrides, p as ExtensiveEditor, q as ExtensiveEditorMode, E as ExtensiveEditorProps, a as ExtensiveEditorRef, r as ExtensiveExtensionsConfig, s as FeatureFlag, F as FeatureFlagOverrides, t as FeatureFlags, I as ImageAlignment, u as InsertImageConfig, v as InsertTableConfig, K as KeyboardShortcut, Q as QuoteStyleVars, S as ShortcutBindingOverride, w as ShortcutConfig, x as SlashCommandVisibility, y as SlashCommandVisibilityFilters, z as SlashCommandVisibilitySelection, A as TRADITIONAL_TOOLBAR_LAYOUT, G as TextAlignment, H as ToolbarAlignment, J as ToolbarPosition, L as ToolbarSection, M as commandsToCommandPaletteItems, N as commandsToSlashCommandItems, O as createExtensiveExtensions, P as extensiveExtensions, R as generateCommands, U as presetRegistry, V as registerKeyboardShortcuts } from './index-BjlX1b8G.js';
|
|
4
3
|
import { CommandPaletteItem, EmojiCatalogItem, SlashCommandItem, FloatingToolbarExtension, LexicalEditor, EditorConfig } from '@lyfie/luthor-headless';
|
|
5
4
|
import * as luthorHeadless from '@lyfie/luthor-headless';
|
|
6
5
|
export { luthorHeadless as headless };
|
|
@@ -9,12 +8,15 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
9
8
|
import * as react from 'react';
|
|
10
9
|
import { ForwardRefExoticComponent, SVGProps, RefAttributes, ReactNode } from 'react';
|
|
11
10
|
export { ComposeEditor, ComposeEditorProps, composePreset } from './presets/compose/index.js';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export {
|
|
11
|
+
import { S as StyleVarRecord, a as StyleVarValueRecord, F as FeatureFlagsLike, b as FeatureShortcutSpec, T as ToolbarFeatureMap, P as PresetModeCache } from './index-CtyjH6lX.js';
|
|
12
|
+
export { E as ExtensivePresetConfig, c as createExtensivePreset, e as extensivePreset } from './index-CtyjH6lX.js';
|
|
13
|
+
export { HTMLEditor, HTMLEditorMode, HTMLEditorProps, htmlEditorPreset } from './presets/html-editor/index.js';
|
|
15
14
|
export { HeadlessEditorPreset, HeadlessEditorPresetProps, headlessEditorPreset } from './presets/headless-editor/index.js';
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
15
|
+
export { L as LegacyRichEditor, a as LegacyRichEditorMode, b as LegacyRichEditorProps, c as LegacyRichSourceFormat } from './LegacyRichEditor-Hzt4pYS-.js';
|
|
16
|
+
export { MDEditor, MDEditorMode, MDEditorProps, mdEditorPreset } from './presets/md-editor/index.js';
|
|
17
|
+
export { SimpleEditor, SimpleEditorOutputFormat, SimpleEditorProps, SimpleEditorSendPayload, SimpleFormattingOptions, SimpleToolbarButton, simpleEditorPreset } from './presets/simple-editor/index.js';
|
|
18
|
+
export { SlashEditor, SlashEditorProps, slashEditorPreset } from './presets/slash-editor/index.js';
|
|
19
|
+
export { legacyRichPreset } from './presets/legacy-rich/index.js';
|
|
18
20
|
|
|
19
21
|
declare function CommandPalette({ isOpen, onClose, commands, }: {
|
|
20
22
|
isOpen: boolean;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {b as b$
|
|
1
|
+
import {b as b$1}from'./chunk-PAUOCZCW.js';export{a as SlashEditor,b as slashEditorPreset}from'./chunk-PAUOCZCW.js';import {b as b$5}from'./chunk-4DOFRI6R.js';export{a as ComposeEditor,b as composePreset}from'./chunk-4DOFRI6R.js';import {b}from'./chunk-YWKRMBRS.js';export{a as HeadlessEditorPreset,b as headlessEditorPreset}from'./chunk-YWKRMBRS.js';import {b as b$2}from'./chunk-7KHDV6HL.js';export{a as HTMLEditor,b as htmlEditorPreset}from'./chunk-7KHDV6HL.js';import {b as b$3}from'./chunk-MYQMH4OW.js';export{a as MDEditor,b as mdEditorPreset}from'./chunk-MYQMH4OW.js';import {g}from'./chunk-I7ETX4BN.js';export{f as LegacyRichEditor,g as legacyRichPreset}from'./chunk-I7ETX4BN.js';import {b as b$4}from'./chunk-QCGA72CH.js';export{a as SimpleEditor,b as simpleEditorPreset}from'./chunk-QCGA72CH.js';import {Fa}from'./chunk-LG5WRRFQ.js';export{w as AlignCenterIcon,x as AlignJustifyIcon,v as AlignLeftIcon,y as AlignRightIcon,a as BLOCK_HEADING_LEVELS,h as BoldIcon,Y as Button,S as ChevronDownIcon,T as CloseIcon,m as CodeBlockIcon,l as CodeIcon,G as CommandIcon,U as CommandPalette,b as DEFAULT_TOOLBAR_LAYOUT,$ as Dialog,_ as Dropdown,P as EmojiIcon,V as EmojiSuggestionMenu,Da as ExtensiveEditor,D as EyeIcon,C as FileCodeIcon,aa as FloatingToolbar,E as HighlighterIcon,X as IconButton,u as ImageIcon,K as IndentIcon,i as ItalicIcon,da as LinkHoverBubble,n as LinkIcon,q as ListCheckIcon,p as ListIcon,r as ListOrderedIcon,A as MinusIcon,ea as ModeTabs,N as MoonIcon,L as OutdentIcon,H as PaletteIcon,F as PencilIcon,J as QuoteIcon,t as RedoIcon,O as SearchIcon,Z as Select,W as SlashCommandMenu,fa as SourceView,k as StrikethroughIcon,Q as SubscriptIcon,M as SunIcon,R as SuperscriptIcon,c as TRADITIONAL_TOOLBAR_LAYOUT,B as TableIcon,na as Toolbar,I as TypeIcon,j as UnderlineIcon,s as UndoIcon,o as UnlinkIcon,z as UploadIcon,e as commandsToCommandPaletteItems,f as commandsToSlashCommandItems,ua as createDefaultSettingsStyleVarRecord,ra as createExtensiveExtensions,Ga as createExtensivePreset,ya as createFeatureGuardedCommands,ca as createFloatingToolbarExtension,za as createModeCache,ga as createPresetEditorConfig,sa as extensiveExtensions,Fa as extensivePreset,ma as filterToolbarLayout,ja as formatHTMLSource,ha as formatJSONSource,ia as formatMarkdownSource,d as generateCommands,Aa as invalidateModeCache,va as isEditableCommandTarget,Ba as isModeCached,wa as isShortcutMatch,ka as isToolbarItemSupported,la as isToolbarItemVisible,Ca as markModeCached,xa as mergeToolbarVisibilityWithFeatures,ta as normalizeStyleVarsKey,g as registerKeyboardShortcuts,ba as setFloatingToolbarContext}from'./chunk-LG5WRRFQ.js';import*as luthorHeadless from'@lyfie/luthor-headless';export{luthorHeadless as headless };export{CodeIntelligenceExtension,codeIntelligenceExtension}from'@lyfie/luthor-headless';var rt={extensive:Fa,compose:b$5,"simple-editor":b$4,"legacy-rich":g,"md-editor":b$3,"html-editor":b$2,"slash-editor":b$1,"headless-editor":b};export{rt as presetRegistry};
|
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { E as EditorPreset } from '../../index-BtdZVw3X.js';
|
|
2
|
+
import { E as ExtensiveEditorProps, F as FeatureFlagOverrides, a as ExtensiveEditorRef, n as EditorPreset } from '../../index-BjlX1b8G.js';
|
|
4
3
|
import '@lyfie/luthor-headless';
|
|
5
4
|
|
|
6
5
|
type ComposeEditorProps = Omit<ExtensiveEditorProps, "featureFlags"> & {
|
|
7
6
|
featureFlags?: FeatureFlagOverrides;
|
|
8
7
|
compactToolbar?: boolean;
|
|
9
|
-
showRecipients?: boolean;
|
|
10
|
-
showTo?: boolean;
|
|
11
|
-
showCc?: boolean;
|
|
12
|
-
showBcc?: boolean;
|
|
13
|
-
showSubject?: boolean;
|
|
14
8
|
};
|
|
15
9
|
declare const ComposeEditor: react.ForwardRefExoticComponent<Omit<ExtensiveEditorProps, "featureFlags"> & {
|
|
16
10
|
featureFlags?: FeatureFlagOverrides;
|
|
17
11
|
compactToolbar?: boolean;
|
|
18
|
-
showRecipients?: boolean;
|
|
19
|
-
showTo?: boolean;
|
|
20
|
-
showCc?: boolean;
|
|
21
|
-
showBcc?: boolean;
|
|
22
|
-
showSubject?: boolean;
|
|
23
12
|
} & react.RefAttributes<ExtensiveEditorRef>>;
|
|
24
13
|
|
|
25
14
|
declare const composePreset: EditorPreset;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{a as ComposeEditor,b as composePreset}from'../../chunk-
|
|
1
|
+
export{a as ComposeEditor,b as composePreset}from'../../chunk-4DOFRI6R.js';import'../../chunk-LG5WRRFQ.js';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export { E as ExtensivePresetConfig, b as FeatureShortcutSpec, T as ToolbarFeatureMap, c as createExtensivePreset, e as extensivePreset, d as extensiveToolbar } from '../../index-
|
|
2
|
-
export {
|
|
3
|
-
import '../../index-BtdZVw3X.js';
|
|
1
|
+
export { E as ExtensivePresetConfig, b as FeatureShortcutSpec, T as ToolbarFeatureMap, c as createExtensivePreset, e as extensivePreset, d as extensiveToolbar } from '../../index-CtyjH6lX.js';
|
|
2
|
+
export { W as DEFAULT_FEATURE_FLAGS, p as ExtensiveEditor, q as ExtensiveEditorMode, E as ExtensiveEditorProps, a as ExtensiveEditorRef, r as ExtensiveExtensionsConfig, s as FeatureFlag, F as FeatureFlagOverrides, t as FeatureFlags, O as createExtensiveExtensions, P as extensiveExtensions, X as isFeatureEnabled, Y as resolveFeatureFlags } from '../../index-BjlX1b8G.js';
|
|
4
3
|
import '@lyfie/luthor-headless';
|
|
5
4
|
import 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{oa as DEFAULT_FEATURE_FLAGS,Da as ExtensiveEditor,ra as createExtensiveExtensions,Ga as createExtensivePreset,sa as extensiveExtensions,Fa as extensivePreset,Ea as extensiveToolbar,qa as isFeatureEnabled,pa as resolveFeatureFlags}from'../../chunk-LG5WRRFQ.js';
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import { E as EditorPreset } from '../../index-
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { E as ExtensiveEditorProps, F as FeatureFlagOverrides, a as ExtensiveEditorRef, n as EditorPreset } from '../../index-BjlX1b8G.js';
|
|
3
3
|
import '@lyfie/luthor-headless';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
declare const HEADLESS_EDITOR_DEFAULT_MODES: readonly ["visual", "json", "markdown", "html"];
|
|
6
|
+
type HeadlessEditorPresetMode = (typeof HEADLESS_EDITOR_DEFAULT_MODES)[number];
|
|
7
|
+
type HeadlessEditorPresetProps = Omit<ExtensiveEditorProps, "featureFlags" | "availableModes" | "initialMode" | "defaultEditorView"> & {
|
|
8
|
+
initialMode?: HeadlessEditorPresetMode;
|
|
9
|
+
defaultEditorView?: HeadlessEditorPresetMode;
|
|
10
|
+
featureFlags?: FeatureFlagOverrides;
|
|
8
11
|
};
|
|
9
|
-
declare
|
|
12
|
+
declare const HeadlessEditorPreset: react.ForwardRefExoticComponent<Omit<ExtensiveEditorProps, "availableModes" | "featureFlags" | "initialMode" | "defaultEditorView"> & {
|
|
13
|
+
initialMode?: HeadlessEditorPresetMode;
|
|
14
|
+
defaultEditorView?: HeadlessEditorPresetMode;
|
|
15
|
+
featureFlags?: FeatureFlagOverrides;
|
|
16
|
+
} & react.RefAttributes<ExtensiveEditorRef>>;
|
|
10
17
|
|
|
11
18
|
declare const headlessEditorPreset: EditorPreset;
|
|
12
19
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{a as HeadlessEditorPreset,b as headlessEditorPreset}from'../../chunk-
|
|
1
|
+
export{a as HeadlessEditorPreset,b as headlessEditorPreset}from'../../chunk-YWKRMBRS.js';import'../../chunk-LG5WRRFQ.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { a as ExtensiveEditorRef, n as EditorPreset } from '../../index-BjlX1b8G.js';
|
|
3
|
+
import { b as LegacyRichEditorProps, a as LegacyRichEditorMode } from '../../LegacyRichEditor-Hzt4pYS-.js';
|
|
4
|
+
import '@lyfie/luthor-headless';
|
|
5
|
+
|
|
6
|
+
type HTMLEditorMode = Exclude<LegacyRichEditorMode, "markdown">;
|
|
7
|
+
type HTMLEditorProps = Omit<LegacyRichEditorProps, "sourceFormat" | "initialMode" | "defaultEditorView"> & {
|
|
8
|
+
initialMode?: HTMLEditorMode;
|
|
9
|
+
defaultEditorView?: HTMLEditorMode;
|
|
10
|
+
};
|
|
11
|
+
declare const HTMLEditor: react.ForwardRefExoticComponent<Omit<LegacyRichEditorProps, "initialMode" | "defaultEditorView" | "sourceFormat"> & {
|
|
12
|
+
initialMode?: HTMLEditorMode;
|
|
13
|
+
defaultEditorView?: HTMLEditorMode;
|
|
14
|
+
} & react.RefAttributes<ExtensiveEditorRef>>;
|
|
15
|
+
|
|
16
|
+
declare const htmlEditorPreset: EditorPreset;
|
|
17
|
+
|
|
18
|
+
export { HTMLEditor, type HTMLEditorMode, type HTMLEditorProps, htmlEditorPreset };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as HTMLEditor,b as htmlEditorPreset}from'../../chunk-7KHDV6HL.js';import'../../chunk-I7ETX4BN.js';import'../../chunk-LG5WRRFQ.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { d as LEGACY_RICH_DEFAULT_FEATURE_FLAGS, e as LEGACY_RICH_DUAL_SOURCE_MODES, f as LEGACY_RICH_HTML_MODES, g as LEGACY_RICH_MARKDOWN_MODES, h as LEGACY_RICH_TOOLBAR_LAYOUT, L as LegacyRichEditor, a as LegacyRichEditorMode, b as LegacyRichEditorProps, c as LegacyRichSourceFormat } from '../../LegacyRichEditor-Hzt4pYS-.js';
|
|
2
|
+
import { n as EditorPreset } from '../../index-BjlX1b8G.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import '@lyfie/luthor-headless';
|
|
5
|
+
|
|
6
|
+
declare const legacyRichPreset: EditorPreset;
|
|
7
|
+
|
|
8
|
+
export { legacyRichPreset };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{d as LEGACY_RICH_DEFAULT_FEATURE_FLAGS,c as LEGACY_RICH_DUAL_SOURCE_MODES,b as LEGACY_RICH_HTML_MODES,a as LEGACY_RICH_MARKDOWN_MODES,e as LEGACY_RICH_TOOLBAR_LAYOUT,f as LegacyRichEditor,g as legacyRichPreset}from'../../chunk-I7ETX4BN.js';import'../../chunk-LG5WRRFQ.js';
|